![OpenVPN 网络共享](https://linux22.com/image/547979/OpenVPN%20%E7%BD%91%E7%BB%9C%E5%85%B1%E4%BA%AB.png)
几个小时以来,我一直在尝试在两个物理位置(位置 A,192.168.1.0/24)和(位置 B,192.168.2.0/24)之间设置虚拟专用网络。我被迫使用隧道而不是桥接网络。192.168.4.0/24 是 VPN 网络。两个位置之间的连接工作正常,服务器有 192.168.4.1,客户端有 192.168.4.6。但现在我想让服务器访问客户端网络上的服务器,该服务器的地址是 192.168.1.44。
我如何通过路由和 iptable 条目(大概是 NAT 后路由?)实现这一点?
答案1
尝试这个。
在服务器上:
route add -net 192.168.1.0/24 gw 192.168.4.6
在客户端上:
iptables -t nat -I POSTROUTING -s 192.168.4.1 -t 192.168.1.44 -j SNAT --to 192.168.4.1
仅此一点就应该有效。但是,如果你想考虑其他选择,请继续阅读。
如果客户端恰好是 192.168.1.0/24 网络的默认网关,或者您在目标服务器或其默认网关中添加此路由,则您应该能够在没有 iptables 规则的情况下完成此操作:
route add -net 192.168.2.0/24 gw <IP_of_client_on_this_network>
如果您只希望该服务器可访问,您也可以用(等等)替换net 192.168.1.0/24
-192.168.1.44
但如果您想要进行过滤,您可能应该在服务器和/或客户端上添加单独的过滤规则。
如果您已经在客户端进行过滤(我的意思是如果您有 FORWARD 规则,请参阅iptables -nvL
),那么您必须在那里添加另一条规则:
iptables -I FORWARD -i tun+ -s 192.168.4.1 -d 192.168.1.44 -j ACCEPT
编辑:从 POSTROUTING 规则中删除 -i,这是一个错误。