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

DHCP-сервер ISC прослушивает виртуальный интерфейс

У меня работает DHCP-сервер ISC 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. **

Поискав в Интернете, я нашел ветку (Псевдонимы сетевых интерфейсов и dhcp-сервер isc), и ответ Zoredache побудил меня попробовать его без виртуального интерфейса. Я настроил его, и ip addr show показывает, что интерфейс есть (но ifconfig этого не делает - стоит ли мне беспокоиться?).

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.

Есть идеи, что я делаю неправильно?

Хорошо, я разобрался. Если одному интерфейсу назначено более одного 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-адрес.