我在不同位置有两个 OpenVPN 服务器。
一个位置的每台机器都可以 ping 并连接到另一个位置的每台机器。
A
我的问题是,当我使用 SSH 从位置中的机器连接到位置中的1
机器并检查机器时,我看到连接来自位置OpenVPN IP(10.0.0.2)。B
2
B
auth.log
2
这是我的 OpenVPN 设置和网络结构。
防火墙规则:
机器 A
iptables -t filter -A FORWARD -i tun0 -o eth1 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source 10.0.0.1
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
机器 B
iptables -t filter -A FORWARD -i tun0 -o eth1 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source 10.0.0.2
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
两个 OpenVPN 服务器都有两个物理接口;eth0-external 和 eth1-LAN,以及 OpenVPN tun0。
我认为我的问题是我使用了 NAT,但我不知道如何正确路由。我需要真正的源机器 IP。
因此,在上述情况下,我希望在连接到时A
在机器 中B
看到机器的 LAN IP(10.3.0.100) 。auth.log
A
B
感谢您的帮助!
答案1
我解决了我的问题,现在它对我有用了。我将两台机器的 iptables 规则更改为:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE
iptables -t filter -A FORWARD -i tun0 -o eth1 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o tun0 -j ACCEPT