Вопрос или проблема
С помощью проекта https://github.com/angristan/wireguard-install я настроил сервер. В результате был создан следующий конфигурационный файл сервера по адресу /etc/wireguard/wg0.conf
:
[Интерфейс]
Адрес = 10.66.66.1/24,fd42:42:42::1/64
ПрослушиваемыйПорт = 51202
ПриватныйКлюч = ***************
PostUp = iptables -A FORWARD -i ens3 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i ens3 -o wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
### Клиент chris
[Сотовый]
ПубличныйКлюч = ***************
ПредварительныйКлюч = ****************
РазрешенныеIP = 10.66.66.2/32,fd42:42:42::2/128,209.250.230.114/32
И следующий файл клиента:
[Интерфейс]
ПриватныйКлюч = ******************
Адрес = 10.66.66.2/32,fd42:42:42::2/128
DNS = 94.140.14.14,94.140.15.15
[Сотовый]
ПубличныйКлюч = 8ZF6U0mHKvMtVw2A4jha4mZR+a0GP5W85unV05zJIyw=
ПредварительныйКлюч = **************************
Точка входа = 192.248.162.216:51202
РазрешенныеIP = 0.0.0.0/0,::/0
Это файл, который у меня имеется на клиенте. Запуск wg-quick up server
на клиенте в результате дает:
root@vultr:~# wg-quick up server
[#] ip link add server type wireguard
[#] wg setconf server /dev/fd/63
[#] ip -4 address add 10.66.66.2/32 dev server
[#] ip -6 address add fd42:42:42::2/128 dev server
[#] ip link set mtu 1420 up dev server
[#] resolvconf -a tun.server -m 0 -x
[#] wg set server fwmark 51820
[#] ip -6 route add ::/0 dev server table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev server table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
После этого я теряю сетевое соединение с клиентом (я имею в виду свое предыдущее SSH-соединение).
На сервере я вижу следующие журналы отладки:
Feb 14 18:14:21 car kernel: wireguard: wg0: Пакет имеет недопустимый IP источника (209.250.230.114) от пиринга 1 (209.250.230.114:56584)
Feb 14 18:14:22 car kernel: wireguard: wg0: Отправка keepalive пакета на пиринг 1 (209.250.230.114:56584)
Feb 14 18:14:23 car kernel: wireguard: wg0: Пакет имеет недопустимый IP источника (209.250.230.114) от пиринга 1 (209.250.230.114:56584)
Feb 14 18:14:26 car kernel: wireguard: wg0: Пакет имеет недопустимый IP источника (209.250.230.114) от пиринга 1 (209.250.230.114:56584)
Feb 14 18:14:33 car kernel: wireguard: wg0: Отправка keepalive пакета на пиринг 1 (209.250.230.114:56584)
Наверняка РазрешенныеIP = 0.0.0.0/0,::/0
позволяет любой IP? Почему я получаю ошибку о том, что IP не разрешен?
Я попробовал добавить IP клиента (209.250.230.114
) в РазрешенныеIP
под [Сотовый]
в конфигурации сервера по адресу /etc/wireguard/wg0.conf
+ перезапустить сервис systemd wireguard – небольшие изменения в поведении, кажется, продолжается повторная генерация ключевой пары + отправка рукопожатия:
Feb 14 18:27:15 car kernel: wireguard: wg0: Отправка ответа на рукопожатие пирингу 2 (209.250.230.114:46777)
Feb 14 18:27:15 car kernel: wireguard: wg0: Ключевая пара 40 уничтожена для пиринга 2
Feb 14 18:27:15 car kernel: wireguard: wg0: Ключевая пара 41 создана для пиринга 2
Feb 14 18:27:20 car kernel: wireguard: wg0: Получение инициации рукопожатия от пиринга 2 (209.250.230.114:46777)
Feb 14 18:27:20 car kernel: wireguard: wg0: Отправка ответа на рукопожатие пирингу 2 (209.250.230.114:46777)
Feb 14 18:27:20 car kernel: wireguard: wg0: Ключевая пара 41 уничтожена для пиринга 2
Feb 14 18:27:20 car kernel: wireguard: wg0: Ключевая пара 42 создана для пиринга 2
Feb 14 18:27:25 car kernel: wireguard: wg0: Получение инициации рукопожатия от пиринга 2 (209.250.230.114:46777)
Feb 14 18:27:25 car kernel: wireguard: wg0: Отправка ответа на рукопожатие пирингу 2 (209.250.230.114:46777)
Feb 14 18:27:25 car kernel: wireguard: wg0: Ключевая пара 42 уничтожена для пиринга 2
Feb 14 18:27:25 car kernel: wireguard: wg0: Ключевая пара 43 создана для пиринга 2
Вот некоторые журналы пакетов с tshark -i any
на клиенте после выполнения wg-quick up...
. Обратите внимание, что IP теперь отличаются от ранее в моем вопросе (попробовал настроить это с нуля вновь – отсюда новые IP).
80 30.827763166 87.246.7.226 <E2><86><92> 192.248.154.136 TCP 76 [TCP Retransmission] 57034 <E2><86><92> 25 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=342868104 TSecr=0 WS=128
81 30.827859690 192.248.154.136 <E2><86><92> 87.246.7.226 TCP 56 25 <E2><86><92> 57034 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
82 33.439281276 192.248.154.136 <E2><86><92> 192.248.152.91 UDP 192 59054 <E2><86><92> 58338 Len=148
83 36.811164287 192.248.154.136 <E2><86><92> 108.61.73.244 NTP 92 NTP Version 4, client
84 38.146118476 87.246.7.243 <E2><86><92> 192.248.154.136 TCP 76 6076 <E2><86><92> 25 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=211747651 TSecr=0 WS=1024
85 38.146182173 192.248.154.136 <E2><86><92> 87.246.7.243 TCP 56 25 <E2><86><92> 6076 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
86 38.559280480 192.248.154.136 <E2><86><92> 192.248.152.91 UDP 192 59054 <E2><86><92> 58338 Len=148
87 38.852121979 87.246.7.226 <E2><86><92> 192.248.154.136 TCP 76 [TCP Retransmission] 57034 <E2><86><92> 25 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=342876128 TSecr=0 WS=128
88 38.852220458 192.248.154.136 <E2><86><92> 87.246.7.226 TCP 56 25 <E2><86><92> 57034 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
89 39.146306580 87.246.7.243 <E2><86><92> 192.248.154.136 TCP 76 [TCP Retransmission] 6076 <E2><86><92> 25 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=211748652 TSecr=0 WS=1024
90 39.146388276 192.248.154.136 <E2><86><92> 87.246.7.243 TCP 56 25 <E2><86><92> 6076 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
91 41.150763667 87.246.7.243 <E2><86><92> 192.248.154.136 TCP 76 [TCP Retransmission] 6076 <E2><86><92> 25 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=211750656 TSecr=0 WS=1024
92 41.150880444 192.248.154.136 <E2><86><92> 87.246.7.243 TCP 56 25 <E2><86><92> 6076 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
93 41.630158997 212.70.149.54 <E2><86><92> 192.248.154.136 TCP 76 46658 <E2><86><92> 25 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=42893859 TSecr=0 WS=1024
94 41.630236617 192.248.154.136 <E2><86><92> 212.70.149.54 TCP 56 25 <E2><86><92> 46658 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
95 41.811177910 192.248.154.136 <E2><86><92> 108.61.73.243 NTP 92 NTP Version 4, client
96 42.630885040 212.70.149.54 <E2><86><92> 192.248.154.136 TCP 76 [TCP Retransmission] 46658 <E2><86><92> 25 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=42894860 TSecr=0 WS=1024
97 42.630953128 192.248.154.136 <E2><86><92> 212.70.149.54 TCP 56 25 <E2><86><92> 46658 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
98 43.353963530 fe:00:03:35:d7:65 <E2><86><92> ARP 44 Кто имеет 192.248.154.136? Сообщите 104.238.168.72
99 43.354021247 56:00:03:35:d7:65 <E2><86><92> ARP 44 192.248.154.136 находится по адресу 56:00:03:35:d7:65
100 43.679313102 192.248.154.136 <E2><86><92> 192.248.152.91 UDP 192 59054 <E2><86><92> 58338 Len=148
101 44.634917692 212.70.149.54 <E2><86><92> 192.248.154.136 TCP 76 [TCP Retransmission] 46658 <E2><86><92> 25 [SYN] Seq=0 Win=29200 Len
В моем случае проблема с Пакет имеет недопустимый источник IP
была вызвана тем, что брандмауэр у облачного провайдера был не до конца настроен, вероятно, из-за перезагрузки. Выполнение скриптов wg-quick down
и wg-quick up
добавило необходимые правила брандмауэра. Надеюсь, это поможет кому-то.
Ответ или решение
Ошибка WireGuard: "wg0: Packet has unallowed src IP"
Ошибка, с которой вы столкнулись, "wg0: Packet has unallowed src IP" означает, что WireGuard обнаружил, что пакет пришёл с IP-адреса, который не разрешен для конкретного пир-клиента. Это может происходить по нескольким причинам, и для решения следует рассмотреть конфигурацию вашего WireGuard-сервера и клиента, а также сетевую инфраструктуру.
1. Анализ конфигурации
Сначала рассмотрим вашу конфигурацию сервера и клиента.
Конфигурация сервера (/etc/wireguard/wg0.conf
):
[Interface]
Address = 10.66.66.1/24,fd42:42:42::1/64
ListenPort = 51202
PrivateKey = ***************
PostUp = ...
PostDown = ...
### Клиент chris
[Peer]
PublicKey = ***************
PresharedKey = ****************
AllowedIPs = 10.66.66.2/32,fd42:42:42::2/128,209.250.230.114/32
Конфигурация клиента:
[Interface]
PrivateKey = ******************
Address = 10.66.66.2/32,fd42:42:42::2/128
DNS = 94.140.14.14,94.140.15.15
[Peer]
PublicKey = 8ZF6U0mHKvMtVw2A4jha4mZR+a0GP5W85unV05zJIyw=
PresharedKey = **************************
Endpoint = 192.248.162.216:51202
AllowedIPs = 0.0.0.0/0,::/0
Основные причины возникновения ошибки
-
Настройки
AllowedIPs
:
Ваша конфигурация клиента содержит строчкуAllowedIPs = 0.0.0.0/0,::/0
, что говорит WireGuard, что клиент может отправлять пакеты к любым IP-адресам через интерфейс VPN. Однако на сервере вы указали, что для клиента с публичным ключом разрешены только определённые IP-адреса (включая 10.66.66.2 и 209.250.230.114). Если клиент отправляет пакеты с IP, который не разрешён на сервере, вы получите данное сообщение об ошибке. -
Подбор IP-адресов:
Убедитесь, что IP-адреса, используемые в конфигурации клиента и сервера, корректно настроены и соответствуют друг другу. IP-адрес209.250.230.114
, указанный как разрешённый на стороне сервера, может не быть источником трафика, если клиент использует другие настройки сети или NAT. -
Файрволл и сетевые ограничения:
Ваше сообщение указывает на возможность, что проблема может быть связана с политиками файрволла на уровне облачного провайдера. Иногда после перезагрузки сервера предустановленные правила файрволла могут сбрасываться, что приводит к потере связи. Важно убедиться, что все необходимые порты открыты и что трафик разрешён.
Решение проблемы
-
Проверьте и настройте правила файрволла:
Убедитесь, что на уровне облачного провайдера файрволл позволяет трафик на порту WireGuard (51202). Возможно, после перезагрузки сервера вам потребуется дополнительно настроить эти правила. -
Используйте команды
wg-quick
:
Как вы уже упомянули, командыwg-quick down
иwg-quick up
могут помочь сбросить старые подключения и настроить новое. Это часто приводит к восстановлению необходимых правил файрволла. -
Корректировка конфигурации
AllowedIPs
:
Убедитесь, что IP-адреса, которые ваш клиент использует для отправки и получения данных, разрешены сервером. Рассмотрите возможность добавленияAllowedIPs
на стороне сервера, чтобы соответствовать реальным IP-адресам клиента.
Заключение
Проблема "wg0: Packet has unallowed src IP" в WireGuard может иметь разные корни, начиная от неправильных настроек IP-адреса и заканчивая проблемами с сетевыми правилами. Всегда важно тщательно проверять как конфигурацию, так и сетевую инфраструктуру. Надеюсь, данное руководство поможет вам в решении возникшей проблемы.