做Double NAT的一种可行方法

博客介绍了从两网段各抽出一台机器做NAT网关的情形,并说明了配置操作。在NAT BOX 1和NAT BOX 2的eth0建立三个别名,在NAT BOX 1的eth0做三个DNAT和一个SNAT,网段2配置类似。
当两个子网通过NAT网关相连,而且子网与子网又有ip重叠的话,你该怎么办呢?Double NAT可以解决这个问题,但记住这个方法是Hacker-Style的——怪异却工作的方法。
  • 看如下的情形:
Network 1
192.168.150.0 (Corporate)

--------------/-------------------------


Network 2
192.168.150.0 (Untrusted Network)
怎么连接这两个子网呢?注意到,他们的网段是重叠的。

  • 首先,从两网段各抽出一台机器做NAT网关,情形如下:
Network 1
192.168.150.0 (Corp)
|
Network 2 |
192.168.180.0 (Intermediate)
|
NAT BOX 1 |
eth0 192.168.180.180
eth1 10.15.15.1
|
NAT BOX 2 |
eth0 10.15.15.2
eth1 192.168.150.252
|
Newtwork 3 |
192.168.150.0 (Untrusted Network)
  • 现在开始配置。

在NAT BOX 1, 给eth0建立三个别名.

        ifconfig eth0:0 192.168.180.181 netmask 255.255.255.0
ifconfig eth0:1 192.168.180.182 netmask 255.255.255.0
ifconfig eth0:2 192.168.180.183 netmask 255.255.255.0

NAT BOX 2也是。

        ifconfig eth0:0 10.15.15.181 netmask 255.255.255.0
ifconfig eth0:1 10.15.15.182 netmask 255.255.255.0
ifconfig eth0:2 10.15.15.183 netmask 255.255.255.0
接下来给出iptables的,你一看应该就会明白了:

在NAT BOX 1給eth0做三个DNAT:

        iptables -t nat -A PREROUTING -d 192.168.180.181 -i eth0 /
-j DNAT --to-destination 10.15.15.181
iptables -t nat -A PREROUTING -d 192.168.181.182 -i eth0 /
-j DNAT --to-destination 10.15.15.182
iptables -t nat -A PREROUTING -d 192.168.181.183 -i eth0 /
-j DNAT --to-destination 10.15.15.183

还有一个SNAT:

        iptables -A POSTROUTING -s 192.168.150.0/255.255.255.0 /
-d 10.15.15.0/255.255.255.0 -j SNAT -o eth1 /
--to-source 10.15.15.1

网段2也类似

        iptables -t nat -A PREROUTING -d 10.15.15.181 -i eth0 /
-j DNAT --to-destination 192.168.150.10
iptables -t nat -A PREROUTING -d 10.15.15.182 -i eth0 /
-j DNAT --to-destination 192.168.150.11
iptables -t nat -A PREROUTING -d 10.15.15.183 -i eth0 /
-j DNAT --to-destination 192.168.150.12

        iptables -A POSTROUTING -s 10.15.15.0/24 /
-d 192.168.150.0/24 -j SNAT -o eth1 /
--to-source 192.168.150.252

好了,现在目的是达到了,但缺点很明显的——维护起来太麻烦了。呵呵,我说过的这是Haker-Style的解决办法。
NAT嵌套(Double NAT)是指在一个网络中存在**两层或更多层的NAT(网络地址转换)设备**,也就是说,一个设备连接的网络中,**网关本身也是另一个NAT设备的客户端**。 --- ## 🧠 通俗理解 Double NAT 想象你住在一栋楼里,每家每户都有一个门牌号(局域网IP),楼栋有一个总门禁(第一层路由器),而这个楼栋又在小区里,小区门口还有一个保安亭(第二层路由器)。你从家里往外寄信(发网络请求),要经过两个门禁。 - 第一层NAT(楼栋门禁):把你的家门牌号转换成楼栋的地址; - 第二层NAT(小区保安):再把楼栋地址转换成小区的地址; - 外人看到的是小区地址,而不是你家地址。 --- ## 📌 Double NAT 的结构示意图 ``` [设备1] ↓ [第一层路由器] ← 你家的路由器(局域网:192.168.1.0/24) ↓ [第二层路由器] ← 小区网关、光猫、上级路由(局域网:192.168.0.0/24) ↓ [公网] ``` 设备1连接的是第一层路由器,而第一层路由器本身又连接在第二层路由器的局域网中。这就是典型的 **Double NAT 结构**。 --- ## 🔍 Double NAT 的常见场景 | 场景 | 说明 | |------|------| | 使用光猫 + 路由器 | 光猫第一层NAT,你自己的路由器第二层 | | 连接他人路由器的Wi-Fi | 你设备连接别人家的Wi-Fi,别人家的路由器是第一层NAT | | 公司/校园网 | 内部网络经过多层NAT后才出公网 | | 酒店、公寓、宿舍网络 | 管理方统一出口,内部为私网 | --- ## ⚠️ Double NAT 的问题 | 问题 | 描述 | |------|------| | 端口映射失效 | UPnP或手动端口转发在第二层路由器上设置后,第一层仍需映射 | | 无法访问公网IP | 内部设备尝试访问自己的公网IP会失败(NAT Loopback未启用) | | 穿透困难 | P2P、远程桌面、游戏联机等依赖公网IP的服务难以建立连接 | | 网络延迟增加 | 多层NAT会带来轻微性能损耗 | --- ## ✅ 如何判断自己是否处于 Double NAT? | 方法 | 操作 | |------|------| | 查看网关IP | `ipconfig`(Windows)或 `ip route get 8.8.8.8`(Linux)查看默认网关是否是私网地址(如192.168.0.1) | | 查看公网IP | 在路由器和设备上分别访问 [https://ip.cn](https://ip.cn) 查看是否一致 | | 检查路由器状态 | 如果路由器显示“WAN口IP”是私网IP,则说明它处于另一个NAT后面 | --- ## 🛠️ 如何解决 Double NAT? | 方法 | 说明 | |------|------| | 将上级路由器改为桥接模式 | 关闭其NAT功能,仅中继 | | 启用 Hairpin NAT | 允许内网访问公网映射的IP | | 使用中继服务 | 如 frp、ngrok、ZeroTier 等穿透工具 | | 更换网络环境 | 如使用手机热点,避开嵌套结构 | --- ## ✅ 总结一句话: > **Double NAT 就是“你的路由器自己也连在另一个路由器的局域网中”,导致网络请求要经过两层地址转换,从而引发端口映射失效、通信失败等问题。** ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值