我有一个关于 OpenVPN 和 Linux NATing 的问题。
OpenVPN 服务器 (10.0.0.1) <--> (10.0.0.9) OpenVPN 客户端 (192.168.0.1) <--> (192.168.0.0/24) 内部 LAN
我在客户端上设置了一个基本的 iptables 规则,内容是/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
。这样,我就可以从服务器 ping 到内部 LAN。但是,当我查看服务器端的 tcpdump 时,我看到的是内部 LAN IP。出于分类原因,我需要查看 OpenVPN 服务器的 10.0.0.9 IP,这样我才能知道它去了哪里。有没有办法对返回流量进行另一次 NAT,这样当服务器看到 ping 响应时,它来自 10.0.0.9 IP,而不是 192.168.0.X IP?
感谢您的帮助。
编辑-我以为我可以做这样的事情但它似乎不起作用。
/sbin/iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source 10.0.0.9
答案1
请指定您要 ping 的地址和主机。
我假设您从 10.0.0.1 ping 192.160.0.2(或 192.160.0.0/24 中除 192.160.0.1 之外的任何其他主机),并且您希望响应来自 10.0.0.9。这是不正确的。IP 协议不以这种方式工作。:-)
答案2
如果你没有tun0
在客户端上配置静态IP,你必须使用MASQUERADE
:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o tun0 -j MASQUERADE
否则,您可以使用SNAT
:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o tun0 -j SNAT --to-source 10.0.0.9