Вопрос или проблема
Я застрял на самом базовом этапе, который заключается в настройке ПК2 (10.0.0.3) для разрешения подключений от ПК1 (10.0.0.1). Просто простое соединение, без VPN или чего-то подобного, на данный момент.
Я использую Fedora Workstation, и не могу найти правило, чтобы это заработало. Отключение firewalld работает, а также установка цели на ACCEPT. Оба устройства настроены на использование порта 51820/udp, так что я не совсем уверен, что еще я должен сделать.
На данный момент у меня есть следующее:
sudo firewall-cmd --zone=FedoraWorkstation --add-interface=wg0 --permanent && sudo firewall-cmd --reload
sudo firewall-cmd --zone=FedoraWorkstation --add-port=51820/udp --permanent && sudo firewall-cmd --reload
ПК1
[Интерфейс]
Адрес = 10.0.0.1/32
ПриватныйКлюч = скрыто
ПортПрослушивания = 51820
[Партнер]
ПубличныйКлюч = скрыто
КонечнаяТочка = скрыто:51820
РазрешенныеIP = 10.0.0.3/32
ПК2
[Интерфейс]
Адрес = 10.0.0.3/32
ПриватныйКлюч = скрыто
ПортПрослушивания = 51820
[Партнер]
ПубличныйКлюч = скрыто
КонечнаяТочка = скрыто:51820
РазрешенныеIP = 10.0.0.1/32
Это вывод tcpdump на ПК2, когда я пингую с ПК1. Таким образом, пакеты пинга принимаются, но нет ответа или подключения на ПК1.
sudo tcpdump -nn -i wlp3s0 udp and port 51820
права доступа были уменьшены для tcpdump
tcpdump: подробный вывод подавлен, используйте -v[v]... для полного декодирования протокола
прослушивание на wlp3s0, тип канала EN10MB (Ethernet), длина снимка 262144 байта
22:56:47.997045 IP ПК1_PUBLIC_IP.51820 > 192.168.1.23.51820: UDP, длина 128
22:56:49.022044 IP ПК1_PUBLIC_IP.51820 > 192.168.1.23.51820: UDP, длина 128
22:56:50.114223 IP ПК1_PUBLIC_IP.51820 > 192.168.1.23.51820: UDP, длина 128
22:56:51.070079 IP ПК1_PUBLIC_IP.51820 > 192.168.1.23.51820: UDP, длина 128
22:56:52.346737 IP ПК1_PUBLIC_IP.51820 > 192.168.1.23.51820: UDP, длина 128
sudo tcpdump -nn -i wg0
права доступа были уменьшены для tcpdump
tcpdump: подробный вывод подавлен, используйте -v[v]... для полного декодирования протокола
прослушивание на wg0, тип канала RAW (Raw IP), длина снимка 262144 байта
22:58:09.918580 IP 10.0.0.1 > 10.0.0.3: ICMP echo request, id 48, seq 1000, длина 64
22:58:10.943419 IP 10.0.0.1 > 10.0.0.3: ICMP echo request, id 48, seq 1001, длина 64
22:58:11.967695 IP 10.0.0.1 > 10.0.0.3: ICMP echo request, id 48, seq 1002, длина 64
22:58:12.990758 IP 10.0.0.1 > 10.0.0.3: ICMP echo request, id 48, seq 1003, длина 64
22:58:14.014762 IP 10.0.0.1 > 10.0.0.3: ICMP echo request, id 48, seq 1004, длина 64
ПК1:
ping -c 10 10.0.0.3
PING 10.0.0.3 (10.0.0.3) 56(84) байт данных.
--- 10.0.0.3 статистика пинга ---
10 пакетов отправлено, 0 получено, 100% потеря пакетов, время 9217мс
Ответ или решение
Когда вы сталкиваетесь с проблемой подключения между двумя ПК, использующими WireGuard, но не можете получить ответ на пинг, это может быть вызвано несколькими причинами. Давайте рассмотрим основные моменты и возможные решения вашей ситуации.
1. Статус соединения
Судя по вашему описанию, ваши ПК (PC1 с адресом 10.0.0.1 и PC2 с адресом 10.0.0.3) настроены на использование WireGuard с сетью 10.0.0.0/24. Вы упомянули, что успешно выполняете начальную перезагрузку правил firewalld и открываете нужные порты. Однако, судя по выводу tcpdump на PC2, пакеты от PC1 доходят, но не возвращаются обратно.
2. Настройка WireGuard
Убедитесь, что настройки WireGuard верные. Основные параметры в конфигурации должны быть следующими:
PC1
[Interface]
Address = 10.0.0.1/32
PrivateKey = hidden
ListenPort = 51820
[Peer]
PublicKey = hidden
Endpoint = PC2_PUBLIC_IP:51820
AllowedIPs = 10.0.0.3/32
PC2
[Interface]
Address = 10.0.0.3/32
PrivateKey = hidden
ListenPort = 51820
[Peer]
PublicKey = hidden
Endpoint = PC1_PUBLIC_IP:51820
AllowedIPs = 10.0.0.1/32
Ключевые моменты:
- PublicKey и Endpoint должны быть правильно настроены, обратите внимание на возможные ошибки в конфигурации.
- Используйте публичные IP-адреса вместо локальных для Endpoint.
3. Проверка маршрутизации
Проверьте маршрут (route) на обоих машинах, чтобы убедиться, что пакеты правильно направляются.
На PC1 выполните:
ip route show
На PC2 выполните:
ip route show
Убедитесь, что маршруты для адресов 10.0.0.0/24 настроены верно. Возможно, необходимо добавить маршрут вручную.
4. Настройки firewalld
Убедитесь, что firewalld правильно настроен для маршрутизации пакетов. Для отвода трафика через интерфейс wg0
, выполните следующие команды:
sudo firewall-cmd --zone=work --add-interface=wg0 --permanent
sudo firewall-cmd --zone=work --add-masquerade --permanent
sudo firewall-cmd --reload
Также важно проверить настройки интерфейса, который отвечает за локальную сеть. Убедитесь, что разрешен проход трафика.
5. Проверка состояния сервисов
Убедитесь, что WireGuard работает на обоих машинах:
sudo systemctl status wg-quick@wg0
Если сервис не активен, запустите его:
sudo systemctl start wg-quick@wg0
6. Проблемы с NAT и MTU
Если у вас есть роутеры, которые могут препятствовать UDP-трафику, убедитесь, что NAT (Network Address Translation) настроен правильно.
Кроме того, обратите внимание на MTU (Maximum Transmission Unit). Попробуйте изменить размер MTU на 1420 или 1400 и посмотрите, поможет ли это.
Заключение
Если вы соблюли все вышеперечисленные рекомендации и проблема остается, посмотрите логи системы и WireGuard, чтобы получить больше информации об ошибках. Логирование может помочь выявить природу проблемы.
При выполнении всех этих шагов, скорее всего, вы сможете устранить проблему с отсутствием соединения, и ваш ping должен начать работать. Если возникнут дополнительные вопросы, не стесняйтесь задавать их — это поможет более точно определить тонкости вашей конфигурации.