EL-Script

General IT knowledge base

AllowedIPs в WireGuard: что это и как параметр влияет на маршрутизацию VPN

Зачем нужен параметр AllowedIPs в конфигурации WireGuard и как он управляет таблицей криптографической маршрутизации.

Коротко: AllowedIPs — это список IP-адресов и подсетей, для которых пир считается маршрутизатором. Он не только определяет, какие пакеты будут отправлены через конкретного пира, но и добавляет записи в таблицу маршрутизации WireGuard. Правильная настройка AllowedIPs критична для работы VPN-туннеля: ошибка здесь может привести к полной изоляции клиента или утечке трафика.

Параметр AllowedIPs в WireGuard часто вызывает путаницу у начинающих администраторов, хотя он является ключевым элементом управления криптографической маршрутизацией. В отличие от классических VPN, где маршруты задаются отдельно, WireGuard жестко связывает разрешённые IP-адреса с конкретным пиром и использует этот список для фильтрации входящего трафика и построения исходящей таблицы маршрутизации. Понимание AllowedIPs напрямую влияет на корректность работы туннеля, будь то клиентский доступ, объединение офисов или сплит-туннелирование.

Что такое AllowedIPs и как он связан с пирами WireGuard

В конфигурации WireGuard каждый пир (peer) содержит параметр AllowedIPs. Этот список определяет, какие IP-адреса или подсети разрешено передавать через этого пира. Если пакет отправляется на адрес, который входит в AllowedIPs какого-либо пира, WireGuard выбирает этого пира для шифрования и отправки. Аналогично, входящий пакет от пира принимается только в том случае, если его исходный IP-адрес принадлежит разрешённым подсетям; все остальные пакеты просто отбрасываются.

Таким образом, AllowedIPs выполняет двойную функцию: выступает как фильтр входящего трафика и как правило выбора пира для исходящих пакетов. Сам интерфейс WireGuard не имеет понятия «шлюза по умолчанию» в классическом смысле — решение о маршрутизации принимается на основе совокупности AllowedIPs всех активных пиров.

Как AllowedIPs управляет таблицей маршрутизации

Когда интерфейс WireGuard поднимается, утилита wg-quick (или аналог) автоматически добавляет маршруты в системную таблицу маршрутизации для каждого пира в соответствии с его AllowedIPs. Например, если для пира указано 192.168.10.0/24, то в системе появится маршрут к этой сети через WireGuard-интерфейс. Если указать 0.0.0.0/0, то весь трафик будет направлен в туннель, что соответствует полноценному VPN-шлюзу.

Важно понимать, что маршруты добавляются на операционную систему, а не обрабатываются исключительно внутренней логикой WireGuard. Поэтому на реальную маршрутизацию могут влиять другие правила, метрики интерфейсов и политики маршрутизации (policy routing). В некоторых дистрибутивах Linux, при использовании wg-quick, маршруты с 0.0.0.0/0 заменяют маршрут по умолчанию, но старый шлюз сохраняется в отдельной таблице для обеспечения связности с endpoint.

Важно: В средах с несколькими VPN-интерфейсами или сложной политикой маршрутизации лучше управлять маршрутами вручную, отключив автоматическое добавление.

Типовые сценарии использования AllowedIPs

В зависимости от задачи конфигурация AllowedIPs кардинально меняется. Рассмотрим основные сценарии, с которыми сталкиваются администраторы.

  • Полный VPN-туннель: AllowedIPs = 0.0.0.0/0, ::/0. Весь интернет-трафик клиента идёт через VPN-сервер. Используется для анонимизации или доступа к ресурсам, доступным только с IP сервера.
  • Доступ только к удалённой локальной сети: AllowedIPs = 192.168.15.0/24. Клиент получает доступ к офисной подсети, остальной трафик идёт напрямую через локальный шлюз.
  • Site-to-site (объединение сетей): На каждом конце пиру прописываются подсети удалённой стороны. Например, на сервере A: AllowedIPs для пира B = 10.10.0.0/24, на сервере B: AllowedIPs для пира A = 192.168.1.0/24.
  • Сплит-туннелирование с несколькими подсетями: AllowedIPs = 10.0.0.0/8, 172.16.0.0/12. Можно перечислить несколько непересекающихся диапазонов, разделённых запятыми, чтобы направить в туннель только нужные сети.
  • Изолированная точка-точка: AllowedIPs = 10.7.0.2/32 (IP самого пира в туннеле). Трафик ходит только между двумя узлами WireGuard, без дополнительной маршрутизации.

Важно: В одном пире список AllowedIPs может содержать несколько элементов; они накапливаются и не перезаписывают друг друга при повторном добавлении.

Взаимодействие с операционной системой и файрволом

Даже идеально настроенный AllowedIPs не гарантирует работоспособности, если на пути встанут файрвол или некорректная таблица маршрутизации ОС. WireGuard добавляет маршруты, но не управляет правилами iptables/nftables или файрволом Windows. Например, для site-to-site необходимо разрешить форвардинг пакетов между интерфейсами и настроить NAT, если используется выход в интернет через удалённый узел.

Также важно помнить о метриках. Если в системе остаётся активным маршрут по умолчанию через физический интерфейс с более низкой метрикой, чем маршрут 0.0.0.0/0 через WireGuard, трафик может пойти не в туннель. Утилита wg-quick обычно подменяет основной маршрут, но в Windows или вручную настроенных системах это нужно контролировать.

  • Проверьте, что в ОС разрешён IP-форвардинг, если туннель используется для доступа к сетям за пиром.
  • Для полного туннеля на клиенте Linux убедитесь, что пакет wireguard-tools установлен и используется wg-quick, иначе маршрут 0.0.0.0/0 не будет корректно заменён.
  • В Windows маршруты могут не добавляться автоматически; иногда требуется указать их вручную или использовать сторонние фронтенды.

Важно: На клиентах за NAT с несколькими пирами может потребоваться тонкая настройка AllowedIPs, чтобы избежать конфликта маршрутов.

Диагностика проблем с маршрутизацией через AllowedIPs

Первый признак неправильных AllowedIPs — отсутствие handshake или пакеты не доходят до целевой подсети. Используйте команду wg show, чтобы увидеть последнее рукопожатие и количество переданных/принятых данных. Если handshake есть, но трафик не идёт, сверьте AllowedIPs на обоих концах.

Сравните вывод ip route show table main (или route print в Windows) с ожидаемыми маршрутами. Маршруты к разрешённым подсетям должны указывать на интерфейс wg0 (или другой). Если маршрута нет, вероятно, AllowedIPs не настроен или интерфейс не поднят.

  1. Выполните wg show на каждом узле и убедитесь, что peer активен, есть handshake.
  2. Проверьте AllowedIPs в выводе wg show для соответствующего пира.
  3. Сравните список с тем, что ожидается: для клиента, желающего выходить в интернет, должна быть строка allowed ips: 0.0.0.0/0.
  4. Проверьте таблицу маршрутизации ОС: ip route | grep wg. Если нужная подсеть отсутствует, перезапустите интерфейс.
  5. Протестируйте доступность командой ping до удалённой подсети, предварительно указав интерфейс (ping -I wg0 10.7.0.2).

Важно: В некоторых случаях проблема скрывается на стороне удалённого пира: его собственный AllowedIPs должен включать IP-адрес вашего туннеля и маршрутизируемые сети за вами.

Частые ошибки и нюансы

  • Указание 0.0.0.0/0 для пира, когда нужен доступ только в офисную сеть — весь интернет-трафик пойдёт через VPN, замедляя работу и нагружая канал сервера.
  • Забывают добавить IP-адрес самого WireGuard-интерфейса в AllowedIPs удалённого пира, из-за чего прямой обмен между туннельными адресами не работает.
  • Не обновляют AllowedIPs при изменении топологии: если за пиром появилась новая подсеть, её нужно внести в список разрешённых адресов на противоположной стороне.
  • Путают подсети: на стороне сервера AllowedIPs клиента должно указывать не локальную сеть клиента, а те сети, которые доступны за сервером и к которым клиент должен получить доступ.
  • Используют перекрывающиеся подсети в AllowedIPs для разных пиров — это вызывает неопределённое поведение, так как WireGuard не сможет выбрать, какому пиру отправлять пакет.
AI-инструмент

Проверить проблему WireGuard

Введите ошибку, симптом или часть конфигурации: handshake, AllowedIPs, DNS, MTU, Endpoint.

FAQ

Что означает AllowedIPs = 0.0.0.0/0 в конфигурации пира?

Это значит, что через данного пира будет отправляться весь IPv4-трафик, для которого нет более специфичного маршрута. Фактически пир становится шлюзом по умолчанию, и весь интернет-трафик пойдёт через VPN. Для полной маршрутизации IPv6 часто добавляют ::/0.

Можно ли указать несколько подсетей через запятую?

Да, AllowedIPs принимает перечисление IP-префиксов через запятую, например: 10.0.0.0/8, 172.16.0.0/12, 192.168.100.0/24. Все перечисленные сети будут направлены через данного пира.

Чем AllowedIPs отличается от обычных маршрутов в операционной системе?

AllowedIPs управляет логикой шифрования и выбора пира внутри WireGuard, а также при поднятии интерфейса автоматически добавляет соответствующие маршруты в ОС. Однако сами маршруты можно менять вручную, но тогда криптографическая проверка входящих пакетов всё равно останется по списку AllowedIPs.

Что будет, если оставить AllowedIPs пустым?

Пустой AllowedIPs означает, что пир не авторизован ни для каких адресов. Исходящий трафик не будет направлен к нему, а все входящие пакеты от этого пира будут отброшены. Рукопожатие может произойти, но передача данных станет невозможной.

Почему после подключения WireGuard у клиента пропадает интернет?

Одна из частых причин — AllowedIPs = 0.0.0.0/0 без корректно настроенного NAT на сервере или без маршрута к endpoint-адресу сервера в обход туннеля. Либо маршрут по умолчанию заменился на WireGuard, а сервер не имеет выхода в интернет для клиентов. Проверьте handshake и исходящий трафик с сервера.

Как настроить сплит-туннелирование через AllowedIPs?

Укажите в AllowedIPs только те подсети, которые должны быть доступны через туннель, например, 192.168.15.0/24 для офисной сети. Оставшийся трафик пойдёт через локальный интерфейс. Убедитесь, что не используется 0.0.0.0/0, иначе весь трафик завернёт в туннель.

Итог

AllowedIPs в WireGuard — это не просто дескриптор, а активный элемент маршрутизации и политики безопасности. Корректное заполнение этого списка для каждого пира определяет, какие именно сети будут доступны и какой путь выберет трафик. Понимание двойной роли AllowedIPs помогает избежать типичных проблем, будь то настройка удалённого доступа сотрудников или построение распределённой сети.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *