Вопрос или проблема
У меня есть блок публичных IP-адресов, и я хочу создать маршрутизатор с помощью моего Raspberry Pi, чтобы предложить эти публичные IP-адреса моим устройствам за CGNAT.
Топология
[Сервер](wireguard addr = 10.0.0.1/24)–Wireguard–> [Маршрутизатор] (wireguard addr = 10.0.0.2) –> [AP] (wlan0=x.y.z.0/30)
Текущий статус
ip addr
подтвердил, что адрес для wlan0 равен x.y.z.0/30- AllowedIPs = 0.0.0.0/0 установлено на стороне маршрутизатора
- Точка доступа Wi-Fi и DHCP-сервер функциональны, с установленным шлюзом по умолчанию на x.y.z.0, и подключенные устройства получают адреса в диапазоне x.y.z.0+n.
- Я вижу клиента в таблице ARP с помощью
arp -a
- Когда я пингую адреса в диапазоне x.y.z.0/30 с другого сервера, я вижу входящие пакеты на интерфейсе Wireguard маршрутизатора.
- Перенаправление IPv4 включено на маршрутизаторе (net.ipv4.ip_forward=1).
- Если я выполняю ping 8.8.8.8 на маршрутизаторе, он не получает никаких ответов после того, как интерфейс WireGuard включен (пакеты, захваченные на интерфейсе WireGuard сервера, имеют исходный IP 10.0.0.2), но ping -I x.y.z.0 8.8.8.8 будет работать (пакеты, захваченные на интерфейсе WireGuard сервера, имеют исходный IP x.y.z.0).
- Пакеты не перенаправляются на wlan0, и в противоположном направлении тоже.
- Запуск команды
iptables -A FORWARD -d x.y.z.0+n -o wlan0 -j ACCEPT
может заставить пакеты перенаправляться на wlan0, ноiptables -A FORWARD -s x.y.z.0+n -o wg0 -j ACCEPT
не работает для обратного направления.
Может кто-то предложить подсказки о том, почему это не работает так, как ожидалось? Спасибо!
Ответ или решение
Чтобы успешно организовать маршрутизатор на базе Raspberry Pi с использованием блока публичных IP-адресов через DHCP, необходимо учесть несколько ключевых моментов в конфигурации. Рассмотрим вашу ситуацию более подробно и предложим решения для устранения проблем с маршрутизацией.
Топология и текущий статус
-
Подключение: На данный момент у вас настроено следующее:
- Сервер WireGuard (10.0.0.1/24) подключен к маршрутизатору (10.0.0.2) по VPN.
- Маршрутизатор на интерфейсе WLAN0 настроен с адресом x.y.z.0/30.
- DHCP сервер корректно раздает адреса в диапазоне x.y.z.0+n.
-
Проблемы с маршрутизацией:
- Для хостов, подключенных через Wi-Fi, пакеты не проходят между интерфейсами маршрутизатора и WireGuard.
- Пинги на публичные IP-адреса не проходят, если они инициируются с интерфейса WireGuard.
Основные рекомендации по решению проблемы
1. Корректировка настроек IPTABLES
Проблемы с маршрутизацией могут быть связаны с правилами IPTABLES. Убедитесь, что ваши правила не блокируют необходимые пакеты, и настройте их следующим образом:
# Разрешаем перенаправление трафика между интерфейсами
iptables -A FORWARD -i wlan0 -o wg0 -j ACCEPT
iptables -A FORWARD -i wg0 -o wlan0 -j ACCEPT
Эти правила обеспечивают двунаправленный трафик, позволяя пакетам проходить между интерфейсами wlan0
и wg0
.
2. Настройка маршрутов
Поскольку у вас есть публичные IP-адреса через DHCP, убедитесь, что на маршрутизаторе настроены правильные маршруты. Это можно сделать следующим образом:
ip route add x.y.z.0/30 dev wlan0
Добавление маршрутов поможет маршрутизатору служить связующим звеном между подключенными устройствами и публичной сетью.
3. Проверка настройка NAT
Если вы хотите, чтобы подключенные устройства имели доступ к интернету с помощью публичных IP-адресов, потребуется включить NAT. Это можно сделать с помощью следующей команды:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Это правило маскирует исходящие соединения, что позволяет устройствам за маршрутизатором использовать публичные IP для доступа в интернет.
4. Настаивание DHCP
Убедитесь, что ваш DHCP сервер корректно настроен для выдачи IP-адресов из диапазона x.y.z.0+n. Возможно, вам понадобится обновить конфигурацию DCHP-сервера, чтобы убедиться, что он работает должным образом.
Пример конфигурации DHCP-сервера:
subnet x.y.z.0 netmask 255.255.255.252 {
range x.y.z.1 x.y.z.2; # диапазон выданных адресов
option routers x.y.z.0; # шлюз
option subnet-mask 255.255.255.252;
}
Заключение
Эти шаги помогут вам исправить текущие проблемы с маршрутизацией и наладить корректную работу вашего маршрутизатора на базе Raspberry Pi. Убедитесь, что каждый шаг выполняется с учетом конфигурации сети и связанных с ней параметров. Если проблемы сохраняются, продолжайте исследовать логи системы и сетевые соединения, чтобы обнаружить дополнительные проблемы. С помощью тщательной настройки маршрутизации и правил firewall вы сможете обеспечить корректное использование публичных IP-адресов через ваш маршрутизатор.