Изменить: объясняя, я наконец понял ошибку в моей логике. Тестовый 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
на обеих машинах, и они отлично пингуют друг друга. Вроде все работает. Я отключаю 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
поскольку, когда я выдаю это на клиентской или серверной машине, я воспроизводю сбой netwerk.
Это проблема с 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