SNAT不会改变源IP

时间:2015-07-08 06:25:09

标签: linux routing iptables

我正在尝试将内部虚拟网络(适配器tun0 ip:10.8.0.x - 我的vpn网络)添加到外部世界(适配器venet0:0 ip xxx.xxx.xxx.xxx)

我使用以下iptables规则:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0:0 -j SNAT --to xxx.xxx.xxx.xxx

由于某种原因,iptables没有更改出站IP地址:

tcpdump
08:23:17.863971 IP 10.8.0.6 > 8.8.8.8: ICMP echo request, id 3887, seq 1264, length 64

netstat-nat
Proto NATed Address                  Destination Address            State
udp   10.8.0.6:61339                 google-public-dns-a.goo:domain UNREPLIED

有什么想法吗?我做错了什么?

(ip_forward已激活!)

3 个答案:

答案 0 :(得分:0)

您需要在HARDWARE节点上配置NAT。 查看此文章https://openvz.org/Using_NAT_for_container_with_private_IPs

答案 1 :(得分:0)

非常仔细地检查iptables -t nat -nvL。也许在某处有一个隐藏的MASQUERADE

答案 2 :(得分:0)

仔细查看选择器,源(-s)和目标(-d)。在我的情况下,我的目标IP相差一个八位字节。我期望的是.5,而流量注定为.6。就像规则是SNAT ip xxx.xxx.5.xxx,数据包中的目的地是xxx.xxx.6.xxx