我在同一个 Digital Ocean 数据中心有两台云服务器,并且启用了内部通信(它们可以互相 ping 通)。每台云服务器都安装了一个 OpenVPN 服务器。
我的问题是如何将数据从客户端 A 通过 VPN 服务器 A 穿过内部 IP 空间,再通过 VPN 服务器 B 传递到客户端 B,反之亦然?我在云服务器和客户端上都使用 Ubuntu Server 16.04。
我努力了:
1)向每个 VPN 服务器添加路由[1]
服务器 A
sudo route add -net 172.16.200.0 netmask 255.255.255.0 gw 10.132.52.131 eth1
服务器 B
sudo route add -net 172.16.100.0 netmask 255.255.255.0 gw 10.132.27.6 eth1
常量:
所有设备均启用 IP 转发
客户端 A 有一条规则,将 .200 子网中的所有数据包发送到 VPN 服务器 A:
sudo route add -net 172.16.200.0 netmask 255.255.255.0 gw 172.16.100.254
客户端 B 有一条规则,将 .100 子网中的所有数据包发送到 VPN 服务器 B:
sudo route add -net 172.16.100.0 netmask 255.255.255.0 gw 172.16.200.254
如果我执行 tcpdump,我可以看到客户端向其各自的 VPN 服务器发送 ping。但是,它似乎就此结束了。也就是说,另一端的 tcpdump 从未显示任何活动,除了 arp 响应。
答案1
由于您的专用网络的两个“10/8”地址位于不同的子网,因此几乎肯定还有其他设备也需要更改。
但您可以做的一件事是让其中一个或两个服务器互相成为客户端。因此,您无需尝试通过专用网络进行路由,而是可以完全在 OpenVPN 配置中进行所有路由。
因此,在您的服务器 1 上,您将拥有一个用于“服务器 2”客户端的 ccd,该客户端会将 172.16.100.253 之类的地址推送到 172.16.200.0/24 网络,并为该网络设置路由和 iroute。
基本上,这只是设置“服务器 1”,就好像它正在处理“服务器 2”客户端和网络的站点到站点连接。