为什么“ip -4 route add 31.1.1.1/32 dev wg0”会破坏 EC2 与 WireGuard 的网络

为什么“ip -4 route add 31.1.1.1/32 dev wg0”会破坏 EC2 与 WireGuard 的网络

编辑:在解释的过程中,我终于找出了我的逻辑错误。我用来路由的测试 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

相关内容