OpenVPN 和 Linux NATing

OpenVPN 和 Linux NATing

我有一个关于 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

相关内容