OpenVPN桥接networking从路由客户端

我有以下设置:

  • 子网110.0.1.0/24与一台机器用作NAT,也运行一个OpenVPN客户端
  • 子网2192.168.1/24与OpenVPN服务器(子网1中的服务器在这里连接)
  • 子网310.0.2.0/24使用NAT机器(子网1)访问互联网,因此所有非本地stream量都被路由到eth0接口

OpenVPN客户端创buildtun0接口和相应的路由,以便我可以访问来自192.168.1/24机器

 [root@ip-10-0-1-208 ~]# telnet 192.168.1.186 8081 Trying 192.168.1.186... Connected to 192.168.1.186. Escape character is '^]'. [root@ip-10-0-1-208 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.1.1 0.0.0.0 UG 0 0 0 eth0 10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0 10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 192.168.0.0 10.8.0.5 255.255.0.0 UG 0 0 0 tun0 

但是,当我尝试从子网3相同,它无法到达该机器。

 [root@ip-10-0-2-61 ~]# telnet 192.168.1.186 8081 Trying 192.168.1.186... 

我怀疑这是因为子网3被路由到在子网1中的NAT机器上的eth0 ,并且它不能跳转到tun0

什么是解决它的最简单的方法? 我不想使用iptables。 我不能从子网1中的机器更改路由,因为它是在AWS中完成的,因此它只能与特定接口一起使用。 此外,NAT机器使用DHCP获取IP,因此桥接有点复杂。

IP转发在NAT机器上设置

 [root@ip-10-0-1-208 ~]# cat /proc/sys/net/ipv4/ip_forward 1 

谢谢!

由于您不能更改子网1上的路由而不想使用iptables,因此一种方法是直接从子网3创build到子网2的VPN通道。

如果您的子网3和子网2的网关是Linux服务器,我也会使用openvpn。 如果是防火墙设备,则使用防火墙软件创build一个VPN隧道,与子网2的防火墙通信。

当然,使用iptables和在子网1上更改路由的能力,修复更加灵活,让我知道如果您喜欢这方面的解决scheme。