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-адрес.

Другие вопросы по тегам