Назад | Перейти на главную страницу

Два DHCP-сервера, заблокировать клиентов для одного из них?

Я создаю кикстарт-сеть, которая находится в другой VLAN и использует собственный DHCP-сервер. По какой-то причине мои кикстарт-клиенты продолжали назначать IP-адреса с моего основного DHCP-сервера.

Я настроил это так, что у меня есть основной DHCP-сервер на этом маршрутизаторе:

192.168.15.1

К этому DHCP-серверу подключен коммутатор с IP-адресом 192.168.15.2. Мой сервер кикстарта (Scientific Linux) подключен к этому коммутатору через два порта:

Порт 2 - где сервер кикстарта обменивается данными с остальной частью производственной сети через eth0. IP-адрес, назначенный серверу на этом интерфейсе, - 192.168.15.100 (на eth0). Детали:

Interface: eth0
IP: 192.168.15.100
Netmask: 255.255.255.0
Gateway: 192.168.15.1

Порт 7 - имеет собственный идентификатор VLAN (вместе с портом 8). Сервер кикстарта подключен к этому порту с IP-адресом 172.16.15.100 (на eth1). Опять же, подробности:

Interface: eth1
IP: 172.16.15.100
Netmask: 255.255.255.0
Gateway: none

Сервер кикстарта запускает свой собственный DHCP-сервер и назначает их по протоколу eth1. Большинство запусков кикстарта осуществляется через VLAN кикстарта через порт 8. Чтобы сервер DHCP кикстарта не назначал адреса в производственной сети, у меня настроен такой маршрут:

route add -host 255.255.255.255 dev eth1

На этом этапе клиенты продолжали получать назначенные IP-адреса от DHCP-сервера 192.168.15.1. Мне нужно найти способ заблокировать доступ клиентских запросов к этому DHCP. Следует отметить, что, но я также создаю хосты KVM на сервере кикстарта, поэтому мне нужны эти KVM, чтобы иметь возможность получать запросы DHCP от сервера 192.168.15.1 через мостовую сеть, как только я закончу решение этой конкретной проблемы. (В настоящее время они общаются через NAT).

Итак, что нужно сделать, чтобы решить эту проблему? Через iptables или какую-то маршрутизацию мне нужно поставить?

Я попытался ограничиться запросами через IPtables на этом интерфейсе, разрешив запросы DHCP для сети 172.16.15.x:

-A INPUT -i eth1 -s 172.16.15.0/24 -p udp -m udp --dport 69 -j ACCEPT
-A INPUT -i eth1 -s 172.16.15.0/24 -p tcp -m tcp --dport 69 -j ACCEPT
-A INPUT -i eth1 -s 172.16.15.0/24 -p udp -m udp --dport 68 -j ACCEPT
-A INPUT -i eth1 -s 172.16.15.0/24 -p tcp -m tcp --dport 68 -j ACCEPT
-A INPUT -i eth1 -s 172.16.15.0/24 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i eth1 -s 172.16.15.0/24 -p tcp -m tcp --dport 67 -j ACCEPT

И отклоняет назначения на eth1 из сети 192.168.15.x:

-A FORWARD -o eth1 -s 192.168.15.0/24 -p udp -m udp --dport 69 -j REJECT
-A FORWARD -o eth1 -s 192.168.15.0/24 -p tcp -m tcp --dport 69 -j REJECT
-A FORWARD -o eth1 -s 192.168.15.0/24 -p udp -m udp --dport 68 -j REJECT
-A FORWARD -o eth1 -s 192.168.15.0/24 -p tcp -m tcp --dport 68 -j REJECT
-A FORWARD -o eth1 -s 192.168.15.0/24 -p udp -m udp --dport 67 -j REJECT
-A FORWARD -o eth1 -s 192.168.15.0/24 -p tcp -m tcp --dport 67 -j REJECT

Нет. :(

Хорошо, я понял это - я не отключил vlan по умолчанию, из-за чего трафик из vlan по умолчанию перетекает в мой кикстарт vlan.

Это было исправлено. Назначения DHCP больше не работают на этих портах, но, по крайней мере, я теперь знаю проблему. :)

Я рад, что вы решили проблему с VLAN, но вам может быть интересно узнать, что вы можете использовать ebtables для фильтрации трафика DHCP.

Например, если у вас есть два DHCP-сервера в двух разных локальных сетях, соединенных устройством tap0 на сервере Linux, вы можете изолировать их и по-прежнему поддерживать поток TCP / IP и ARP-трафика, запустив:

modprobe ebtables && modprobe ebtable_filter && modprobe ebt_ip
ebtables -A INPUT --in-interface tap0 \
   --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP
ebtables -A INPUT --in-interface tap0 \
   --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 \
   -j DROP
ebtables -A FORWARD --in-interface tap0 \
   --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 \
   -j DROP
ebtables -A FORWARD --in-interface tap0 \
   --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP

В этом примере вы должны запускать ebtables на обоих концах, чтобы не тратить впустую полосу пропускания, но только один из них решит проблему DHCP.