AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 675495
Accepted
Bryon
Bryon
Asked: 2021-10-31 23:18:16 +0800 CST2021-10-31 23:18:16 +0800 CST 2021-10-31 23:18:16 +0800 CST

Configurando DHCP no RHEL8

  • 772

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?

rhel dhcp
  • 2 2 respostas
  • 575 Views

2 respostas

  • Voted
  1. Best Answer
    telcoM
    2021-11-02T07:56:15+08:002021-11-02T07:56:15+08:00

    No RHEL 8, o dhcpd.serviceusa a $DHCPDARGSvariável na ExecStart=linha de comando:

    # /usr/lib/systemd/system/dhcpd.service
    [Unit]
    Description=DHCPv4 Server Daemon
    Documentation=man:dhcpd(8) man:dhcpd.conf(5)
    Wants=network-online.target
    After=network-online.target
    After=time-sync.target
    
    [Service]
    Type=notify
    EnvironmentFile=-/etc/sysconfig/dhcpd
    ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS
    StandardError=null
    
    [Install]
    WantedBy=multi-user.target
    

    Mas o arquivo de ambiente /etc/sysconfig/dhcpdonde tal variável seria definida tem um aviso, dizendo para não usar mais aquele arquivo:

    cat /etc/sysconfig/dhcpd 
    # WARNING: This file is NOT used anymore.
    
    # If you are here to restrict what interfaces should dhcpd listen on,
    # be aware that dhcpd listens *only* on interfaces for which it finds subnet
    # declaration in dhcpd.conf. It means that explicitly enumerating interfaces
    # also on command line should not be required in most cases.
    
    # If you still insist on adding some command line options,
    # copy dhcpd.service from /lib/systemd/system to /etc/systemd/system and modify
    # it there.
    # https://fedoraproject.org/wiki/Systemd#How_do_I_customize_a_unit_file.2F_add_a_custom_unit_file.3F
    
    # example:
    # $ cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
    # $ vi /etc/systemd/system/dhcpd.service
    # $ ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid <your_interface_name(s)>
    # $ systemctl --system daemon-reload
    # $ systemctl restart dhcpd.service
    

    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, dhcpdserá 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 dhcpdusa soquetes brutos, também não é afetado por iptablesfirewalls.

    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 usar systemctl edit dhcpd.servicepara criar um arquivo de substituição. Obviamente, você precisará lembrar que os arquivos de serviço podem ter várias ExecStart=linhas, portanto, para substituir a linha existente em vez de apenas adicionar outra, você deve executar systemctl edit dhcpd.servicee digitar três linhas:

    [Service]
    ExecStart=
    ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid <your_interface_name(s)>
    

    A primeira linha vazia ExecStart=informa ao systemd que você deseja substituir a ExecStartdefiniçã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 executar systemctl daemon-reloadapós modificar o /etc/systemd/system/dhcpd.servicearquivo.

    Se você usar systemctl edit dhcpd.service, ele executará o equivalente a systemctl daemon-reloadpara você automaticamente.

    • 1
  2. cas
    2021-11-01T21:11:08+08:002021-11-01T21:11:08+08:00

    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:

    /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf br0 wlan0
    
    • 0

relate perguntas

  • linux redhat 7 (ou centos 7) + firewalld mascarar o firewall

  • comando systemctl não funciona no RHEL 6

  • Por que meu switch não está obtendo um endereço do pool especificado

  • Como instalo o docker no RHEL 7 offline?

  • Desativar a maximização automática de janelas no Gnome3

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve