![强制外部主机进行本地 DNS 解析](https://linux22.com/image/45803/%E5%BC%BA%E5%88%B6%E5%A4%96%E9%83%A8%E4%B8%BB%E6%9C%BA%E8%BF%9B%E8%A1%8C%E6%9C%AC%E5%9C%B0%20DNS%20%E8%A7%A3%E6%9E%90.png)
我的环境: *操作系统:* 埃斯特罗姆Linux
域名系统:绑定
当前情况:
- 用户连接到我的私人离线网络。
- 用户尝试访问 google.com,而我的盒子位于专用网络上,因此出现连接不可用错误。
所需场景示例:
- 用户连接到我的私人离线网络。
- 用户尝试在浏览器中访问 google.com 或任何其他外部主机,他们会被重定向到我的启动页面。
这个想法是,如果我的机器失去互联网连接,最终用户仍然可以访问 google.com 或任何其他外部网站并重定向到我的启动/门户页面。
任何关于如何实现这一目标的想法或反馈将不胜感激。
答案1
方法1#IPTABLES
xxxxx
+----------+ +----------+ xxxxxxxxx xxx xxxxx
| | | | xx xx
| | | Linux | xxx xx x
| | | Box | x x
| Clinet | ========> | As | ====> x WebServer portal page.
| | | GateWay | xx xxx
| | | | x x
| | | | xx xxx x xxxxx
+----------+ +----------+ xxxxxxxxxx xxx
在客户端计算机中使用网关,并在 Linux 框中添加以下规则并启用 Ipforwording
/sbin/iptables -t nat -A PREROUTING -s [source network/mask] -p tcp --dport 80 -j DNAT --to-destination [your webserver]
启用IP_转发:
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
然后申请
sysctl -p
正如德拉夫所说
您可以重定向端口 443,但请记住,这将导致浏览器发出有关无效证书的警告(无论您做什么,都会发生这种情况)
方法2#DNS
在named.conf中:
zone "." IN {
type master;
file "named.root";
};
在“named.root”中:
$ORIGIN .
$TTL 1D
@ IN SOA @ none. ( 0 1D 1H 1W 3H );
. IN NS @
@ IN A 10.0.0.1
* IN A 10.0.0.1
将 IP 地址 10.0.0.1 替换为您的 Web 服务器。
以上方法经过测试,有效。