
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