强制外部主机进行本地 DNS 解析

强制外部主机进行本地 DNS 解析

我的环境: *操作系统:* 埃斯特罗姆Linux

域名系统:绑定

当前情况:

  1. 用户连接到我的私人离线网络。
  2. 用户尝试访问 google.com,而我的盒子位于专用网络上,因此出现连接不可用错误。

所需场景示例:

  1. 用户连接到我的私人离线网络。
  2. 用户尝试在浏览器中访问 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 服务器。

以上方法经过测试,有效。

相关内容