ip.route iptable 不进行 nat

ip.route iptable 不进行 nat
|--------------|          |--------------|          |--------------|
|  computer A  |      eth0|  computer B  |          |  computer C  |internet
|  (10.5.0.2)  |----------|  (10.5.0.1)  |          |  (x.x.x.x)   |--------
|              |          |              |          |         ^    |
|              |          |     NAT |    |          |    NAT  |    |
|              |          |         ˇ    | tun0     |              |
|              |          |  (10.8.0.14) |----------|  (10.8.0.1)  |
|--------------|          |--------------|          |--------------|

这是我构建的网络示意图。
我的问题是当我尝试在 B 计算机中配置 NAT 时
“bash root@computerB#cat /proc/sys/net/ipv4/ip_forward 1

root@computerB# iptables-save 
*nat
:PREROUTING ACCEPT [13:1108]
:INPUT ACCEPT [10:600]
:OUTPUT ACCEPT [6708:457650]
:POSTROUTING ACCEPT [5782:389727]
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Sat Apr 27 23:56:29 2019
# Generated by iptables-save v1.6.0 on Sat Apr 27 23:56:29 2019
*filter
:INPUT ACCEPT [1235765:1640284761]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [759264:248481682]
-A FORWARD -i eth0 -j ACCEPT
COMMIT
# Completed on Sat Apr 27 23:56:29 2019
  • 当我从计算机 A ping 10.5.0.1 时,一切正常
  • 当我从计算机 A ping 10.8.0.14 时,它成功了
  • 当我想要从计算机 A ping 10.8.0.1 时,它不工作,
    所以我用我的朋友 wireshark 开始在 tun0 上监听,我可以看到类似的数据包

    编号时间mac源目标协议长度信息285 106.310258 N/A 10.5.0.2 10.8.0.1 ICMP 84 Echo(ping)请求id=0x8114,seq=0/0,ttl=63(未找到响应!)

我不明白为什么我在接口 tun0 上获得 ip 10.5.0.2

答案1

正如评论中所述,您不应该在这里进行 NAT。您应该只使用常规 IP 路由。

但是,要解决 NAT 问题,请更改

-A POSTROUTING -o wlan0 -j MASQUERADE

-A POSTROUTING -o tun0 -j MASQUERADE

在您的 IPTables 规则中。

相关内容