Запуск двух DHCP-серверов в одной сети

9

Я подключил мой raspberry pi к точке беспроводного доступа и хотел бы запустить DHCP-сервер на RPi для правильного назначения IP-адреса и шлюза. Это потому, что RPi служит шлюзом для VPN. К сожалению, точка доступа также использует DHCP-сервер, который я не могу деактивировать по какой-то причине. Каков наилучший способ автоматически получить правильные настройки от распространения RPi для всех пользователей Wi-Fi?

золотое дно
источник

Ответы:

13

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

Так что это хорошая идея, чтобы заблокировать один из двух. Самая простая вещь заключается в следующем:

  1. Во-первых, убедитесь, что диапазоны, из которых они рисуют адреса , не перекрываются : у вас может быть 192.168.1.11-74 для одного, 192.168.1.139-202 для другого. По крайней мере, это предотвращает конфликты.

  2. Теперь мы запрещаем AP предоставлять IP-адреса проводным клиентам. Предположим, что точка доступа подключена к Raspberry на eth1 , тогда будет работать следующая команда:

    sudo iptables  -A INPUT -i eth1 -p udp --dport 67:68 --sport 67:68 -j DROP
    sudo iptables  -A OUTPUT -i eth1 -p udp --dport 67:68 --sport 67:68 -j DROP  
    

Мы сделали. Два комментария:

DHCP использует порты 67 и 68 по протоколу UDP; блокируя связь на них, вы не позволяете DHCP-запросам от проводных клиентов достигать DHCP-сервера на AP; таким образом, проводные клиенты будут обслуживаться только малиной.

Во-вторых, вы должны подключить точку доступа непосредственно к Raspberry (я знаю, что у RasPberry есть только один Ethernet-порт, который уже используется: вы можете купить адаптер USB-Ethernet, и у вашей RasPberry будет вторая Ethernet-карта). Причина в том, что если вы подключите точку доступа к коммутатору, то запросы и ответы DHCP будут поступать / приходить от точки доступа без прохождения через малину, поэтому команда iptables будет просто бесполезна.

РЕДАКТИРОВАТЬ:

Я забыл сказать, что приведенное выше правило iptables также предотвращает передачу запросов dhcp от точки доступа к малине, так что теперь у вас есть ситуация, когда адрес DHCP в диапазоне 192.168.1.0xx передается малиной проводным клиентам, в то время как адреса в диапазоне 192.168.1.1xx предоставляются AP клиентам wifi. По крайней мере, это организованно.

MariusMatutiae
источник
Спасибо! Но это означает, что я ничего не могу сказать о клиентах, подключенных через Wi-Fi к точке доступа, верно?
Бонанза
2
@bonanza Боюсь, что так: весь трафик от беспроводных клиентов до Ap никогда не проходит через малину, ни запросы, ни ответы. Таким образом, нет никакого способа заблокировать это: все имеет место в AP.
MariusMatutiae