Я создаю кикстарт-сеть, которая находится в другой 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.