Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalacao_configuracao_dhcp_dns_firewall_para_lan_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalação e configuração de servidor DHCP + DNS + Firewall da LAN + Debian Squeeze ======
  
 +
 +  * **Domínio que vamos utilizar:** douglasqsantos.com.br
 +  * **Faixa de ip:** 192.168.1.0/​24
 +  * **Ip do Servidor:** 192.168.1.35
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +Vamos atualizar os repositórios e fazer um upgrade do sistema ​
 +
 +
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +</​sxh>​
 +
 +Agora vamos instalar o bind 
 +
 +<sxh bash>
 +
 +aptitude install bind9 dnsutils -y
 +</​sxh>​
 +
 +Agora vamos parar ele para fazer algumas manutenções ​
 +
 +<sxh bash>
 +
 +/​etc/​init.d/​bind9 stop
 +</​sxh>​
 +
 +Vamos criar os diretorios necessários ​
 +
 +<sxh bash>
 +mkdir -p /​var/​lib/​named/​etc
 +mkdir -p /​var/​lib/​named/​dev
 +mkdir -p /​var/​lib/​named/​var/​log
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +mkdir -p /​var/​lib/​named/​var/​run/​bind/​run
 +mknod /​var/​lib/​named/​dev/​null c 1 3
 +mknod /​var/​lib/​named/​dev/​random c 1 8
 +mknod /​var/​lib/​named/​dev/​zero c 1 8
 +</​sxh>​
 +
 +Vamos acertar as permissões ​
 +
 +<sxh bash>
 +chmod 666 /​var/​lib/​named/​dev/​{null,​random,​zero}
 +chown -R bind:bind /​var/​lib/​named/​var/​*
 +</​sxh>​
 +
 +Vamos acertar a localização dos diretórios e as permissões ​
 +
 +
 +<sxh bash>
 +mv /etc/bind /​var/​lib/​named/​etc
 +ln -sf /​var/​lib/​named/​etc/​bind /etc/bind
 +cp /​etc/​localtime /​var/​lib/​named/​etc
 +chown -R bind:bind /​var/​lib/​named/​etc/​bind
 +chown -R root:bind /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +chmod -R 775 /​var/​lib/​named/​var/​cache/​bind/​dynamic
 +</​sxh>​
 +
 +Vamos fazer backup do arquivo de configuração
 +<sxh bash>
 +cp -Rfa /​etc/​default/​bind9{,​.bkp}
 +</​sxh>​
 +
 +Vamos informar para o bind aonde fica a jaula
 +<sxh bash>
 +
 +vim /​etc/​default/​bind9
 +RESOLVCONF=yes ​
 +OPTIONS="​-u bind -t /​var/​lib/​named" ​
 +</​sxh>​
 +
 +Acertando o arquivo que controla a consulta de dns 
 +
 +<sxh bash>
 +vim /​etc/​resolv.conf
 +domain douglasqsantos.com.br
 +nameserver 192.168.1.35
 +</​sxh>​
 +
 +Gerando a chave para o DHCP poder atualizar as zonas de DNS
 +<sxh bash>
 +cd /etc/bind/
 +dnssec-keygen -r /​dev/​urandom -a hmac-md5 -b 128 -n USER dhcpupdate
 +</​sxh>​
 +
 +Agora vamos visualizar o conteudo da nossa chave, vamos utilizar ela no arquivo de zonas e no arquivo de configuração do DHCP. 
 +
 +<sxh bash>
 +cat /​etc/​bind/​K*.key
 +dhcpupdate. IN KEY 0 3 157 +AxtjQ+EUNBCD2JfPyA/​UA==
 +</​sxh>​
 +
 +Vamos acertar algumas opções do bind 
 +
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.options
 +#/​etc/​bind/​named.conf.options
 +options {
 + ​directory "/​var/​cache/​bind";​
 + ​managed-keys-directory "/​var/​cache/​bind/​dynamic";​
 + ​auth-nxdomain no;
 + ​listen-on-v6 { any; };
 + ​listen-on { 127.0.0.1/​32;​ 192.168.1.0/​24;​ };
 + ​allow-query { any; };
 + ​recursion no;
 + ​version "Nao Disponivel";​
 + ### Habilita DNSSEC ###
 + ​dnssec-enable no;
 + ​dnssec-validation no;
 + ​dnssec-lookaside auto;
 +};
 + 
 +#​Controles ​
 +include "/​etc/​bind/​rndc.key";​
 +controls {
 +        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
 +};
 + 
 +#LOGS
 +logging {
 + ​channel xfer-log {
 + file "/​var/​log/​named.log";​
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time yes;
 + ​severity info;
 + };
 + ​category xfer-in { xfer-log; };
 + ​category xfer-out { xfer-log; };
 + ​category notify { xfer-log; };
 + 
 + ​channel update-debug {
 + file "/​var/​log/​named-update-debug.log";​
 + ​severity ​ debug 3;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​channel security-info ​   {
 + file "/​var/​log/​named-auth-info.log";​
 + ​severity ​ info;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​category update { update-debug;​ };
 + ​category security { security-info;​ };
 + 
 + };
 +</​sxh>​
 +
 +Vamos acertar as referências de arquivos para o bind 
 +
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf
 +include "/​etc/​bind/​named.conf.options";​
 +include "/​etc/​bind/​named.conf.local";​
 +include "/​etc/​bind/​named.conf.internal-zones";​
 +</​sxh>​
 +
 +Criando o arquivo que vai conter as zonas internas ​
 +
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.internal-zones
 +#Definindo quem vão ser os nossos hosts internos, ex: a nossa rede e a maquina local
 +acl "​internal_hosts"​ {
 + ​192.168.1.0/​24;​
 + ​127.0.0.1/​32;​
 +};
 + 
 + 
 +#​Definição da View interna
 +view "​internal"​ {
 + 
 +#Definindo quais clientes vão poder consultar essa view
 + ​match-clients {
 + ​internal_hosts;​
 + };
 + 
 +#O nossos clientes da view interna vão poder efetuar consultas recursivas
 + ​recursion yes;
 + 
 + 
 +#Zonas hint aonde temos as definições dos root masters
 + zone "​."​ {
 + type hint;
 + file "/​etc/​bind/​db.root";​
 + };
 + 
 +#Zonas internas
 + zone "​localhost"​ {
 + type master;
 + file "/​etc/​bind/​db.local";​
 + };
 + 
 +zone "​127.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.127";​
 + };
 + 
 + zone "​0.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.0";​
 + };
 + 
 + zone "​255.in-addr.arpa"​ {
 + type master;
 + file "/​etc/​bind/​db.255";​
 + };
 + 
 + #As consultas para o dominio douglasqsantos.com.br vamos mandar para o servidor ns1 e ns2
 + zone "​douglasqsantos.com.br"​ {
 + type forward;
 + ​forwarders { 192.168.1.30;​ 192.168.1.31;​ };
 + };
 +
 + #​Dominios locais
 + zone "​douglasqsantos.com.br"​ {
 + type master;
 + file "​db.douglasqsantos.com.br.internal";​
 + ​allow-transfer { none; };
 + ​allow-update { key dhcpupdate; };
 + };
 + 
 +#Zona reversa do dominio na rede 192.168.1.0/​24
 +zone "​1.168.192.in-addr.arpa"​ {
 +type master;
 +file "​db.1.168.192.internal";​
 +allow-transfer { none; };
 +allow-update { key dhcpupdate; };
 +};   
 + 
 +#Chave para sincronismo entre dhcp e dns que visualizamos com o cat /​etc/​bind/​K*.key
 +key "​dhcpupdate"​ {
 +algorithm hmac-md5;
 +secret "​+AxtjQ+EUNBCD2JfPyA/​UA==";​
 +};
 + 
 +};
 +</​sxh>​
 +
 +Criando a zona interna do domínio ​
 +
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​db.douglasqsantos.com.br.internal
 +$TTL 86400
 +@ IN SOA  dns.douglasqsantos.com.br. root.dns.douglasqsantos.com.br. (
 +                2013011301 ​ ; Serial
 +                 ​3600 ​      ; Refresh
 +                 ​1800 ​       ; Retry
 +                 ​1209600 ​     ; Expire
 +                 3600 )     ; Minimum
 + 
 +;
 + 
 +@               ​IN ​     NS   ​douglasqsantos.com.br.
 +douglasqsantos.com.br. IN TXT "​v=spf1 a mx ip4:​192.168.1.0/​24 -all"
 +mail.douglasqsantos.com.br IN TXT "​v=spf1 a -all"
 + 
 +@               ​IN ​     NS   ​ns1.douglasqsantos.com.br.
 +@               ​IN ​     NS   ​ns2.douglasqsantos.com.br.
 +@               ​IN ​     MX   0 mail.douglasqsantos.com.br.
 + 
 +;NAME SERVERS
 +@               ​IN ​     A    192.168.1.35
 +ns1             ​IN ​     A    192.168.1.35
 +ns2             ​IN ​     A    192.168.1.35
 +dns             ​IN ​     A    192.168.1.35
 +ldap        IN  A    192.168.1.35
 +ldap2       ​IN ​ A    192.168.1.35
 +kdc1        IN  A    192.168.1.35
 +kdc2        IN  A    192.168.1.35
 + 
 +;MAIL SERVERS
 +mail            IN      A    192.168.1.35
 +imap            IN      CNAME mail
 +pop             ​IN ​     CNAME mail
 +smtp            IN      CNAME mail
 +webmail ​        ​IN ​     CNAME mail
 + 
 +;WEB SERVERS
 +www             ​IN ​     A    192.168.1.35
 +ftp             ​IN ​     CNAME www
 +mailadmin ​      ​IN ​     CNAME www
 + 
 +; Dominio Kerberos
 +_kerberos ​                                              IN TXT           "​douglasqsantos.com.br"​
 +_kerberos.srv ​                                          IN TXT           "​douglasqsantos.com.br"​
 +_kerberos._tcp ​                                         IN SRV 10 1 88   ​ldap.douglasqsantos.com.br.
 +_kerberos._udp ​                                         IN SRV 10 1 88   ​ldap.douglasqsantos.com.br.
 +_kerberos-adm._tcp ​                                     IN SRV 10 1 749  ldap.douglasqsantos.com.br.
 +_kerberos-master._udp ​                                  IN SRV 0  0 88   ​ldap.douglasqsantos.com.br.
 +_kpasswd._udp ​                                          IN SRV 10 1 464  ldap.douglasqsantos.com.br.
 +_ldap._tcp ​                                             IN SRV 10 1 389  ldap.douglasqsantos.com.br.
 + 
 +; Busca de Informações de LDAP e Samba
 +_ldap_dc ​                                               IN TXT           "​dc=douglasqsantos,​dc=com,​dc=br"​
 +_samba_pdc_domain ​                                      IN TXT           "​DOUGLASQSANTOS"​
 +_samba_pdc_ip_address ​                                  IN TXT           "​192.168.1.35"​
 +</​sxh>​
 +
 +Agora vamos criar a zona inversa ​
 +
 +<sxh dns>
 +vim /​var/​lib/​named/​var/​cache/​bind/​db.1.168.192.internal
 +$TTL 86400
 +@ IN SOA  dns.douglasqsantos.com.br. root.dns.douglasqsantos.com.br. (
 +                        2013130101 ​ ; Serial
 +                        3600       ; Refresh
 +                        1800        ; Retry
 +                        604800 ​     ; Expire
 +                        3600 )     ; Minimum
 + 
 +
 +@       ​IN ​ NS   ​douglasqsantos.com.br.
 +@               ​IN ​ NS   ​ns1.douglasqsantos.com.br.
 +@               ​IN ​ NS   ​ns2.douglasqsantos.com.br.
 +@               ​IN ​ MX   0 mail.douglasqsantos.com.br.
 + 
 +;NAME SERVERS
 +35      IN  PTR    douglasqsantos.com.br.
 +35      IN  PTR    ns1.douglasqsantos.com.br.
 +35      IN  PTR    ns2.douglasqsantos.com.br.
 +35      IN  PTR    dns.douglasqsantos.com.br.
 + 
 +;LDAP e Kerberos
 +35  IN  PTR    ldap.douglasqsantos.com.br.
 +35  IN  PTR    ldap2.douglasqsantos.com.br.
 +35  IN  PTR    kdc1.douglasqsantos.com.br.
 +35  IN  PTR    kdc2.douglasqsantos.com.br.
 + 
 +;MAIL SERVERS
 +35    IN    PTR    mail.douglasqsantos.com.br.
 + 
 +;WEB SERVERS
 +35      IN  PTR    www.douglasqsantos.com.br.
 +</​sxh>​
 +
 +Agora vamos reiniciar o nosso bind 
 +<sxh bash>
 +/​etc/​init.d/​bind9 restart
 +</​sxh>​
 +
 +Vamos testar uma consulta ​
 +
 +<sxh bash>
 +nslookup www
 +Server: ​    ​192.168.1.35
 +Address: ​   192.168.1.35#​53
 + 
 +Name:   ​www.douglasqsantos.com.br
 +Address: 192.168.1.35
 +</​sxh>​
 +
 +Vamos testar o reverso ​
 +
 +<sxh bash>
 +
 +host 192.168.1.35
 +35.1.168.192.in-addr.arpa domain name pointer dns.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa domain name pointer ns1.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa domain name pointer ns2.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa domain name pointer www.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa domain name pointer kdc1.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa domain name pointer kdc2.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa domain name pointer ldap.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa domain name pointer mail.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa domain name pointer ldap2.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa domain name pointer douglasqsantos.com.br.
 +</​sxh>​
 +
 +Vamos testar o reverso agora pelo dig 
 +
 +<sxh bash>
 +dig -x 192.168.1.35
 +
 +; <<>>​ DiG 9.7.3 <<>>​ -x 192.168.1.35
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 62752
 +;; flags: qr aa rd ra; QUERY: 1, ANSWER: 10, AUTHORITY: 3, ADDITIONAL: 3
 +
 +;; QUESTION SECTION:
 +;​35.1.168.192.in-addr.arpa. IN  PTR
 +
 +;; ANSWER SECTION:
 +35.1.168.192.in-addr.arpa. 86400 IN PTR kdc1.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa. 86400 IN PTR kdc2.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa. 86400 IN PTR ldap.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa. 86400 IN PTR mail.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa. 86400 IN PTR ldap2.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa. 86400 IN PTR dns.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa. 86400 IN PTR douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa. 86400 IN PTR ns1.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa. 86400 IN PTR ns2.douglasqsantos.com.br.
 +35.1.168.192.in-addr.arpa. 86400 IN PTR www.douglasqsantos.com.br.
 +
 +;; AUTHORITY SECTION:
 +1.168.192.in-addr.arpa. 86400   ​IN ​ NS  ns1.douglasqsantos.com.br.
 +1.168.192.in-addr.arpa. 86400   ​IN ​ NS  ns2.douglasqsantos.com.br.
 +1.168.192.in-addr.arpa. 86400   ​IN ​ NS  douglasqsantos.com.br.
 +
 +;; ADDITIONAL SECTION:
 +douglasqsantos.com.br. ​       86400   ​IN ​ A   ​192.168.1.35
 +ns1.douglasqsantos.com.br. ​       86400   ​IN ​ A   ​192.168.1.35
 +ns2.douglasqsantos.com.br. ​       86400   ​IN ​ A   ​192.168.1.35
 +
 +;; Query time: 0 msec
 +;; SERVER: 192.168.1.35#​53(192.168.1.35)
 +;; WHEN: Sun Jan 13 21:02:43 2013
 +;; MSG SIZE  rcvd: 325
 +</​sxh>​
 +
 +
 +====== Instalação e Configuração do DHCP ======
 +
 +Agora vamos instalar o servidor DHCP 
 +
 +<sxh bash>
 +aptitude install isc-dhcp-server -y
 +</​sxh>​
 +
 +Vai ocorrer um erro a respeito da interface de rede mais isso vamos corrigir mais a frente ​
 +
 +Agora vamos fazer o backup do arquivo do dhcpd
 +<sxh bash>
 +cp -Rfa /​etc/​dhcp/​dhcpd.conf{,​.bkp}
 +</​sxh>​
 +Vamos editar o arquivo de configuração do dhcp server ​
 +
 +
 +<sxh bash>
 +vim /​etc/​dhcp/​dhcpd.conf
 +#Definindo o dominio
 +option domain-name "​douglasqsantos.com.br"; ​
 +#Definindo os servidores de DNS
 +option domain-name-servers 192.168.1.35,​ 192.168.1.30;​
 +#Definindo o servidor de NetBios(WINS)
 +option netbios-name-servers 192.168.1.35;​
 +#Definindo o tipo de netbios
 +option netbios-node-type 8;
 +#Defindo o broadcast da nossa rede
 +option broadcast-address 192.168.1.255;​
 +#Defindo que o servidor é autoritativo para a rede
 +authoritative;​
 +#Estilo de atualização do servidor DNS, este metodo vai ser o padrão de atualização do dns
 +#ele gera um registro (RR) TXT nos arquivos de zonas do DNS e os atualiza
 +ddns-update-style interim; ​
 +#Força o servidor dhcp fazer atualizações para os endereços ips estáticos
 +update-static-leases on;
 +#Defindo o tipo de log que vai ser enviado para o syslog
 +log-facility local7;
 +#Defindo a chave de atualização entre o dhcp e o dns a chave que visualizamos com cat /​etc/​bind/​K*.key
 +key dhcpupdate {
 +algorithm hmac-md5;
 +secret +AxtjQ+EUNBCD2JfPyA/​UA==;​
 +}
 +#defindo a zona que vamos efetuar atualizações
 +zone douglasqsantos.com.br. { 
 +   ​primary 127.0.0.1; ​
 +   key dhcpupdate; ​
 +
 +#definindo a zona que vamos efetuar atualizações para reverso
 +zone 1.168.192.in-addr.arpa. { 
 +   ​primary 127.0.0.1; ​
 +   key dhcpupdate; ​
 +}
 + 
 +#Tempo de emprestimo de um ip
 +default-lease-time 600; 
 +#tempo maximo de emprestimo de um ip
 +max-lease-time 7200;
 +#​Declaração da sub-net
 +subnet 192.168.1.0 netmask 255.255.255.0 { 
 +#​Declaração do range de ips disponiveis para emprestimo
 +range 192.168.1.100 192.168.1.200; ​
 +#Define qual a subrede para este escopo
 +option subnet-mask 255.255.255.0;​
 +#define qual o router para esse escopo
 +option routers 192.168.1.35; ​
 +} #Fim do escopo
 +
 +#Definindo um ip fixo
 +host douglas-xp {
 + ​hardware ethernet 08:​00:​27:​CE:​16:​56;​
 + ​fixed-address 192.168.1.21;​
 +}
 +</​sxh>​
 +
 +Definir em qual interface o dhcp vai trabalhar ​
 +
 +<sxh bash>
 +vim /​etc/​default/​isc-dhcp-server
 +[...]
 +INTERFACES="​eth0"​
 +</​sxh>​
 +
 +Agora vamos fazer um ajuste no rsyslog ​
 +
 +<sxh bash>
 +
 +echo "​local7.debug /​var/​log/​dhcpd.log"​ >> /​etc/​rsyslog.conf
 +</​sxh>​
 +
 +Agora vamos reiniciar o rsyslog ​
 +
 +<sxh bash>
 +
 +/​etc/​init.d/​rsyslog restart
 +</​sxh>​
 +
 +Agora vamos subir o servidor de dhcp 
 +
 +<sxh bash>
 +
 +/​etc/​init.d/​isc-dhcp-server restart
 +Stopping ISC DHCP server: dhcpd failed!
 +Starting ISC DHCP server: dhcpd.
 +</​sxh>​
 +
 +Podemos acompanhar o trabalho do dhcp em /​var/​log/​dhcpd.log ​
 +
 +<sxh bash>
 +tail -f /​var/​log/​dhcpd.log ​
 +Jan 13 21:14:25 fw-lan dhcpd: Copyright 2004-2010 Internet Systems Consortium.
 +Jan 13 21:14:25 fw-lan dhcpd: All rights reserved.
 +Jan 13 21:14:25 fw-lan dhcpd: For info, please visit https://​www.isc.org/​software/​dhcp/​
 +Jan 13 21:14:25 fw-lan dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1
 +Jan 13 21:14:25 fw-lan dhcpd: Copyright 2004-2010 Internet Systems Consortium.
 +Jan 13 21:14:25 fw-lan dhcpd: All rights reserved.
 +Jan 13 21:14:25 fw-lan dhcpd: For info, please visit https://​www.isc.org/​software/​dhcp/​
 +Jan 13 21:14:25 fw-lan dhcpd: Wrote 0 deleted host decls to leases file.
 +Jan 13 21:14:25 fw-lan dhcpd: Wrote 0 new dynamic host decls to leases file.
 +Jan 13 21:14:25 fw-lan dhcpd: Wrote 0 leases to leases file.
 +</​sxh>​
 +
 +Vamos ver um exemplo de maquina que pegou o ip e foi registrada no DNS 
 +
 +<sxh bash>
 +tail -f /​var/​log/​dhcpd.log
 +Jan 13 21:15:11 fw-lan dhcpd: DHCPDISCOVER from 08:​00:​27:​ce:​16:​56 via eth0
 +Jan 13 21:15:11 fw-lan dhcpd: DHCPOFFER on 192.168.1.21 to 08:​00:​27:​ce:​16:​56 via eth0
 +Jan 13 21:15:11 fw-lan dhcpd: Added new forward map from xp.douglasqsantos.com.br to 192.168.1.21
 +Jan 13 21:15:11 fw-lan dhcpd: added reverse map from 21.1.168.192.in-addr.arpa. to xp.douglasqsantos.com.br
 +Jan 13 21:15:11 fw-lan dhcpd: DHCPREQUEST for 192.168.1.21 (192.168.1.35) from 08:​00:​27:​ce:​16:​56 via eth0
 +Jan 13 21:15:11 fw-lan dhcpd: DHCPACK on 192.168.1.21 to 08:​00:​27:​ce:​16:​56 via eth0
 +</​sxh>​
 +
 +Note que o cliente pegou um ip e foi registrado como xp.douglasqsantos.com.br
 +
 +Agora vamos testar o dns para ver se esta resolvendo mesmo 
 +
 +<sxh bash>
 +nslookup xp.douglasqsantos.com.br
 +Server: ​    ​192.168.1.35
 +Address: ​   192.168.1.35#​53
 +
 +Name:   ​xp.douglasqsantos.com.br
 +Address: 192.168.1.21
 +</​sxh>​
 +
 +Agora vamos testar o reverso desta maquina ​
 +
 +<sxh bash>
 +dig -x 192.168.1.21
 +
 +; <<>>​ DiG 9.7.3 <<>>​ -x 192.168.1.21
 +;; global options: +cmd
 +;; Got answer:
 +;; ->>​HEADER<<​- opcode: QUERY, status: NOERROR, id: 49744
 +;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
 +
 +;; QUESTION SECTION:
 +;​21.1.168.192.in-addr.arpa. IN  PTR
 +
 +;; ANSWER SECTION:
 +21.1.168.192.in-addr.arpa. 300  IN  PTR xp.douglasqsantos.com.br.
 +
 +;; AUTHORITY SECTION:
 +1.168.192.in-addr.arpa. 86400   ​IN ​ NS  ns2.douglasqsantos.com.br.
 +1.168.192.in-addr.arpa. 86400   ​IN ​ NS  douglasqsantos.com.br.
 +1.168.192.in-addr.arpa. 86400   ​IN ​ NS  ns1.douglasqsantos.com.br.
 +
 +;; ADDITIONAL SECTION:
 +douglasqsantos.com.br. ​       86400   ​IN ​ A   ​192.168.1.35
 +ns1.douglasqsantos.com.br. ​       86400   ​IN ​ A   ​192.168.1.35
 +ns2.douglasqsantos.com.br. ​       86400   ​IN ​ A   ​192.168.1.35
 +
 +;; Query time: 0 msec
 +;; SERVER: 192.168.1.35#​53(192.168.1.35)
 +;; WHEN: Sun Jan 13 21:16:46 2013
 +;; MSG SIZE  rcvd: 168
 +</​sxh>​
 +
 +Como pode ser notado temos agora o DHCP trabalhando em conjunto com o DNS 
 +
 +====== Configuração do Firewall ======
 +
 +Aqui vamos precisar habilitar o roteamento de pacotes no servidor
 +
 +Vamos avisar o kernel que queremos habilitar o roteamento
 +<sxh bash>
 +sed -i '​s/#​net.ipv4.ip_forward=1/​net.ipv4.ip_forward=1/​g'​ /​etc/​sysctl.conf
 +</​sxh>​
 +
 +Agora vamos habilitar o roteamento manualmente,​ porém ele vai subir no boot do sistema
 +<sxh bash>
 +sysctl -p
 +</​sxh>​
 +
 +Agora vamos criar um diretório para armazenar os arquivos que vão conter as nossas politicas e os ips liberados
 +<sxh bash>
 +mkdir -p /​etc/​firewall
 +</​sxh>​
 +
 +Agora vamos criar o arquivo que vai conter os ips que vão ter acesso full a internet
 +<sxh bash>
 +vim /​etc/​firewall/​ips_liberados
 +#ARQUIVO PARA DEFINICAO DOS IPS QUE TERÃO ACESSO FULL NA INTERNET
 +#INSERIR UM IP POR LINHA
 +#IP DA DIRETORIA
 +192.168.1.21
 +#IP GERENTE DE VENDAS
 +192.168.1.160
 +#IP TI
 +192.168.1.170
 +</​sxh>​
 +
 +Agora vamos criar o arquivo que vai conter as politicas de ping
 +<sxh bash>
 +vi /​etc/​firewall/​politicas_ping
 +#ARQUIVO DE CONFIGURACAO PARA AS POLITICAS DE PING
 +#INFORMAR UMA POLITICA POR LINHA
 +INPUT
 +FORWARD
 +OUTPUT
 +</​sxh>​
 +
 +Agora vamos criar o arquivo que vai conter as politicas de ataque
 +<sxh bash>
 +vim /​etc/​firewall/​politicas_ataques
 +#ARQUIVO PARA DEFINICAO DAS POLITICAS CONTRA ATAQUES
 +#INSERIR CADA POLITICA EM UMA LINHA
 +INPUT
 +FORWARD
 +OUTPUT
 +</​sxh>​
 +
 +Agora vamos criar o arquivo que vai conter as politicas de DNS
 +<sxh bash>
 +vim /​etc/​firewall/​politicas_dns
 +#ARQUIVO DE CONTROLE DAS POLITICAS PARA DNS
 +#INSIRA UMA CHAIN POR LINHA
 +INPUT
 +FORWARD
 +OUTPUT
 +</​sxh>​
 +
 +Caso tenha mais de uma rede podemos liberar da seguinte forma
 +<sxh bash>
 +vim /​etc/​firewall/​redes
 +#REDE FINANCEIRO
 +10.100.0.0/​24
 +#REDE CONTABILIDADE
 +10.101.0.0/​24
 +#REDE VENDAS
 +10.102.0.0/​24
 +</​sxh>​
 +
 +Agora vamos criar o script de Firewall que vai ler as nossas regras
 +<sxh bash>
 +vim /​etc/​init.d/​rc.firewall
 +#!/bin/sh
 +### BEGIN INIT INFO
 +# Provides: ​         rc.firewall
 +# Required-Start: ​   $network $remote_fs $syslog
 +# Required-Stop: ​    ​$network $remote_fs $syslog
 +# Should-Start: ​     $named
 +# Should-Stop: ​      ​$named
 +# Default-Start: ​    2 3 4 5
 +# Default-Stop: ​     0 1 6
 +# Short-Description:​ Firewall
 +# Description: ​      ​Regras de firewall para a rede interna
 +#        última atualização 13/01/2013 por Douglas.
 +### END INIT INFO
 + 
 +### CORES UTILIZADAS NO SCRIPT ###
 +GREY="​\033[01;​30m"​
 +RED="​\033[01;​31m"​
 +GREEN="​\033[01;​32m"​
 +YELLOW="​\033[01;​33m"​
 +BLUE="​\033[01;​34m"​
 +PURPLE="​\033[01;​35m"​
 +CYAN="​\033[01;​36m"​
 +WHITE="​\033[01;​37m"​
 +CLOSE="​\033[m"​
 + 
 +### Comandos ###
 +IPTABLES=$(which iptables)
 +MODPROBE=$(which modprobe)
 +COM="​-m comment --comment"​
 + 
 +### PORTAS ###
 +DNS_PORT="​53"​
 + 
 +###  CAMINHO DAS VARIAVEIS DO IPV4 NO KERNEL ###
 +PSNI=/​proc/​sys/​net/​ipv4
 + 
 +### LIMITA OS PINGS ###
 +MAX_TAM="​512"​ MAX_SEG="​1"​
 + 
 +### CAMINHO DAS REGRAS ###
 +REGRAS=/​etc/​firewall/​
 +IPS_LIBERADOS=${REGRAS}ips_liberados
 +CHAINS_DNS=${REGRAS}politicas_dns
 +CHAINS_PING=${REGRAS}politicas_ping
 +CHAINS_ATAQUES=${REGRAS}politicas_ataques
 +REDES=${REGRAS}redes
 +### OPCOES DO KERNEL ###
 +### HABILITA REPASSE DE PACOTES ###
 +echo 1 > $PSNI/​ip_forward
 +# HABILITAR PROTECAO CONTRA SYNFLOOD
 +echo 1 > $PSNI/​tcp_syncookies
 +# HABILITAR VERIFICACAO DE ROTA DE ORIGEM (PROTECAO P/ IP SPOOFING)
 +for RP in $PSNI/​conf/​*/​rp_filter ; do echo 1 > $RP ; done
 +# CONTROLE DE ICMP
 +echo 0 > $PSNI/​icmp_echo_ignore_all
 +echo 1 > $PSNI/​icmp_echo_ignore_broadcasts
 + 
 +### CARREGANDO MODULOS ###
 +${MODPROBE} ip_conntrack
 +${MODPROBE} ip_conntrack_ftp
 +${MODPROBE} ip_nat_ftp
 +${MODPROBE} ip_conntrack_irc
 +${MODPROBE} ip_nat_irc
 + 
 + 
 +### DEFININDO ALGUNS ENDEREÇOS DE REDE ###
 +LO='​127.0.0.0/​8' ​       # Endereco de Loopback
 +LAN='​192.168.1.0/​24' ​       # Rede interna da empresa (IP/​Mascara)
 +IF_INT='​eth0' ​      # Placa de rede ligada na rede interna
 + 
 +case $1 in
 +    start)
 +        echo "​${GREEN}[ ​       Iniciando Firewall ​      ​]${CLOSE}"​
 + 
 +    ### APAGANDO REGRAS EXISTENTES ###
 +    ${IPTABLES} -t filter -F
 +    ${IPTABLES} -t nat -F
 +    ${IPTABLES} -t mangle -F
 +    ${IPTABLES} -t filter -X
 +    ${IPTABLES} -t nat -X
 +    ${IPTABLES} -t mangle -X
 + 
 +    ### DEFININDO POLITICA PADRAO ACCEPT ###
 +    ${IPTABLES} -P INPUT ACCEPT
 +    ${IPTABLES} -P FORWARD ACCEPT
 +    ${IPTABLES} -P OUTPUT ACCEPT
 + 
 + 
 +    ### DEFININDO POLITICA PADRAO DROP ###
 +#   ​${IPTABLES} -P INPUT DROP
 +#   ​${IPTABLES} -P FORWARD DROP
 +#   ​${IPTABLES} -P OUTPUT ACCEPT
 + 
 +    ### LIBERAR LOOPBACK ###
 +    ${IPTABLES} -A INPUT -s ${LO} -j ACCEPT ${COM} "​Liberando conexoes da ${LO}"
 +    ${IPTABLES} -A OUTPUT -s ${LO} -j ACCEPT ${COM} "​Liberando conexoes da ${LO}"
 + 
 +    ### LIBERAR SSH ###
 +    ${IPTABLES} -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT ${COM} "​Libera acesso a porta 22"
 + 
 +    ### LIBERAR CONECTIVIDADE SOCIAL DA CAIXA ECONOMICA ###
 +    ${IPTABLES} -A FORWARD -s ${LAN} -d 10.101.0.0/​24 -j ACCEPT ${COM} "​Libera conectividade social"​
 +    ${IPTABLES} -t nat -A PREROUTING -s ${LAN} -d 200.201.174.0/​24 -j RETURN ${COM} "​Libera conectividade social"​
 +    ${IPTABLES} -t nat -A PREROUTING -p tcp -d 200.201.160.0/​24 --dport 2631 -j ACCEPT
 +    ${IPTABLES} -A FORWARD -p tcp -d 200.201.160.0/​24 --dport 2631 -j ACCEPT
 +    ${IPTABLES} -t nat -A PREROUTING -p tcp -d 200.201.160.0/​24 --dport 80 -j ACCEPT
 +    ${IPTABLES} -A FORWARD -p tcp -d 200.201.160.0/​24 --dport 80 -j ACCEPT
 +    ${IPTABLES} -t nat -A PREROUTING -p tcp -d 200.201.166.0/​24 --dport 80 -j ACCEPT
 +    ${IPTABLES} -A FORWARD -p tcp -d 200.201.166.0/​24 --dport 80 -j ACCEPT
 + 
 +    ### LIBERAR RETORNO DE CONEXOES ###
 +    ${IPTABLES} -A INPUT   -m state --state ESTABLISHED,​RELATED -j ACCEPT
 +    ${IPTABLES} -A FORWARD -m state --state ESTABLISHED,​RELATED -j ACCEPT
 +    ${IPTABLES} -A OUTPUT ​ -m state --state ESTABLISHED,​RELATED -j ACCEPT
 + 
 +    ### LIBERAR REDES DESCOMENTE AS LINHAS ABAIXO CASO TENHA MAIS DE UMA REDE QUE DESEJA LIBERAR ###
 +#   for END in $(cat ${REDES} | grep -v "​^#"​)
 +#   do
 +#   ​${IPTABLES} -A FORWARD -s ${END} -j ACCEPT ${COM} "​LIBERA REDES TI"
 +#   ​${IPTABLES} -t nat -A POSTROUTING -s ${END} -j MASQUERADE ${COM} "​LIBERA REDES TI"
 +#   done
 + 
 +    ### REDIRECT DE PORTA ###
 +    ${IPTABLES} -A PREROUTING -t nat -p tcp -m tcp -s ${LAN} --dport 8081 -j REDIRECT --to-port 3128 ${COM} "​Redireciona porta 8081 para 3128"
 + 
 +    ### LIBERAR ALGUNS IPS PARA DIRETORIA, GERENCIA, TI ###
 +    for END in $(cat ${IPS_LIBERADOS} | grep -v "​^#"​)
 +    do
 +    ${IPTABLES} -A FORWARD -m iprange --src-range ${END} -j ACCEPT ${COM} "​LIBERA IPS"
 +    ${IPTABLES} -t nat -A POSTROUTING -m iprange --src-range ${END} -j MASQUERADE ${COM} "​LIBERA IPS"
 +    done
 + 
 +        ### BLOQUEANDO IPS PARA BLOQUEAR IPS PODEMOS INSERIR ELES ABAIXO SEPARADOS POR ESPAÇO ###
 +        #​BLOQ_IPS="​10.0.0.159 10.0.0.10 10.0.0.51 10.0.0.52 ​ 10.0.0.54 10.0.0.56 10.0.0.57 10.0.0.58 10.0.0.60"​
 +        #for BLOQUEIO in ${BLOQ_IPS}
 +        #do
 +        #   ​${IPTABLES} -I INPUT   -s ${BLOQUEIO} -j DROP ${COM} "​Bloqueio de maquinas especificas"​
 +        #done
 + 
 +    ### CASO QUEIRA LIBERAR ALGUMAS ESTAÇOES PODEMOS LIBERAR ELAS ABAIXO SEPARANDO POR ESPAÇO ###
 +    # Define os IPs das máquinas que serão liberadas (separadas por espaco)
 +    #        |Nerso ​ | Xerox     ​|Xerox ​    ​|Xerox ​    ​|Jose ​    ​|Monitor Erp
 +    #​HOST_IPS="​10.0.0.9 10.0.0.150 10.0.0.152 10.0.0.153 10.0.0.101 10.0.1.205 10.0.0.239 10.0.1.167"​
 +        #
 +    #for HOSTIPS in $TI_IPS $HOST_IPS
 +    #do
 +    #  ${IPTABLES} -A FORWARD -s $HOSTIPS -j ACCEPT ${COM} "​Libera maquinas especiais"​
 +    #  ${IPTABLES} -A PREROUTING -t nat -s $HOSTIPS -j RETURN ${COM} "​Libera maquinas especiais"​
 +    #done
 + 
 + 
 +    ### BLOQUEAR ALGUMAS PORTAS ###
 +    ### DEFINE ALGUMAS PORTAS QUE SERÃO BLOQUEADAS (SEPARADAS POR ESPACO) ###
 +        #​PORT_BLOQ="​3128 8080 8081 80 443"
 +        #
 +        #for PORTBLOQ in $PORT_BLOQ
 +        #do
 +        #​${IPTABLES} -A FORWARD -p tcp -m tcp --dport $PORTBLOQ -j DROP ${COM} "​Bloqueia a porta ${PORTBLOQ}"​
 +        #done
 + 
 +    ### LIBERAR CAMERAS DE MONITORAMENTO PODEMOS DESCOMENTAR AS LINHAS ABAIXO###
 +    #​CAP_IP1="​192.168.1.220"​
 +    #​CAM_PORTS1="​4077,​8080"​
 +    #​${IPTABLES} -A FORWARD -p tcp -m multiport --dports ${CAM_PORTS1} -d ${CAP_IP1} -j ACCEPT ${COM} "​Libera camera de monitoramento 01"
 +    #​${IPTABLES} -A PREROUTING -t nat -i ${IF_EXT} -p tcp -m multiport --dports ${CAM_PORTS1} -j DNAT --to ${CAP_IP1} ${COM} "​Libera camera de monitoramento 01"
 + 
 + 
 +    ### BLOQUEAR ALGUMAS PORTAS USE AS REGRAS ABAIXO CASO UTILIZE PROXY ###
 +    ### DEFINE ALGUMAS PORTAS QUE SERÃO BLOQUEADAS (SEPARADAS POR ESPACO) ###
 +    #​PORT_BLOQ="​3128 8080 8081 80 443"
 +        #
 +    #for PORTBLOQ in $PORT_BLOQ
 +    #do
 +    #  ${IPTABLES} -A FORWARD -p tcp -m tcp --dport $PORTBLOQ -j DROP ${COM} "​Bloqueia a porta ${PORTBLOQ}"​
 +    #done
 + 
 + 
 +    ### LIBERAR ACESSOS AO PROGRAMA RAIS CASO UTILIZE DESCOMENTE AS LINHAS ABAIXO ###
 +    #​${IPTABLES} -A FORWARD -p tcp -m tcp -d 161.148.185.46/​32 --dport 3007 -j ACCEPT
 +    #​${IPTABLES} -t nat -A PREROUTING -i eth0 -p tcp -m tcp -d 161.148.185.46/​32 --dport 3007 -j RETURN
 +    #​${IPTABLES} -t nat -A POSTROUTING -o eth0 -p tcp -m tcp -d 161.148.185.46/​32 --dport 3007 -j MASQUERADE
 + 
 +    ### LIBERAR ACESSO DA REDE LOCAL PARA O SERVIDOR ###
 +    ${IPTABLES} -A INPUT -s ${LAN} -j ACCEPT ${COM} "​Libera rede ${LAN}"​
 + 
 +        ### LIBERA SANTANDER NAO FUNCIONA COM PROXY CASO TENHA PROBLEMAS COM O SANTANDER DESCOMENTE AS LINHAS ABAIXO###
 +        #​${IPTABLES} -A FORWARD -d 200.220.178.3 ​ -j ACCEPT
 +        #​${IPTABLES} -A FORWARD -d 200.220.179.4 ​ -j ACCEPT
 +        #​${IPTABLES} -A FORWARD -d 200.220.187.4 ​ -j ACCEPT
 +        #​${IPTABLES} -A FORWARD -d 200.220.186.3 ​ -j ACCEPT
 +        #​${IPTABLES} -A FORWARD -d 200.220.187.18 -j ACCEPT
 + 
 +        ### CONTROLE DOS PINGS (ICMP) ###
 +        for END in $(cat ${CHAINS_PING} | grep -v "​^#"​)
 +        do
 +        ${IPTABLES} -A ${END} -p icmp -j DROP -m length --length ${MAX_TAM}: ${COM} "​RESTRICAO AO TAMANHO DOS ECHOS A 512BYTES"​
 +        ${IPTABLES} -A ${END} -p icmp --icmp-type 0 -m limit --limit ${MAX_SEG}/​s -j ACCEPT ${COM} "ECHO REPLY RETORNO"​
 +        ${IPTABLES} -A ${END} -p icmp --icmp-type 8 -m limit --limit ${MAX_SEG}/​s -j ACCEPT ${COM} "ECHO REQUEST SOLICITACAO"​
 +        done
 + 
 +    #### ALGUMAS PROTECOES ADICIONAIS ###
 +    ### PROTECAO CONTRA SYN-FLOOD ###
 +    ${IPTABLES} -A INPUT -p tcp -m tcp --tcp-flags ALL FIN,URG,PSH -j DROP ${COM} "​Protecao contra syn-flood"​
 +    ${IPTABLES} -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP ${COM} "​Protecao contra syn-flood"​
 +    ${IPTABLES} -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP ${COM} "​Protecao contra syn-flood"​
 +    ${IPTABLES} -A INPUT -p tcp -m tcp --tcp-flags ALL NONE -j DROP ${COM} "​Protecao contra syn-flood"​
 +    ${IPTABLES} -A INPUT -p tcp -m tcp --sport 0 --tcp-flags FIN,​SYN,​RST,​ACK SYN -j DROP ${COM} "​Protecao contra syn-flood"​
 +    ${IPTABLES} -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT ${COM} "​Protecao contra syn-flood"​
 + 
 +    ### PROTECAO CONTRA PING DA MORTE ###
 +    ${IPTABLES} -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT ${COM} "​Protecao contra DOS"
 + 
 +    ### PROTECAO CONTRA PORT SCANNERS ###
 +    ${IPTABLES} -A FORWARD -p tcp --tcp-flags SYN,​ACK,​FIN,​RST RST -m limit --limit 1/s -j ACCEPT ${COM} "​Protecao contra Port Scanners"​
 + 
 +    ### NEGAR IDENT ###
 +    ${IPTABLES} -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset ${COM} "Nega Identidade"​
 +    ${IPTABLES} -A FORWARD -p tcp --dport 113 -j REJECT --reject-with tcp-reset ${COM} "Nega Identidade"​
 + 
 +    ### RESET EM CONEXOES PARA PORTAS DESCONHECODAS ###
 +    ${IPTABLES} -A INPUT -p tcp -j REJECT --reject-with tcp-reset ${COM} "​Reseta conexoes em portas desconhecidas"​
 + 
 +    ### HABILITANDO MASQUERADE DA REDE INTERNA ###
 +    ${IPTABLES} -A POSTROUTING -t nat -s ${LAN} -j MASQUERADE ${COM} "​Masquerade da Rede"
 + 
 +    echo "​${GREEN}[ ​       Firewall Iniciado ​       ]${CLOSE}"​
 +;;
 + 
 +  stop)
 +    echo "​${RED}[ ​       Parando Firewall ...     ​]${CLOSE}"​
 +    ### APAGANDO REGRAS EXISTENTES ###
 +    ${IPTABLES} -t filter -F
 +    ${IPTABLES} -t nat -F
 +    ${IPTABLES} -t mangle -F
 +    ${IPTABLES} -t filter -X
 +    ${IPTABLES} -t nat -X
 +    ${IPTABLES} -t mangle -X
 + 
 +    ### DEFININDO POLITICA PADRAO ACCEPT ###
 +    ${IPTABLES} -P INPUT ACCEPT
 +    ${IPTABLES} -P FORWARD ACCEPT
 +    ${IPTABLES} -P OUTPUT ACCEPT
 + 
 + 
 +    ### FAZENDO NAT DA REDE ###
 +    ${IPTABLES} -t nat -A POSTROUTING -s ${LAN} -j MASQUERADE ${COM} "​Masquerade da Rede"
 + 
 + 
 +    echo "​${RED}[ ​       Firewall Parado ​         ]${CLOSE}"​
 + 
 +  ;;
 + 
 +   ​status)
 +   ​echo ​ "​${RED}########################################################################################";​
 +   ​echo ​ "​*******************************Table Filter*********************************************${CLOSE}";​
 +   ​${IPTABLES} -t filter -L -n
 +   ​echo ​ "​${RED}########################################################################################";​
 +   ​echo ​ "​********************************Table Nat***********************************************${CLOSE}";​
 +   ​${IPTABLES} -t nat -L -n
 +   ;;
 + 
 +   ​restart)
 +    $0 stop
 +    $0 start
 +   ;;
 + 
 +  *)
 +   echo "​${RED}Opcoes Validas:​(start|stop|restart|status)${CLOSE}"​
 +   ;;
 +esac
 +</​sxh>​
 +
 +Agora vamos dar permissão de execução em nosso script
 +<sxh bash>
 +chmod +x /​etc/​init.d/​rc.firewall
 +</​sxh>​
 +
 +Agora vamos colocar ele na inicialização do servidor
 +<sxh bash>
 +insserv -f -v rc.firewall
 +</​sxh>​
 +
 +Agora vamos testar o nosso script
 +<sxh bash>
 +/​etc/​init.d/​rc.firewall restart
 +[        Parando Firewall ...     ]
 +[        Firewall Parado ​         ]
 +[        Iniciando Firewall ​      ]
 +[        Firewall Iniciado ​       ]
 +</​sxh>​
 +====== Referências ======
 +
 +  - https://​www.isc.org/​software/​dhcp/​
 +  - https://​www.isc.org/​software/​dhcp/​documentation
 +  - http://​linux.die.net/​man/​5/​dhcpd.leases
 +  - http://​linux.die.net/​man/​8/​dhcpd
 +  - http://​linux.die.net/​man/​5/​dhcpd.conf