来自路由客户端的 OpenVPN 桥接网络

来自路由客户端的 OpenVPN 桥接网络

我有以下设置:

  • 子网 1-10.0.1.0/24使用一台作为 NAT 的机器,并运行 OpenVPN 客户端
  • 子网 2-192.168.1/24使用 OpenVPN 服务器(子网 1 中的服务器在此处连接)
  • 子网 3-10.0.2.0/24使用 NAT 机器(子网 1)访问互联网,因此所有非本地流量都会被路由到该eth0接口

OpenVPN 客户端创建tun0接口和适当的路由,以便我可以从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路由到eth0NAT 机器上子网 1并且它不能跳转到tun0

解决这个问题最简单的方法是什么?我不想使用 iptables。我无法从机器上更改路由子网 1因为它是在 AWS 中完成的,所以它只适用于特定接口。此外,NAT 机器通过 DHCP 获取其 IP,因此桥接有点复杂。

在 NAT 机器上设置了 IP 转发

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

谢谢你!

答案1

由于您无法更改子网 1 上的路由并且不想使用 iptables,因此一种方法是直接创建从子网 3 到子网 2 的 vpn 隧道。

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

当然,有了 iptables 和改变子网 1 上的路由的能力,修复就会更加灵活,如果您喜欢这方面的解决方案,请告诉我。

相关内容