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 / ubuntu / Perguntas / 956457
Accepted
Thomas Ward
Thomas Ward
Asked: 2017-09-17 09:16:50 +0800 CST2017-09-17 09:16:50 +0800 CST 2017-09-17 09:16:50 +0800 CST

Como configuro um servidor Ubuntu para ser o roteador de duas redes privadas na minha rede e faço o endereçamento DHCP?

  • 772

Eu quero usar meu servidor Ubuntu para ser um roteador para duas redes privadas na minha rede.

Também quero que este servidor atenda às solicitações de DHCP para as redes privadas.

Como configuro um servidor Ubuntu 16.04 para fazer isso?

networking
  • 1 1 respostas
  • 14309 Views

1 respostas

  • Voted
  1. Best Answer
    Thomas Ward
    2017-09-17T09:16:50+08:002017-09-17T09:16:50+08:00

    NOTA 1: Isto é para definir a configuração mais básica possível - um roteador direto para duas ou mais sub-redes, sem restringir o tráfego entre as sub-redes. Isso pode ser alterado com regras de firewall para lidar melhor com o controle de funções individuais ou acesso à rede em sub-redes ou saída para a Internet, no entanto, isso está além do escopo deste par básico de perguntas e respostas de "configuração".

    NOTA 2: No momento em que esta resposta foi escrita, o Ubuntu ainda não usava o Netplan para seu sistema de controle de rede para configurações padrão. Esta resposta foi escrita sem levar em consideração o Netplan.

    Você precisará de um servidor Ubuntu com 3 interfaces de rede, é claro, uma para a interface conectada à Internet e duas interfaces de rede privada.

    Depois disso, basta seguir este guia para configurar este servidor como roteador:

    (1) Editar /etc/sysctl.conf. Encontre e descomente esta linha:

    net.ipv4.ip_forward=1
    

    Feito isso, execute o comando sudo sysctl -ppara recarregar as configurações do kernel do sistema. Isso permite que a caixa do Ubuntu agora atenda ao tráfego entre sub-redes e VLANs via IPv4.

    (2) Edite a caixa do roteador /etc/network/interfacespara configurar o endereço IP estático nas interfaces que atendem às redes privadas. Neste exemplo, eu sei que as interfaces são ens37e ens38, while ens33é a principal interface conectada à Internet em minha caixa. Estou saindo ens33sozinho, mas adicionando estrofes ens37de ens38configuração:

    # Private Subnet 1
    auto ens37
    iface ens37 inet static
        address 10.76.100.1
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8 8.8.4.4
    
    # Private Subnet 2
    auto ens38
    iface ens38 inet static
        address 10.76.101.1
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8 8.8.4.4
    

    Ajuste os endereços de rede e os nomes de interface de acordo com sua configuração.

    **Observe que, se você estiver usando o VMware Workstation ou similar e tiver vmnet#dispositivos selecionados na VM para isso, certifique-se de que o sistema host NÃO tenha um dispositivo conectado ao host para isso vmnetou, se tiver, use um endereço diferente .1do último octeto na caixa do seu roteador.

    (3) Instale o software do servidor DHCP. Vamos configurar isso em etapas posteriores.

    sudo apt-get install isc-dhcp-server
    

    Isso permitirá que a caixa do roteador atenda às solicitações de DHCP para suas sub-redes privadas.

    (4) Primeiro, copie a configuração do servidor DHCP que foi instalada automaticamente para um arquivo de backup.

    sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.dist
    

    (5) Agora, estamos deixando o arquivo original em branco para que possamos aplicar nosso config.

    echo "" | sudo tee /etc/dhcp/dhcpd.conf
    

    (6) Agora vamos usar nossa configuração:

    # DHCP Server config
    
    # The ddns-updates-style parameter controls whether or not the server will
    # attempt to do a DNS update when a lease is confirmed. We default to the
    # behavior of the version 2 packages ('none', since DHCP v2 didn't
    # have support for DDNS.)
    ddns-update-style none;
    
    # If this DHCP server is the official DHCP server for the local
    # network, the authoritative directive should be uncommented.
    authoritative;
    
    # Use this to send dhcp log messages to a different log file (you also
    # have to hack syslog.conf to complete the redirection).
    log-facility local7;
    
    # Specify the domain name servers to specify for each subnet.
    option domain-name-servers 8.8.8.8;
    option domain-name-servers 8.8.4.4;
    
    
    # DHCP Subnet configurations
    
    # Subnet 1 - ens37
    subnet 10.76.100.0 netmask 255.255.255.0 {
      default-lease-time 86400;
      max-lease-time 86400;
    
      range 10.76.100.10 10.76.100.200;
      option routers 10.76.100.1;
      option subnet-mask 255.255.255.0;
      option broadcast-address 10.76.100.255;
    }
    
    # Subnet 2 - ens38
    subnet 10.76.101.0 netmask 255.255.255.0 {
      default-lease-time 86400;
      max-lease-time 86400;
    
      range 10.76.101.10 10.76.101.200;
      option routers 10.76.101.1;
      option subnet-mask 255.255.255.0;
      option broadcast-address 10.76.101.255;
    }
    

    Ajuste esta configuração de acordo com suas necessidades e certifique-se de atualizar a opção 'roteadores' com base em qualquer endereço IP definido acima em suas configurações de rede.

    Assim que terminar de ajustar o arquivo conforme necessário, salve o arquivo.

    (7) Precisamos dizer ao sistema quais interfaces devem ser consideradas. Edite /etc/default/isc-dhcp-servere especifique suas interfaces de rede privada (no meu caso, ens37e 38) na INTERFACES=""linha, para que fique assim:

    INTERFACES="ens37 ens38"
    

    Salve o arquivo.

    (8) E agora, as regras do firewall. Precisamos dizer ao sistema para permitir que a coisa funcione como um roteador e configurar os controles e conjuntos de regras adequados para que esse seja o caso. Presumo que você não tenha configurado o firewall aqui, porque estou descrevendo uma configuração do zero.

    Se você já configurou ufwnesta máquina, execute sudo ufw disablee desinstale ufwcom sudo apt-get remove ufw. O UFW não funciona para o que precisamos, precisamos do poder avançado iptablesdiretamente. Para a maioria dos roteadores, não devemos usar o UFW .

    Certifique-se de saber o nome da interface de sua interface de rede conectada à Internet. No meu sistema de teste de exemplo, era ens33, mas pode ser diferente no seu sistema. Certifique-se de que também conhecemos as interfaces de rede para nossas redes privadas para as quais seremos o roteador; precisamos deles aqui também. Configure o seu iptablesda seguinte forma com os seguintes comandos. Preste atenção também nos meus comentários:

    # Accept localhost traffic (local traffic to the system itself)
    sudo iptables -A INPUT -i lo -j ACCEPT
    
    # Accept all traffic related to established connections
    sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    
    # Drop traffic coming from the Internet into our Internet-connected interface (except for traffic related to other established connections)
    # Update this to match the interface name of your Internet-connected interface.
    sudo iptables -A INPUT -i ens33 -j DROP
    
    # Accept traffic inbound from the local subnets we are acting as a router for.
    # CHANGE THESE INTERFACE NAMES ACCORDING TO YOUR SETUP!
    sudo iptables -A INPUT -i ens37 -j ACCEPT
    sudo iptables -A INPUT -i ens38 -j ACCEPT
    
    # Since we don't want to have our system completely open to the Internet, we need
    # to drop all other traffic coming to our network.  This way, we can prevent the
    # Internet at large from accessing our network directly from the Internet.
    sudo iptables -A INPUT -j DROP
    
    # Add rules to accept forwarding on the interfaces we are doing routing for.
    # CHANGE THESE INTERFACE NAMES ACCORDING TO YOUR SETUP!
    sudo iptables -A FORWARD -i ens37 -j ACCEPT
    sudo iptables -A FORWARD -o ens37 -j ACCEPT
    sudo iptables -A FORWARD -i ens38 -j ACCEPT
    sudo iptables -A FORWARD -o ens38 -j ACCEPT
    
    # Add rules to the NAT table to allow us to actually let traffic on the interfaces
    # which we are doing routing for go out to the Internet masquerade as our Internet-
    # connected interface.
    #
    # ADJUST THE IP RANGES HERE TO MATCH THE IP RANGES AND THE SUBNETS FOR YOUR OWN
    # ENVIRONMENT!  Remember that the IP address of 10.76.100.1 for the router, and
    # the netmask 255.255.255.0 is equal to the network range/CIDR of 10.76.100.0/24
    # for the purposes of these rules.
    sudo iptables -t nat -A POSTROUTING -s 10.76.100.0/24 ! -d 10.76.100.0/24 -j MASQUERADE
    sudo iptables -t nat -A POSTROUTING -s 10.76.101.0/24 ! -d 10.76.101.0/24 -j MASQUERADE
    

    (9) Instale o iptables-persistentpacote que nos permitirá realmente lembrar nossas iptablesregras e carregá-las na reinicialização.

    sudo apt-get install iptables-persistent`
    

    Quando ele pedir para salvar as regras existentes, selecione "Sim" para IPv4 e IPv6.

    (10) Teste! Configure outro sistema em uma das redes privadas que você configurou e certifique-se de que, uma vez configurado, ele possa se comunicar com a Internet e tenha um endereço DHCP configurado nas sub-redes privadas configuradas acima!

    • 6

relate perguntas

Sidebar

Stats

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

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

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