ISC DHCP-сервер прослушивает виртуальный интерфейс
У меня работает ISC DHCP-сервер 4.2.2 (Debian Wheezy). Мне нужно добавить вторую область для неизвестных клиентов, которая дает им фиктивный адрес (в основном для устранения неполадок). Тем не менее, ничего, что я пытаюсь, кажется, работает Усеченный файл dhcpd4.conf ниже с новым объявлением подсети ниже.
subnet 10.111.111.0 netmask 255.255.255.0 {
range 10.111.111.5 10.111.111.250;
allow unknown-clients;
}
subnet 192.168.XXX.0 netmask 255.255.255.0 {
range 192.168.XXX.194 192.168.XXX.200;
range 192.168.XXX.100 192.168.XXX.109;
range 192.168.XXX.215 192.168.XXX.250;
ignore unknown-clients;
option routers 192.168.XXX.XXX;
<lots more options>
}
Я знаю, что сервер DHCP будет игнорировать подсеть 10.111.111.0, если у него нет интерфейса с IP-адресом в этой подсети, поэтому я сначала попробовал виртуальную. В /etc/network/interfaces я добавил:
up ip addr add 10.111.111.1/24 dev eth0 label eth0:1
Затем поднял интерфейс. ifconfig подтвердил, что это было. Затем я добавил eth0:1 в /etc/default/isc-dhcp-server:
INTERFACES="eth0 eth0:1"
Затем я перезапустил сервер DHCP, но получил только следующее:
...WARNING: Host declarations are global. They are not limited to the scope you declared them in.
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 53 leases to leases file.
Listening on LPF/eth0/00:50:XX:XX:XX:71/192.168.220.0/24
Sending on LPF/eth0/00:50:XX:XX:XX:71/192.168.220.0/24
Sending on Socket/fallback/fallback-net
Прослушивание 192.168.220.0, но не прослушивание 10.111.111.0. Затем я попробовал более явную командную строку:
/usr/sbin/dhcpd -cf /etc/dhcp/dhcpd4.conf eth0:1
Но это только дало мне
No subnet declaration for eth0:1 (no IPv4 addresses).
** Ignoring requests on eth0:1. If this is not what
you want, please write a subnet declaration
in your dhcpd.conf file for the network segment
to which interface eth0:1 is attached. **
Поискав в Интернете, я нашел поток ( сетевые интерфейсы с псевдонимами и сервер isc dhcp), и ответ Zoredache заставил меня попробовать его без виртуального интерфейса. Я настроил его, и ip addr show показывает, что интерфейс есть (но если config нет - следует ли мне беспокоиться?).
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:XX:XX:XX:71 brd ff:ff:ff:ff:ff:ff
inet 192.168.XXX.XXX/24 brd 192.168.220.255 scope global eth0
inet 10.111.111.1/24 scope global eth0
inet 192.168.XXX.XXX/24 scope global secondary eth0:0
Однако после перезапуска сервера DHCP я не получаю прослушивание сообщения 10.111.111.1, а просто прослушивание 192.168.XXX.XXX.
Есть идеи, что я делаю не так?
1 ответ
Хорошо, я понял это. Если у вас несколько IP-адресов, назначенных одному и тому же интерфейсу, все объявления подсети должны быть сгруппированы в другое объявление. Например, машина Linux имеет 192.168.1.1 и 10.10.10.1 (оба /24) IP-адреса на eth0. Тогда простой объем будет:
shared-network mynet {
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.5 10.10.10.250;
allow unknown-clients;
}
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.194 192.168.1.200;
ignore unknown-clients;
}
}
Общая сеть {} должна быть в обеих декларациях подсети. Затем, когда вы запускаете сервер dhcp, он говорит, что прослушивает mynet, а не ip-адрес.