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!