Не могу понять полную логику как должен работать DHCP сервер. Начну с начала...
У меня есть UBUNTU server 18.10. На нём две сетевые карты. Настроил я сетевой интерфейс(netplan) вот так:
network:
ethernets:
ens32:
addresses: [192.168.0.35/24, ]
gateway4: 192.168.0.3
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
dhcp4: no
enp2s1: {}
version: 2
vlans:
v10:
id: 10
link: enp2s1
adresses: [192.168.10.3/24]
vlans:
v20:
id: 20
link: enp2s1
adresses: [192.168.20.3/24]
vlans:
v30:
id: 30
link: enp2s1
adresses: [192.168.30.3/24]
Потом я разрешил пересылку пакетов между интерфейсами открыв:
sudo gedit /etc/sysctl.conf
И добавил туда строчку:
net.ipv4.ip_forward=1
В iptables запретил пересылку между VLAN:
iptables -i forward -S 192.168.10.0/24 -d 192.168.20.0/24 -j DROP
iptables -i forward -S 192.168.20.0/24 -d 192.168.10.0/24 -j DROP
И так со всеми VLAN.
Ну и что бы интернет у меня работал во всех VLAN:
iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE
Для vlan v10 основной шлюз 192.168.10.3.
Для vlan v20 основной шлюз 192.168.20.3.
Для vlan v30 основной шлюз 192.168.30.3.
Рядом стоит коммутатор Dlink des 3200-26. На нём настроены аналогичные vlan и к нему подключается клиенты, а он уже через тегированный порт подключён к серверу.
И все довольны. VLANы изолированны друг от друга, все в интернете.
Появилась задача настроить DHCP сервер для VLAN v10 и v20.
Делаю это так. Настраиваю интерфейсы:
vim /etc/default/isc-dhcp-server
Добавляю в файл:
INTERFACESv4="v10 v20"
Потом открываю:
vim /etc/dhcp/dhcpd.conf
И привожу его к такому виду:
#v10
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.5 192.168.10.100;
option domain-name-servers 8.8.8.8, 4.4.8.8;
option domain-name "service.loc";
option routers 192.168.10.3;
option broadcast-address 192.168.10.255;
default-lease-time 600;
max-lease-time 7200;
v20
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.5 192.168.20.100;
option domain-name-servers 8.8.8.8, 4.4.8.8;
option domain-name "office.loc";
option routers 192.168.10.3;
option broadcast-address 192.168.20.255;
default-lease-time 600;
max-lease-time 7200;
Закрываю, сохраняю. Перезапускаю DHCP:
/etc/init.d/isc-dhcp-server restart
Линукс пишет [ok], но DHCP не работает. И я не могу понять почему. Пробовал открывать 67 и 68 порты. Делал это так:
iptables -I INPUT -p udp --dport 67 -j ACCEPT
iptables -I OUTPUT -o udp --dport 67 -j ACCEPT
iptables -I INPUT -p udp --dport 68 -j ACCEPT
iptables -I OUTPUT -o udp --dport 68 -j ACCEPT
DHCP не работает. Я не понимаю правильно ли я настроит интерфейсы в /etc/default/isc-dhcp-server.
Как линукс понимает на какой интерфейс дать DHCP, а на какой нет? Интуитивно получается что он анализирует подсеть и понимает какая подсеть к какому интерфейсу относится.
На коммутаторе основной шлюз настроен 192.168.0.35 то есть это ens32 который смотрит в интернет. Когда пользователь отправляет DHCPDISCOVER коммутатор должен отправить его на основной шлюз, так как больше некуда, и я так понимаю он отправляет его на ens32. Если это так то какой основной шлюз тогда указывать, если для каждого VLANа он свой? Помогите пожалуйста разобраться, понять логику и настроить это по уму.