Configurando servidor DHCP no Debian 12 e compartilhando internet

Configuração das interfaces de rede

# vim /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens33
iface ens33 inet dhcp # not recommended in production

# for static ip
#	address 192.168.0.xx/24
#	gateway 192.168.0.xx
	# dns-* options are implemented by the resolvconf package, if installed
#	dns-nameservers 192.168.0.xx 192.168.x.xx

# The secondary network interface (DHCP)
auto ens37
iface ens37 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    network 192.168.1.0
# systemctl restart networking && ping 192.168.1.1 -c3

Instalação do ISC DHCP Server

# apt install isc-dhcp-server

Configuração da Interface de Rede

# sed -i.bak 's/INTERFACESv4=""/INTERFACESv4="ens37"/' /etc/default/isc-dhcp-server

Configuração do DHCP

# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bkp && vim /etc/dhcp/dhcpd.conf
# Definições globais
option domain-name "jrf.local";
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.10 192.168.1.100;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.1.255;
    option routers 192.168.1.1;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
}
# Hosts
host srvTESTE {
  hardware ethernet 08:00:27:9F:54:E7;
  fixed-address 192.168.1.123;
}
  • option domain-name define o nome do domínio local para a rede. Todos os clientes DHCP receberão esse nome de domínio, que pode ser usado para resolução de nomes dentro da rede local.
  • default-lease-time e max-lease-time definem a duração dos leases DHCP em segundos.
  • range define o intervalo de endereços IP que serão oferecidos aos clientes.
  • routers define o gateway padrão para os clientes.
  • domain-name-servers define os servidores DNS que serão usados pelos clientes.

Ativar e Iniciar o Serviço DHCP

# systemctl enable isc-dhcp-server
# systemctl start isc-dhcp-server && systemctl status isc-dhcp-server

Configuração do Compartilhamento de Internet

*Se você também deseja compartilhar a internet do servidor para os clientes, você precisará configurar o IP forwarding e o NAT usando iptables.

# apt install iptables -y 

Ativar IP forwarding

# echo "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.conf
# echo 1 | tee /proc/sys/net/ipv4/ip_forward

Configurar NAT

O comando iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE especifica que todo o tráfego que sair do servidor pela interface ens33 (a interface de internet) deve ter seu endereço IP de origem mascarado (alterado para o IP dessa interface), o que permite que os clientes na rede interna (ens37) acessem a internet.

# /usr/sbin/iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

O comando iptables-save salva as regras atuais do iptables para um arquivo para que elas possam ser restauradas na inicialização.

# /usr/sbin/iptables-save | tee /etc/iptables.up.rules

Persistindo as Regras do iptables

# vim /etc/systemd/system/iptables-load.service

Adicione o seguinte conteúdo ao arquivo:

[Unit]
Description=Load iptables rules at startup
Before=network-pre.target
Wants=network-pre.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /etc/iptables.up.rules
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Habilite e inicie o serviço:

# systemctl enable iptables-load.service
# systemctl start iptables-load.service

Faça os testes em uma maquina cliente:

Reinicie o servidor e confira se o acesso à internet foi restabelecido nos dispositivos clientes.

# systemctl reboot

Painel administrativo (em breve…)

Um simples painel administrativo em PHP que permite incluir, editar e apagar máquinas no DHCP.