几个小时以来,我已经尝试在两个物理位置(位置A,192.168.1.0/24)和(位置B,192.168.2.0/24)之间build立虚拟专用networking。 我不得不使用隧道而不是桥接networking。 192.168.4.0/24是VPNnetworking。 这两个位置之间的连接工作正常,服务器有192.168.4.1和客户端192.168.4.6。 但现在我想要服务器访问客户端networking上的服务器,该地址是192.168.1.44。
如何使用路由和iptable条目来实现这个function(假设NAT正在使用)?
尝试这个。
在服务器上:
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/24networking的默认网关(如果您在目标服务器或其默认网关中添加此路由),则应该可以不使用iptables规则:
route add -net 192.168.2.0/24 gw <IP_of_client_on_this_network>
你也可以用192.168.1.44 (等)replacenet 192.168.1.0/24 (如果你只希望那个服务器可以访问),但是如果你的意思是过滤,你应该在服务器上添加一个单独的过滤规则和/或客户。
如果你已经过滤客户端(我的意思是如果你有FORWARD规则,请参阅iptables -nvL ),你必须在那里添加另一个规则:
iptables -I FORWARD -i tun+ -s 192.168.4.1 -d 192.168.1.44 -j ACCEPT
编辑:从POSTROUTING规则删除-i,这是一个错误。