Проблема маршрутизации Wireguard в Debian 12

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

Извините за ещё одну тему, касающуюся Wireguard, я обыскал форум, но, похоже, каждая тема уникальна для каждого пользователя. Я использую Debian 12 с UFW, и недавно установил Wireguard. Я завершил настройку и смог подключиться к частной VPN с моего MacBook с помощью приложения Wireguard, однако, когда я запускаю команду traceroute, например, первый переход через VPN, как и должно быть, но второй переход через мой IP-адрес роутера. Затем я подтвердил, что VPN работает некорректно, когда я проверил свой IP-адрес в Интернете и получил публичный IP-адрес моего сервера. Я хотел бы узнать, что нужно сделать, чтобы избежать раскрытия моего IP-адреса, когда VPN подключен?

Вот некоторые детали моей конфигурации:

На стороне сервера

[Interface]
PrivateKey = SERVER KEY
Address = 10.0.0.1/32
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = KEY1
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = KEY2
AllowedIPs = 10.0.0.3/32

На стороне клиента

[Interface]
PrivateKey = Key
Address = 10.0.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = Key1 или 2
AllowedIPs = 0.0.0.0/0
Endpoint = myddip:51820

Правила UFW

Status: active

To                         Action      From
--                         ------      ----                 
1194/udp                   ALLOW       Anywhere                  
Anywhere on tun0           ALLOW       Anywhere                  
Anywhere                   ALLOW       10.8.0.0/24               
443/udp                    ALLOW       Anywhere                  
51820/udp                  ALLOW       Anywhere                  
Anywhere                   ALLOW       10.0.0.0/24               
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
445                        ALLOW       Anywhere                  
139/tcp                    ALLOW       Anywhere                  
139                        ALLOW       Anywhere                  
445/tcp                    ALLOW       Anywhere                  
Anywhere on wg0            ALLOW       Anywhere                  
139/tcp (v6)               ALLOW       Anywhere (v6)             
139 (v6)                   ALLOW       Anywhere (v6)             
445/tcp (v6)               ALLOW       Anywhere (v6)             
51820/udp (v6)             ALLOW       Anywhere (v6)             
Anywhere (v6) on wg0       ALLOW       Anywhere (v6)             

Anywhere                   ALLOW OUT   Anywhere on enp2s0   

Я также запускал некоторые скрипты в моих iptables, чтобы правильно направлять трафик через мою VPN, но, как я уже упоминал, VPN работает и активно подключен, но маршрутизация, похоже, не хочет оставаться внутри VPN IP.

Пока я здесь, вот вывод моей команды ip r:

default via <мой IP роутера> dev enp2s0 
10.0.0.2 dev wg0 scope link 
10.0.0.3 dev wg0 scope link 

Это вывод, когда VPN активен.

Есть у кого-нибудь идеи?

Ответ или решение

Добрый день. Рассмотрим вашу проблему с маршрутизацией через WireGuard на Debian 12. Ваша ситуация касается неправильной маршрутизации, когда трафик не идет полностью через VPN-соединение, что приводит к утечке IP-адреса.

Теория

Когда вы подключаетесь к VPN, вся ваша исходящая сеть должна маршрутизироваться через VPN-туннель, и ваш внешний IP-адрес должен заменяться на адрес VPN-сервера. Это достигается путем настройки AllowedIPs как 0.0.0.0/0 на клиентской стороне. Это правило позволяет маршрутизировать весь трафик через туннель WireGuard.

В IP-технологии термины "маршрут" и "шлюз" обозначают путь, по которому пакеты IP могут достигать цели. Чтобы весь трафик шел через VPN, обычно на клиенте устанавливается правило маршрутизации, перенаправляющее по умолчанию (default route) через интерфейс WireGuard.

Пример

В вашей конфигурации:

  • На стороне клиента правильно указаны AllowedIPs = 0.0.0.0/0, что предполагает, что весь трафик должен отправляться через VPN.
  • Сервер использует стандартные правила NAT, чтобы скрыть внутренние IP и использовать IP-адрес интерфейса eth0 для соединений, идущих наружу.

Применение

  1. Проверка правил iptables

    У вас в настройках используется NAT для маршрутизации трафика от WireGuard-интерфейса на внешний. Убедитесь, что эти правила работают корректно. Попробуйте временно отключить firewall на сервере, чтобы исключить UFW из причин проблемы. Настройте iptables напрямую, чтобы понять, влияет ли это на ситуацию.

  2. Конфигурация маршрутизации

    Проверьте маршрут по умолчанию на клиентской машине. При подключении к VPN маршрут по умолчанию должен перенаправляться через wg0. После подключения выполните команду ip route на клиенте. Оно должно содержать строку вида:

    default via 10.0.0.1 dev wg0

    Этой строкой должен быть указан маршрут через интерфейс WireGuard.

  3. Проверка состояния соединения

    Убедитесь, что ваше соединение действительно функционирует через VPN:

    • Проверьте IP-адрес через такие сервисы, как https://whatismyipaddress.com/ до и после подключения к VPN.
    • Если после подключения показывается ваш публичный IP вашего сервера, то маршрутизация вероятно не проходит через VPN.
  4. Диагностика через лог-файлы

    Просмотрите логи WireGuard как на сервере, так и на клиенте. В большинстве случаев WireGuard будет выводить полезные сообщения, которые могут указать на ошибки или несоответствия.

  5. Дополнительные настройки UFW

    Убедитесь, что UFW разрешает трафик через WireGuard. Хотя у вас уже настроены некоторые правила, нет конкретизации по адресу.

  6. Проверка формирования пакетов

    Используйте tcpdump или wireshark для анализа пакетов на вашем интерфейсе WireGuard. Это может помочь понять, идет ли трафик действительно по туннелю.

Заключение

Конфигурация WireGuard может быть достаточно простой, но она всегда требует осторожного подхода при вмешательстве в маршрутизацию и NAT. Убедитесь в правильности всех настроек и используйте методы диагностики для выявления проблем. Устранение ошибок в подобной ситуации обычно требует синергии между знанием как сетевых протоколов, так и конкретных особенностей установленного программного обеспечения. Если все вышеперечисленные шаги не привели к успеху, возможно, стоит обратиться к более детальному логированию и помощи специалистов по сетям.

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

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