如何在没有 NAT 的情况下进行站点到站点的 OpenVPN 路由

如何在没有 NAT 的情况下进行站点到站点的 OpenVPN 路由

我在不同位置有两个 OpenVPN 服务器。
一个位置的每台机器都可以 ping 并连接到另一个位置的每台机器。

A我的问题是,当我使用 SSH 从位置中的机器连接到位置中的1机器并检查机器时,我看到连接来自位置OpenVPN IP(10.0.0.2)。B2Bauth.log2

是我的 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.logAB

感谢您的帮助!

答案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

相关内容