我有以下设置:
- 子网 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路由到eth0
NAT 机器上子网 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 上的路由的能力,修复就会更加灵活,如果您喜欢这方面的解决方案,请告诉我。