Las actualizaciones DDNS de la zona directa de múltiples servidores siempre envían la misma interfaz de red

Las actualizaciones DDNS de la zona directa de múltiples servidores siempre envían la misma interfaz de red

Tengo un servidor multitarjeta 'dhcp1' con interfaces de red '192.168.10.151' (eth0) y '192.168.0.151' (eth1). La máquina está intentando utilizar DDNS con un servidor de nombres 'ns1' que tiene interfaces de red '192.168.10.131' (eth0) y '192.168.0.131' (eth1). Con suerte, estas son las secciones relevantes de mi dhcpd.conf:

ddns-update-style interim;

key DHCP_UPDATER {
    algorithm HMAC-MD5;
    secret "A6...==";
};

# The 'private' network.
subnet 192.168.10.0 netmask 255.255.255.0 {
  zone example.com. {
    primary 192.168.10.131;
    key DHCP_UPDATER;
  }

  zone 10.168.192.in-addr.arpa. {
    primary 192.168.10.131;
    key DHCP_UPDATER;
  }

  ddns-domainname "example.com.";
  ddns-rev-domainname "in-addr.arpa.";
  option domain-name "example.com";

  host client-private {
    hardware ethernet ...;
    fixed-address 192.168.10.13;
  }
  ...
}

# The 'public' network.
subnet 192.168.0.0 netmask 255.255.255.0 {
  zone example.com. {
    primary 192.168.0.131;
    key DHCP_UPDATER;
  }

  zone 0.168.192.in-addr.arpa. {
    primary 192.168.0.131;
    key DHCP_UPDATER;
  }

  ddns-domainname "example.com.";
  ddns-rev-domainname "in-addr.arpa.";
  option domain-name "example.com";

  host client-public {
    hardware ethernet ...;
    fixed-address 192.168.0.13;
  }
  ...
}

El servidor 'ns1' ejecuta dos instancias de 'named': una escucha en las interfaces de bucle invertido y de red privada, mientras que la otra instancia escucha en la interfaz pública.

Al iniciar la primera instancia se obtiene:

May 10 01:24:32 ns1 named[6610]: starting BIND 9.8.1-P1 -u bind
May 10 01:24:32 ns1 named[6610]: built with '--prefix=/usr' '--mandir=/usr/share/man'     '--infodir=/usr/share/info' '--sysconfdir=/etc/bind' '--localstatedir=/var' '--enable-threads' '--enable-largefile' '--with-libtool' '--enable-shared' '--enable-static' '--with-openssl=/usr' '--with-gssapi=/usr' '--with-gnu-ld' '--with-geoip=/usr' '--enable-ipv6' 'CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro' 'CPPFLAGS=-D_FORTIFY_SOURCE=2'
May 10 01:24:32 ns1 named[6610]: adjusted limit on open files from 4096 to 1048576
May 10 01:24:32 ns1 named[6610]: found 2 CPUs, using 2 worker threads
May 10 01:24:32 ns1 named[6610]: using up to 4096 sockets
May 10 01:24:32 ns1 named[6610]: loading configuration from '/etc/bind/named.conf'
May 10 01:24:32 ns1 named[6610]: reading built-in trusted keys from file '/etc/bind/bind.keys'
May 10 01:24:32 ns1 named[6610]: using default UDP/IPv4 port range: [1024, 65535]
May 10 01:24:32 ns1 named[6610]: using default UDP/IPv6 port range: [1024, 65535]
May 10 01:24:32 ns1 named[6610]: listening on IPv4 interface lo, 127.0.0.1#53
May 10 01:24:32 ns1 named[6610]: listening on IPv4 interface eth0, 192.168.10.131#53
May 10 01:24:32 ns1 named[6610]: generating session key for dynamic DNS
May 10 01:24:32 ns1 named[6610]: sizing zone task pool based on 7 zones
May 10 01:24:32 ns1 named[6610]: set up managed keys zone for view _default, file 'managed-keys.bind'
May 10 01:24:32 ns1 named[6610]: Warning: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 254.169.IN-ADDR.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 2.0.192.IN-ADDR.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 100.51.198.IN-ADDR.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 113.0.203.IN-ADDR.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: D.F.IP6.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 8.E.F.IP6.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 9.E.F.IP6.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: A.E.F.IP6.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: B.E.F.IP6.ARPA
May 10 01:24:32 ns1 named[6610]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
May 10 01:24:32 ns1 named[6610]: command channel listening on 127.0.0.1#953
May 10 01:24:32 ns1 named[6610]: couldn't add command channel ::1#953: address not available
May 10 01:24:32 ns1 named[6610]: zone 0.in-addr.arpa/IN: loaded serial 1
May 10 01:24:32 ns1 named[6610]: zone 127.in-addr.arpa/IN: loaded serial 1
May 10 01:24:32 ns1 named[6610]: zone 10.168.192.in-addr.arpa/IN: loaded serial 2013092337
May 10 01:24:32 ns1 named[6610]: zone 255.in-addr.arpa/IN: loaded serial 1
May 10 01:24:32 ns1 named[6610]: zone localhost/IN: loaded serial 2
May 10 01:24:32 ns1 named[6610]: zone example.com/IN: loaded serial 2013092554
May 10 01:24:32 ns1 named[6610]: managed-keys-zone ./IN: loaded serial 59
May 10 01:24:32 ns1 named[6610]: zone example.com/IN: sending notifies (serial 2013092554)
May 10 01:24:32 ns1 named[6610]: zone 10.168.192.in-addr.arpa/IN: sending notifies (serial 2013092337)
May 10 01:24:32 ns1 named[6610]: running

Al iniciar la segunda instancia se obtiene:

May 10 01:24:54 ns1 named[6635]: starting BIND 9.8.1-P1 -u bind -c /etc/bind/named-1.conf
May 10 01:24:54 ns1 named[6635]: built with '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sysconfdir=/etc/bind' '--localstatedir=/var' '--enable-threads' '--enable-largefile' '--with-libtool' '--enable-shared' '--enable-static' '--with-openssl=/usr' '--with-gssapi=/usr' '--with-gnu-ld' '--with-geoip=/usr' '--enable-ipv6' 'CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro' 'CPPFLAGS=-D_FORTIFY_SOURCE=2'
May 10 01:24:54 ns1 named[6635]: adjusted limit on open files from 4096 to 1048576
May 10 01:24:54 ns1 named[6635]: found 2 CPUs, using 2 worker threads
May 10 01:24:54 ns1 named[6635]: using up to 4096 sockets
May 10 01:24:54 ns1 named[6635]: loading configuration from '/etc/bind/named-1.conf'
May 10 01:24:54 ns1 named[6635]: reading built-in trusted keys from file '/etc/bind/bind.keys'
May 10 01:24:54 ns1 named[6635]: using default UDP/IPv4 port range: [1024, 65535]
May 10 01:24:54 ns1 named[6635]: using default UDP/IPv6 port range: [1024, 65535]
May 10 01:24:54 ns1 named[6635]: listening on IPv4 interface eth1, 192.168.0.131#53
May 10 01:24:54 ns1 named[6635]: generating session key for dynamic DNS
May 10 01:24:54 ns1 named[6635]: sizing zone task pool based on 7 zones
May 10 01:24:54 ns1 named[6635]: set up managed keys zone for view _default, file 'managed-keys.bind'
May 10 01:24:54 ns1 named[6635]: Warning: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 254.169.IN-ADDR.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 2.0.192.IN-ADDR.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 100.51.198.IN-ADDR.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 113.0.203.IN-ADDR.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: D.F.IP6.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 8.E.F.IP6.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 9.E.F.IP6.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: A.E.F.IP6.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: B.E.F.IP6.ARPA
May 10 01:24:54 ns1 named[6635]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
May 10 01:24:54 ns1 named[6635]: command channel listening on 192.168.0.131#953
May 10 01:24:54 ns1 named[6635]: zone 0.in-addr.arpa/IN: loaded serial 1
May 10 01:24:54 ns1 named[6635]: zone 127.in-addr.arpa/IN: loaded serial 1
May 10 01:24:54 ns1 named[6635]: zone 0.168.192.in-addr.arpa/IN: loaded serial 2013092346
May 10 01:24:54 ns1 named[6635]: zone 255.in-addr.arpa/IN: loaded serial 1
May 10 01:24:54 ns1 named[6635]: zone localhost/IN: loaded serial 2
May 10 01:24:54 ns1 named[6635]: zone example.com/IN: loaded serial 2013092573
May 10 01:24:54 ns1 named[6635]: managed-keys-zone ./IN: loaded serial 59
May 10 01:24:54 ns1 named[6635]: zone example.com/IN: sending notifies (serial 2013092573)
May 10 01:24:54 ns1 named[6635]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 2013092346)
May 10 01:24:54 ns1 named[6635]: running

Todas las máquinas son virtuales y utilizan Ubuntu Server 12.04.

El problema

Mi expectativa es que cuando el cliente solicite una dirección IP en la red privada, 'dhcp1' actualizará 'ns1' en la interfaz privada correspondiente (es decir, '192.168.10.131'). También espero que 'dhcp1' actualice 'ns1' en la interfaz pública '192.168.0.131' cuando el cliente solicite una dirección IP en esa red. Aunque las actualizaciones de la zona inversa ocurren en las respectivas interfaces, 'dhcp1' siempre inicia las actualizaciones de la zona directa de ambas redes en la interfaz pública del servidor de nombres (es decir, '192.168.0.131).

¿Estoy haciendo algo mal? ¿Es esto un error en isc-dhcp-server, una característica, etc.? Si no he proporcionado suficiente información específica, hágamelo saber. Las búsquedas web sobre un enfoque de múltiples servidores utilizando isc-dhcp-server y bind9 no me han devuelto mucho.

Cualquier información que pueda proporcionar se agradece. Gracias.

Respuesta1

Parece que las zonas deben ser únicas dentro de la configuración.

No pude encontrar esto en las dhcpd.confpáginas de manual, pero buscar en el código y jugar con la configuración me da una idea de la implementación del servidor:

  • El código de análisis 'dhcpd' llega al primer "ejemplo.com". zona ubicada en la subred '192.168.10.0' de 'dhcpd.conf' y agrega la información (incluido el servidor de nombres principal) a un mapa hash, utilizando el nombre de la zona como clave.
  • Más tarde, el análisis llega al segundo "ejemplo.com". zona ubicada en la 192.168.0.0subred. En este punto, el "ejemplo.com" existente. Los datos de la zona del mapa hash se reemplazan con la nueva información, incluido el servidor de nombres principal. Como las zonas inversas son únicas, cada una se agrega al mapa.
  • Una vez que el servidor DHCP necesita actualizar la información de la zona de reenvío para cualquiera de las subredes, las actualizaciones se envían al servidor de nombres principal de la última subred analizada; en este caso, el servidor DNS 192.168.0.131.

Reorganizar la información de la subred en el archivo de configuración parece confirmar esto, ya que todas las actualizaciones de la zona de reenvío se enviaron a 192.168.10.131. Por lo tanto, mi configuración puede requerir un dhcpddemonio separado para cada interfaz como lo hice para named. Todavía tengo curiosidad por saber si este enfoque de múltiples servidores para redes de alta disponibilidad es común y si lo estoy haciendo correctamente. Aunque mi pregunta parece tener respuesta, cualquier consejo es bienvenido.

información relacionada