我有两台服务器:
服务器A:Public IP --> 104.x.x.x
服务器B:Public 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 上使用基于策略的路由。为此:
向文件中添加新的路由表
/etc/iproute2/rt_tables
:200 vpn
添加选择规则,以便
vpn
对来自私有网络的所有流量使用路由表:ip rule add from 10.0.0.0/8 table vpn
填充路由表
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