将 VPN 流量转发到另一台服务器

将 VPN 流量转发到另一台服务器

我有两台服务器:
服务器APublic IP --> 104.x.x.x
服务器BPublic IP --> 188.x.x.x


服务器A有2个VPN服务器:
Openvpn --> tun0
Wireguard --> wg0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.0.1  netmask 255.255.255.0  destination 10.8.0.1
        inet6 fe80::ae7d:f7ab:615b:a78a  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 304 (304.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet 10.9.0.1  netmask 255.255.255.0  destination 10.9.0.1
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 22563  bytes 14268224 (14.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20017  bytes 15166196 (15.1 MB)
        TX errors 0  dropped 6 overruns 0  carrier 0  collisions 0



我希望如果有任何客户端连接到开放VPN或者电线保护,而不是连接到互联网服务器A, 使用服务器B网络连接


Clients (Openvpn or wireguard) --> Server A --> Server B --> Connect to internet


我怎样才能实现这一点?(使用 ssh 或其他方式将流量从服务器 A 转发到服务器 B)

谢谢你,
此致

答案1

首先,您需要在服务器 A 和 B 之间建立 VPN 连接,假设服务器 B 将获得10.10.0.1地址,服务器 A10.10.0.2和服务器 A 上的虚拟接口将被称为tun1。您可以使用任何您觉得更舒服的技术。

然后,正如大卫戈,您需要在服务器 A 上使用基于策略的路由。为此:

  1. 向文件中添加新的路由表/etc/iproute2/rt_tables

    200 vpn
    
  2. 添加选择规则,以便vpn对来自私有网络的所有流量使用路由表:

    ip rule add from 10.0.0.0/8 table vpn
    
  3. 填充路由表

    ip route add 10.8.0.0/16 dev tun0 src 10.8.0.1 table vpn
    ip route add 10.9.0.0/16 dev wg0 src 10.9.0.1 table vpn
    ip route add 10.10.0.0/16 dev tun1 src 10.10.0.2 table vpn
    ip route add default via 10.10.0.1 dev tun1 table vpn
    

相关内容