Muchos de los sysadmins en algún momento debemos configurar un Bind o Servidor DNS, hoy les quiero mostrar como configurar el mismo para que haga la función de DNS Externo de su red y a la vez que tenga Delegación de Zona con vistas.
Partimos de que tenemos 2 enlaces uno nacional y uno internacional, en caso de que solo tengas uno solo tienes que obviar la parte de las vista del DNS.
Domain dominio.cu Enlace Internet 200.55.1.0/29 Enlace Nacional 190.6.2.184/29 IP DNS externo(DMZ) 10.11.10.201
DNS ns1.dominio.cu y ns2.dominio.cu
Como notaran puse que el enlace nacional en vez de empezar en 0 espesara un 4, para que puedan entender bien como es la delegación.
Lo primero antes de llamar a ETECSA o a su ISP y solicitar la delegación del dominio y su zona ip debes tener bien tu DNS externo bien configurado.
Instalación del bind
apt install bind9
Como vamos a poner la vista nacional creamos el archivo
touch /etc/bind/named.conf.cuba
Agregamos la carga del archivo al bind
touch /etc/bind/named.conf nano /etc/bind/named.conf
include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.internet"; include "/etc/bind/named.conf.cuba";
Ahora editamos la vista de Internet
touch /etc/bind/named.conf.internet nano /etc/bind/named.conf.internet
view all { match-clients { any; }; zone "dominio.cu" { type master; file "/etc/bind/dominio.cu.zone"; }; zone "1.55.200.in-addr.arpa" IN { type master; file "/etc/bind/dominio.cu.reverse1.zone"; }; zone "0/29.1.55.200.in-addr.arpa" IN { type master; file "/etc/bind/dominio.cu.reverse2.zone"; }; zone "2.6.190.in-addr.arpa" IN { type master; file "/etc/bind/dominio.cu.reverse3.zone"; }; zone "184/29.2.6.190.in-addr.arpa" IN { type master; file "/etc/bind/dominio.cu.reverse4.zone"; }; };
Ahora editamos la vista de cuba
touch /etc/bind/named.conf.cuba nano /etc/bind/named.conf.cuba
acl cuba { 152.206.0.0/15; 169.158.0.0/16; 181.225.224.0/19; 190.6.64.0/19; 190.15.144.0/20; 190.92.112.0/20; 190.107.0.0/20; 196.1.112.0/24; 196.1.135.0/24; 196.3.152.0/24; 200.0.16.0/24; 200.0.24.0/22; 200.5.12.0/22; 200.13.144.0/21; 200.14.48.0/21; 200.55.128.0/18; 201.220.192.0/19; }; view cuba { match-clients { cuba; }; zone "dominio.cu" { type master; file "/etc/bind/dominio.cu.zone.cuba"; }; zone "1.55.200.in-addr.arpa" IN { type master; file "/etc/bind/dominio.cu.reverse1.zone"; }; zone "0/29.1.55.200.in-addr.arpa" IN { type master; file "/etc/bind/dominio.cu.reverse2.zone"; }; zone "2.6.190.in-addr.arpa" IN { type master; file "/etc/bind/dominio.cu.reverse3.zone"; }; zone "184/29.2.6.190.in-addr.arpa" IN { type master; file "/etc/bind/dominio.cu.reverse4.zone"; }; };
Notaran que se mantuvo la misma configuración de las inversa de los ips ya que como tal eso no cambia, de cambiar es simplemente crear un archivo distino.
Configuramos la seguridad y logs del servicio
touch /etc/bind/named.conf.options nano /etc/bind/named.conf.options
options { allow-query { cuba; any;}; allow-query-cache { cuba; any;}; allow-recursion { none; }; allow-transfer { none;}; auth-nxdomain no; dnssec-enable yes; dnssec-validation yes; directory "/var/cache/bind"; listen-on { 10.11.10.201; 127.0.0.1;}; listen-on-v6 { none; }; version "unknown"; notify no; empty-zones-enable no; //Protecciones anti-ddos rate-limit { slip 2; // Every other response truncated window 15; // Seconds to bucket responses-per-second 5; // # of good responses per prefix-length/sec referrals-per-second 5; // referral responses nodata-per-second 5; // nodata responses nxdomains-per-second 5; // nxdomain responses errors-per-second 5; // error responses all-per-second 20; // When we drop all log-only no; // Debugging mode qps-scale 250; // x / query rate * per-second // = new drop limit exempt-clients {127.0.0.1; 10.11.8.0/24;}; ipv4-prefix-length 24; // Define the IPv4 block size max-table-size 20000; // 40 bytes * this number = max memory min-table-size 500; // pre-allocate to speed startup }; }; logging { channel err { file "/var/log/bind9/bind.err"; severity error; print-time yes; print-category yes; print-severity yes; }; channel info { file "/var/log/bind9/bind.info"; severity info; print-time yes; print-category yes; print-severity yes; }; channel warn { file "/var/log/bind9/bind.warn"; severity warning; print-time yes; print-category yes; print-severity yes; }; channel log { file "/var/log/bind9/bind.log"; severity debug 1; print-time yes; print-category yes; print-severity yes; }; category default { err; info; warn; log; }; };
Ya una vez creado estos archivos pasamos a la creación de las carpetas de los logs, seguidamente la zona de cada vista
mkdir -p /var/log/bind9 mkdir -p /var/cache/bind/ chown -R bind /var/log/bind9/ chown -R bind /var/cache/bind/
touch /etc/bind/dominio.cu.zone touch /etc/bind/dominio.cu.zone.cuba touch /etc/bind/dominio.cu.reverse1.zone touch /etc/bind/dominio.cu.reverse2.zone touch /etc/bind/dominio.cu.reverse3.zone touch /etc/bind/dominio.cu.reverse4.zone
Pasamos a configurar la Zona de Internet
nano /etc/bind/dominio.cu.zone
$ORIGIN dominio.cu. $TTL 7200 @ IN SOA ns1.dominio.cu. sysadmin.dominio.cu. ( 2018041801 ; serial number 3600 ; refresh 900 ; retry 1209600 ; expire 7200 ; ttl ) ; Name servers IN NS ns1.dominio.cu. IN NS ns2.dominio.cu. ; MX records IN MX 10 mail.dominio.cu. ; TXT records IN TXT "v=spf1 a mx -all" IN TXT "Empresa de Administradores Cuba" IN TXT "Adress: El patio de mi casa es particular" IN TXT "GPS: 22.3026414,-80.9802364" IN TXT "IT Support: menganitoperes" IN TXT "Voice: +53-(PROVINCIA)TELEFONO" IN TXT "E-Mail: [email protected]" ; SRV records _jabber._tcp.dominio.cu. IN SRV 5 0 5269 jabber.dominio.cu. _xmpp-server._tcp.dominio.cu. IN SRV 5 0 5269 jabber.dominio.cu. _conference._tcp.dominio.cu. IN SRV 5 0 5269 jabber.dominio.cu. _xmpp-client._tcp.dominio.cu. IN SRV 5 0 5269 jabber.dominio.cu. _submission._tcp.dominio.cu. IN SRV 5 0 587 mail.dominio.cu. _pop3s._tcp.dominio.cu. IN SRV 0 1 995 mail.dominio.cu. _imaps._tcp.dominio.cu. IN SRV 5 0 993 mail.dominio.cu. _caldavs._tcp.dominio.cu. IN SRV 5 0 443 mail.dominio.cu. ; Lets Encrypt records _acme-challenge.dominio.cu. IN TXT "kzVNNLb5zvWxxiW30WbdD54OMYO5gbXRmqmpKPHihmQ" ; DKIM records _domainkey.dominio.cu. IN TXT "o=~" _adsp._domainkey.dominio.cu. IN TXT "dkim=unknown" mail._domainkey.dominio.cu. IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA43OObSbPwrEb2FuHpjYAkeGftJEA8zLW9jYB4SdscFBoRfD/XlQ+/40JkcbYeEifInSD/rteWYPnTBYHqfooF5QPAUtl0qzU2/Udi2CAROaImFt1MLJySTY6wVcVae0KRWc5EkRuUmyeqXYQjrhCK6mFhhjhGcOV5YsIb1uD2mqcm7C658Bmtkuc/1559W+CC+QGJ1ck3VkpWn" "E0kAVWUD0leIYFhBj2/Yy2iCtvXDAVnAsSS/RFuleU9lbAt7ty7+cNOw0dAxqYwvbKUoF+rgTk2NC+K6TIUBY2gV5QNT2ris59j8x7a0nYsEHtTjIERxdXo0gf2wtBmJVdDAysbQIDAQAB" ) ; DMARC records _dmarc.dominio.cu. IN TXT "v=DMARC1; p=none; adkim=r; aspf=r; rf=afrf; sp=none" ; CNAME ns IN CNAME ns1 smtp IN CNAME mail pop IN CNAME mail pop3 IN CNAME mail imap IN CNAME mail ; A records ns1 IN A 200.55.1.2 ns2 IN A 190.6.2.186 mail IN A 200.55.1.3 jabber IN A 200.55.1.2 ; Additional A records @ IN A 200.55.1.2 www IN A 200.55.1.2
Pasamos a configurar la Zona de Cuba
nano /etc/bind/dominio.cu.zone.cuba
$ORIGIN dominio.cu. $TTL 7200 @ IN SOA ns2.dominio.cu. sysadmin.dominio.cu. ( 2018041801 ; serial number 3600 ; refresh 900 ; retry 1209600 ; expire 7200 ; ttl ) ; Name servers IN NS ns1.dominio.cu. IN NS ns2.dominio.cu. ; MX records IN MX 10 mail.dominio.cu. ; TXT records IN TXT "v=spf1 a mx -all" IN TXT "Empresa de Administradores Cuba" IN TXT "IT Support: menganitoperes" IN TXT "Voice: +53-(PROVINCIA)TELEFONO" IN TXT "E-Mail: [email protected]" ; SRV records _jabber._tcp.dominio.cu. IN SRV 5 0 5269 jabber.dominio.cu. _xmpp-server._tcp.dominio.cu. IN SRV 5 0 5269 jabber.dominio.cu. _conference._tcp.dominio.cu. IN SRV 5 0 5269 jabber.dominio.cu. _xmpp-client._tcp.dominio.cu. IN SRV 5 0 5269 jabber.dominio.cu. _submission._tcp.dominio.cu. IN SRV 5 0 587 mail.dominio.cu. _pop3s._tcp.dominio.cu. IN SRV 0 1 995 mail.dominio.cu. _imaps._tcp.dominio.cu. IN SRV 5 0 993 mail.dominio.cu. _caldavs._tcp.dominio.cu. IN SRV 5 0 443 mail.dominio.cu. ; Lets Encrypt records _acme-challenge.dominio.cu. IN TXT "kzVNNLb5zvWxxiW30WbdD54OMYO5gbXRmqmpKPHihmQ" ; DKIM records _domainkey.dominio.cu. IN TXT "o=~" _adsp._domainkey.dominio.cu. IN TXT "dkim=unknown" mail._domainkey.dominio.cu. IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA43OObSbPwrEb2FuHpjYAkeGftJEA8zLW9jYB4SdscFBoRfD/XlQ+/40JkcbYeEifInSD/rteWYPnTBYHqfooF5QPAUtl0qzU2/Udi2CAROaImFt1MLJySTY6wVcVae0KRWc5EkRuUmyeqXYQjrhCK6mFhhjhGcOV5YsIb1uD2mqcm7C658Bmtkuc/1559W+CC+QGJ1ck3VkpWn" "E0kAVWUD0leIYFhBj2/Yy2iCtvXDAVnAsSS/RFuleU9lbAt7ty7+cNOw0dAxqYwvbKUoF+rgTk2NC+K6TIUBY2gV5QNT2ris59j8x7a0nYsEHtTjIERxdXo0gf2wtBmJVdDAysbQIDAQAB" ) ; DMARC records _dmarc.dominio.cu. IN TXT "v=DMARC1; p=none; adkim=r; aspf=r; rf=afrf; sp=none" ; CNAME ns IN CNAME ns1 smtp IN CNAME mail pop IN CNAME mail pop3 IN CNAME mail imap IN CNAME mail ; A records ns1 IN A 200.55.1.2 ns2 IN A 190.6.2.186 mail IN A 200.55.1.3 jabber IN A 190.6.2.186 ; Additional A records @ IN A 190.6.2.186 www IN A 190.6.2.186
Explicación de la zona:
- El SOA debe cumplir el formato de la rfc1982 podemos usar YEAR-MES-DIA-NUMERO es decir 2018041801, no debe pasarte de esta cantidad de caracteres.
- Los Registros SPF se pone el registro TXT correspondiente para nuestra red y algunas informaciones de nuestra empresa
- Los Registros SRV estan definidos cumpliendo las RFC internacionales, se ponen en caso de que se habré para la red externa el correo y el jabber
- Tambien ponemos en su momento el registro TXT que nos manda a crear cuando saquemos el certificado Wildcard de Let’s Encrypt
- Los Registros DKIM y DMARC son todos aquellos que se agregan cuando habilitamos esas comprobaciones en nuestro servidor de correo
- Notaran que de la vista de Internet a la Vista Nacional solo se cambia los datos del SOA y en los IPs, ya que lo que se hace establece que los servicios salgan por el IP nacional para optimizar el consumo de los enlaces, mantenimos el IP del servidor de correo para no tener conflicto
Pasamos a configurar las Zonas Inversa
nano /etc/bind/dominio.cu.reverse1.zone
$ORIGIN 1.55.200.in-addr.arpa. $TTL 7200 @ IN SOA ns1.dominio.cu. syadmin.dominio.cu. ( 2018041801 ; serial number 3600 ; refresh 900 ; retry 1209600 ; expire 7200 ; ttl ) ; Name servers IN NS ns1.dominio.cu. IN NS ns2.dominio.cu. ; CNAME records 2 IN CNAME 2.0/29.1.55.200.in-addr.arpa. 3 IN CNAME 3.0/29.1.55.200.in-addr.arpa.
nano /etc/bind/dominio.cu.reverse2.zone
$ORIGIN 0/29.1.55.200.in-addr.arpa. $TTL 7200 @ IN SOA ns1.dominio.cu. syadmin.dominio.cu. ( 2018041801 ; serial number 3600 ; refresh 900 ; retry 1209600 ; expire 7200 ; ttl ) ; Name servers IN NS ns1.dominio.cu. IN NS ns2.dominio.cu. ; PTR records 2 IN PTR ns1.dominio.cu. 3 IN PTR mail.dominio.cu.
nano /etc/bind/dominio.cu.reverse3.zone
$ORIGIN 2.6.190.in-addr.arpa. $TTL 7200 @ IN SOA ns1.dominio.cu. syadmin.dominio.cu. ( 2018041801 ; serial number 3600 ; refresh 900 ; retry 1209600 ; expire 7200 ; ttl ) ; Name servers IN NS ns1.dominio.cu. IN NS ns2.dominio.cu. ; CNAME records 186 IN CNAME 186.184/29.2.6.190.in-addr.arpa.
nano /etc/bind/dominio.cu.reverse4.zone
$ORIGIN 184/29.2.6.190.in-addr.arpa. $TTL 7200 @ IN SOA ns1.dominio.cu. syadmin.dominio.cu. ( 2018041801 ; serial number 3600 ; refresh 900 ; retry 1209600 ; expire 7200 ; ttl ) ; Name servers IN NS ns1.dominio.cu. IN NS ns2.dominio.cu. ; PTR records 186 IN PTR ns2.dominio.cu.
Comprobamos las configuraciones
named-checkconf -z /etc/bind/named.conf named-checkzone dominio.cu /etc/bind/dominio.cu.zone named-checkzone dominio.cu /etc/bind/dominio.cu.zone.cuba named-checkzone 1.55.200.in-addr.arpa /etc/bind/dominio.cu.reverse1.zone named-checkzone 0/29.1.55.200.in-addr.arpa /etc/bind/dominio.cu.reverse2.zone named-checkzone 2.6.190.in-addr.arpa /etc/bind/dominio.cu.reverse3.zone named-checkzone 184/29.2.6.190.in-addr.arpa /etc/bind/dominio.cu.reverse4.zone
Reiniciamos el Bind
service bind9 restart
Comprobacion del Servicio
Como lo dice esto es para comprobar que lo que hicimos lo hicimos bien y no un dedaso…
dig dominio.cu. @200.55.1.2 ANY +norec +short host -t any dominio.cu 200.55.1.2 nslookup -q=any dominio.cu 200.55.1.2 nslookup 200.55.1.2 200.55.1.2
Habilitar el inicio automatico de Bind
update-rc.d bind9 enable systemctl enable bind9
Recuerden dar los datos a su ISP a la hora de solicitar tu DNS, tienes que darle los fqdn y ip es decir
ns1.dominio.cu IN A 200.55.1.2
ns2.dominio.cu IN A 190.6.2.186
Y ya de esta tenemos el DNS listo para ser consultado por los DNS internacionales
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
No se si todavia estara el admin de aqui al tanto pero aqui va mi duda. Por que a los DNS de cara a internet tienen dos zonas inversas? Es obligatorio poner los CNAME esos en la zona inversa, no basta con los PTR?
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0
Buenas Noches
Tengo este problema como me pueden ayudar
named.service – BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2022-04-23 23:22:23 CDT; 7min ago
Docs: man:named(8)
Process: 6948 ExecStart=/usr/sbin/named -f $OPTIONS (code=exited, status=1/FAILURE)
Main PID: 6948 (code=exited, status=1/FAILURE)
Apr 23 23:22:23 named[6948]: command channel listening on 127.0.0.1#953
Apr 23 23:22:23 named[6948]: configuring command channel from ‘/etc/bind/rndc.key’
Apr 23 23:22:23 named[6948]: command channel listening on ::1#953
Apr 23 23:22:23 named[6948]: isc_stdio_open ‘/var/log/bind9/bind.err’ failed: permission denied
Apr 23 23:22:23 named[6948]: isc_stdio_open ‘/var/log/bind9/bind.err’ failed: permission denied
Apr 23 23:22:23 named[6948]: configuring logging: permission denied
Apr 23 23:22:23 named[6948]: loading configuration: permission denied
Apr 23 23:22:23 named[6948]: exiting (due to fatal error)
Apr 23 23:22:23 systemd[1]: named.service: Main process exited, code=exited, status=1/FAILURE
Apr 23 23:22:23 systemd[1]: named.service: Failed with result ‘exit-code’.
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0
Cuando hago la comprobación de los servicio como estan puesto me da este error
;; Connection to 190.225.250.120#53(190.225.250.120) for prueba.cu. failed: connection refused.
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36 OPR/70.0.3728.178
Pregunta, que puediera ser que tengo 3 servidores dns y solo en 2 me sale el spf y lo tengo bien declarado, la unica diferencia es en el que no me funciona tiene debian 9, los mx me funcionan ok..
Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0
Ojo, el tuto es con Debian, si usas ubuntu es lo mismo, pero… el directorio de los logs debe ser cambiado de /var/log/bind9 a /var/log/named porque ubuntu tiene una config de apparmor que restringe que sea ESE y solo ESE directorio.
Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0
Muy buen tutorial espero que hagas uno proximamente de como montar un mx con todo lo que tienes declarado en las zonadas del dns