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

4

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

Eu também quero que este servidor atenda a solicitações DHCP para redes privadas.

Como configuro um servidor Ubuntu 16.04 para fazer isso?

    
por Thomas Ward 16.09.2017 / 19:16

1 resposta

3
  

NOTA: Isso é para configurar a configuração mais básica possível - um roteador direto para duas ou mais sub-redes, sem restringir o tráfego de sub-rede. Isso pode ser mudado com regras de firewall para lidar melhor com o controle de funções individuais ou com o acesso à rede em sub-redes ou na internet, mas isso está além do escopo deste par Q / A básico "configure-o".

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

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

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

net.ipv4.ip_forward=1

Uma vez que você tenha feito isso, execute o comando sudo sysctl -p para recarregar as configurações do kernel do sistema. Isso permite que a caixa do Ubuntu agora sirva tráfego entre sub-redes e VLANs via IPv4.

(2) Edite o /etc/network/interfaces de sua caixa do roteador para configurar o endereço IP estático nas interfaces que atendem às redes privadas. Neste exemplo, sei que as interfaces são ens37 e ens38 , enquanto ens33 é a interface principal conectada à Internet na minha caixa. Estou deixando ens33 sozinho, mas adicionando as estrofes de configuração ens37 e ens38 :

# 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 semelhante e tiver vmnet# de dispositivos selecionados na VM para isso, verifique se o sistema host NÃO possui um dispositivo anexado ao host para esse vmnet , ou, se isso acontecer, você usará um endereço diferente de .1 no ú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 a solicitações DHCP para suas sub-redes privadas.

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

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

(5) Agora, estamos deixando esse arquivo original em branco para que possamos aplicar nossa configuração.

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 essa configuração de acordo com suas necessidades e atualize a opção 'roteadores' com base no endereço IP definido acima nas configurações de rede.

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

(7) Precisamos dizer ao sistema com quais interfaces se preocupar. Edite /etc/default/isc-dhcp-server e especifique suas interfaces de rede privadas (no meu caso, ens37 e 38 ) na linha INTERFACES="" , para que fique assim:

INTERFACES="ens37 ens38"

Salve o arquivo.

(7) E agora, as regras do firewall. Precisamos informar ao sistema para permitir que a coisa funcione como um roteador e configurar controles e conjuntos de regras apropriados para que isso aconteça. Estou assumindo que você não configurou o firewall aqui, porque estou descrevendo uma configuração do zero.

Se você já configurou ufw nesta máquina, execute sudo ufw disable e, em seguida, desinstale ufw com sudo apt-get remove ufw . O UFW não funciona para o que precisamos, precisamos o poder avançado de iptables diretamente. Para a maioria dos roteadores, devemos não estar usando o UFW em todos os .

Verifique se sabemos o nome da interface da sua interface de rede conectada à Internet. No meu sistema de teste de exemplo, foi 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 roteadores; nós precisamos deles aqui também.   Configure seu iptables da seguinte maneira com os seguintes comandos. Preste atenção aos meus comentários também:

# 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

(8) Instale o pacote iptables-persistent , o que nos permitirá realmente lembrar de nossas regras de iptables e carregá-las na reinicialização.

sudo apt-get install iptables-persistent'

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

(9) 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 dentro das sub-redes particulares configuradas acima!

    
por Thomas Ward 16.09.2017 / 19:16