Estou configurando um roteador de firewall/gateway usando rhel 8. Tenho um servidor com dois NICS, um voltado para o público que é um cliente dhcp, o segundo NIC será voltado para o interno. A primeira NIC é uma zona pública, a segunda NIC é uma zona interna. Eu gostaria de tornar a NIC interna um servidor DHCP para clientes internos.
Preciso impedir que meu servidor DHCP receba solicitações DHCP na zona pública.
Pergunta: Você pode configurar o dhcp para ser um servidor apenas para uma NIC específica, ou você gerencia isso com regras de firewall para bloquear todo DHCP da zona pública? Qual é uma boa prática ao configurar um gateway multifuncional como este?
No RHEL 8, o
dhcpd.service
usa a$DHCPDARGS
variável naExecStart=
linha de comando:Mas o arquivo de ambiente
/etc/sysconfig/dhcpd
onde tal variável seria definida tem um aviso, dizendo para não usar mais aquele arquivo:Então, aparentemente, o ISC dhcpd do RHEL 8 foi corrigido para selecionar as interfaces para ouvir com base no fato de seu arquivo de configuração incluir ou não declarações de sub-rede para a interface. Se não houver declaração de sub-rede para uma interface específica, ela não deverá responder por essa interface.
Por causa de como o protocolo DHCP funciona no IPv4,
dhcpd
será necessário usar um socket raw (para poder receber pacotes de broadcast com endereço de origem 0.0.0.0 e destino 255.255.255.255, e também enviar para 255.255.255.255 sem ser restrito pelo roteamento IPv4 normal) e, portanto, ele precisa processar seus pacotes recebidos com mais cuidado.Como
dhcpd
usa soquetes brutos, também não é afetado poriptables
firewalls.Se você ainda deseja adicionar nomes de interface na linha de comando, você pode
cp /lib/systemd/system/dhcpd.service /etc/systemd/system/
modificar a versão em/etc/systemd/system
, ou apenas usarsystemctl edit dhcpd.service
para criar um arquivo de substituição. Obviamente, você precisará lembrar que os arquivos de serviço podem ter váriasExecStart=
linhas, portanto, para substituir a linha existente em vez de apenas adicionar outra, você deve executarsystemctl edit dhcpd.service
e digitar três linhas:A primeira linha vazia
ExecStart=
informa ao systemd que você deseja substituir aExecStart
definição existente no arquivo de serviço em vez de adicionar uma segunda.Se você usar a
cp /lib/systemd/system/dhcpd.service /etc/systemd/system/
estratégia, lembre-se de executarsystemctl daemon-reload
após modificar o/etc/systemd/system/dhcpd.service
arquivo.Se você usar
systemctl edit dhcpd.service
, ele executará o equivalente asystemctl daemon-reload
para você automaticamente.Depende de qual daemon dhcp específico você está usando, mas sim, é possível configurar um daemon dhcp para fornecer respostas diferentes dependendo de qual interface a solicitação dhcp/bootp veio ou executar várias instâncias do dhcpd, cada uma configurada para ouça apenas em uma interface.
No seu caso, parece que você só quer dizer ao seu dhcpd para ouvir apenas em sua interface LAN privada. Se você estiver usando o ISC dhcpd, você pode fazer isso apenas adicionando o(s) nome(s) da(s) interface(s) que você deseja ouvir na linha de comando do dhcpd.
por exemplo, no meu sistema, quero que o dhcpd ouça apenas nas minhas interfaces sem fio (
wifi0
) e de rede interna (br0
- eu uso uma interface em ponte porque é conveniente para executar VMs), então eu o executo como: