Wireguard “wg0: Пакет имеет недопустимый исходный IP”

Вопрос или проблема

С помощью проекта 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

Основные причины возникновения ошибки

  1. Настройки AllowedIPs:
    Ваша конфигурация клиента содержит строчку AllowedIPs = 0.0.0.0/0,::/0, что говорит WireGuard, что клиент может отправлять пакеты к любым IP-адресам через интерфейс VPN. Однако на сервере вы указали, что для клиента с публичным ключом разрешены только определённые IP-адреса (включая 10.66.66.2 и 209.250.230.114). Если клиент отправляет пакеты с IP, который не разрешён на сервере, вы получите данное сообщение об ошибке.

  2. Подбор IP-адресов:
    Убедитесь, что IP-адреса, используемые в конфигурации клиента и сервера, корректно настроены и соответствуют друг другу. IP-адрес 209.250.230.114, указанный как разрешённый на стороне сервера, может не быть источником трафика, если клиент использует другие настройки сети или NAT.

  3. Файрволл и сетевые ограничения:
    Ваше сообщение указывает на возможность, что проблема может быть связана с политиками файрволла на уровне облачного провайдера. Иногда после перезагрузки сервера предустановленные правила файрволла могут сбрасываться, что приводит к потере связи. Важно убедиться, что все необходимые порты открыты и что трафик разрешён.

Решение проблемы

  1. Проверьте и настройте правила файрволла:
    Убедитесь, что на уровне облачного провайдера файрволл позволяет трафик на порту WireGuard (51202). Возможно, после перезагрузки сервера вам потребуется дополнительно настроить эти правила.

  2. Используйте команды wg-quick:
    Как вы уже упомянули, команды wg-quick down и wg-quick up могут помочь сбросить старые подключения и настроить новое. Это часто приводит к восстановлению необходимых правил файрволла.

  3. Корректировка конфигурации AllowedIPs:
    Убедитесь, что IP-адреса, которые ваш клиент использует для отправки и получения данных, разрешены сервером. Рассмотрите возможность добавления AllowedIPs на стороне сервера, чтобы соответствовать реальным IP-адресам клиента.

Заключение

Проблема "wg0: Packet has unallowed src IP" в WireGuard может иметь разные корни, начиная от неправильных настроек IP-адреса и заканчивая проблемами с сетевыми правилами. Всегда важно тщательно проверять как конфигурацию, так и сетевую инфраструктуру. Надеюсь, данное руководство поможет вам в решении возникшей проблемы.

Оцените материал
Добавить комментарий

Капча загружается...