我正在尝试建立一个 OpenVPN“链”,类似于这里描述的内容。 我有两个独立的网络,A 和 B。每个网络都有一个 OpenVPN 服务器,使用标准的“公路战士”或“客户端/服务器”方法。客户端可以连接到任何一个以访问相应网络上的主机/服务。
但服务器A和B也被连接到彼此。每个网络上的服务器在两者之间具有“站点到站点”连接。
我想要实现的是能够作为客户端连接到网络 A,然后与网络 B 上的主机建立连接。我正在对所有 VPN 连接使用 tun/routing。“链”看起来像这样:
[客户端] ---> [服务器 A] ---> [服务器 A] ---> [服务器 B] ---> [服务器 B] ---> [主机 B]
(tun0) (tun0) (tun1) (tun0) (eth0) (eth0)
整个想法是,当来自 tun0 的客户端尝试连接时,服务器 A 应该通过在 tun1 上设置的“站点到站点”VPN 路由发往网络 B 的流量。
我只是通过在服务器 A 上设置两个连接配置文件来做到这一点。一个配置文件是在 tun0 上运行的标准服务器配置,定义虚拟客户端网络、IP 地址池、推送路由等。另一个是到服务器 B 运行的客户端连接在 tun1 上。启用 ip_forwarding 后,我只需向客户端添加一个“推送路由”,向网络 B 通告路由。
在服务器 A 上,当我查看 tcpdump 输出时,这似乎有效。如果我作为客户端连接,然后 ping 网络 B 上的主机,我可以看到流量从服务器 A 上的 tun0 …