编辑:在解释的过程中,我终于找出了我的逻辑错误。我用来路由的测试 IP 就是我连接的 IP。因此,在我更改路由时,我的连接就乱了。
这可能很简单,也可能非常复杂。我有两个 EC2 节点。它们都在我的完全控制之下。
我需要将所有流量从一个节点通过另一个节点路由到特定 IP,比如 31.1.1.1。基本上,这是一个典型的 VPN 设置,其中所有到 31.1.1.1 的流量都通过 VPN 而不是常规网关路由。就像这样。
Client Node --> Server Node --> 31.1.1.1
Client Node --> Default GW --> www.google.com
我想使用并为此设置 WireGuard;
服务器
[Interface]
PrivateKey = -------------------
ListenPort = 51820
Address = 10.20.40.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens5 -j MASQUERADE
[Peer]
PublicKey = -------------------
AllowedIPs = 10.20.40.0/24
客户端
[Interface]
PrivateKey = -------------------
ListenPort = 51820
Address = 10.20.40.2/24
[Peer]
PublicKey = -------------------
Endpoint = x.x.x.x:51820
AllowedIPs = 10.20.40.0/24
我在两台机器上都启动了 Wireguard wg-quick up wg0
,它们可以完美地互相 ping 通。一切似乎都正常。我在客户端机器上关闭 Wireguard 并编辑允许的 IP 位;AllowedIPs = 10.20.40.0/24, 31.1.1.1/32
,然后再次启动 Wireguard。这导致客户端机器上的所有网络连接立即中断。我无法通过 SSH 连接到它,无法使用 RDP 或任何其他网络连接。需要通过 EC2 控制台进行硬重启才能再次访问该机器。
我认为有问题的命令是ip -4 route add 31.1.1.1/32 dev wg0
因为我可以在客户端或服务器机器上发出该命令时重现网络中断。
这是 AWS EC2 的问题吗?我甚至可以更改这些系统上的路由吗?还是命令本身就是错误的?
编辑:根据要求,路由表和其他信息
前
Server
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default ip-172-31-16-1. 0.0.0.0 UG 100 0 0 ens5
172.31.16.0 0.0.0.0 255.255.240.0 U 0 0 0 ens5
ip-172-31-16-1. 0.0.0.0 255.255.255.255 UH 100 0 0 ens5
Client
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.16.1 0.0.0.0 UG 100 0 0 ens5
172.31.16.0 0.0.0.0 255.255.240.0 U 0 0 0 ens5
172.31.16.1 0.0.0.0 255.255.255.255 UH 100 0 0 ens5
后
Server
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.16.1 0.0.0.0 UG 100 0 0 ens5
10.20.40.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
172.31.16.0 0.0.0.0 255.255.240.0 U 0 0 0 ens5
172.31.16.1 0.0.0.0 255.255.255.255 UH 100 0 0 ens5
Client
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.16.1 0.0.0.0 UG 100 0 0 ens5
10.20.40.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
172.31.16.0 0.0.0.0 255.255.240.0 U 0 0 0 ens5
172.31.16.1 0.0.0.0 255.255.255.255 UH 100 0 0 ens5
我只隐藏了真实服务器 IP,如果这很麻烦,请告诉我。其他隐藏项目只是关键。执行路由ip route add 31.1.1.1/32 via 10.20.40.1
不会导致网络问题,但有些路由会导致网络问题,这些不会破坏它
ip route add 31.1.1.1/32 via 10.20.40.1
ip route add 8.8.8.8/32 via 10.20.40.1
这些确实打破了它
ip route add 31.21.203.46/32 via 10.20.40.1
ip route add 31.21.203.0/24 via 10.20.40.1