Router
NAT com Ubuntu 16.04.3
Configure a rede do ESXi
----- OU -----
Crie uma máquina virtual com duas ou mais interfaces de rede
Instale e configure o Ubuntu
Descrição da configuração do servidor NAT VM com serviços de DHCP e NAT.
Serviço de DHCP
Para configurar o DHCP server em MÚLTIPLAS interfaces, utilize o seguinte procedimento:
From: https://rbgeek.wordpress.com/2012/05/09/multiple-interface-dhcp-server-on-ubuntu-12-04lts/
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install isc-dhcp-server
Leia até o final para versões mais novas de Linux. Nas versões mais antigas do Ubuntu, configurar o endereço IP estático nas redes LANs editando o arquivo /etc/network/interfaces:
Para versões mais novas de Linux, edite o arquivo /etc/dhcpcd.conf:
$ sudo cp /etc/dhcpcd.conf{,.velho}
$ sudo vi /etc/dhcpcd.conf
E inclua (ou modifique a já existente:
# Example static IP configuration:
interface eth0
static ip_address=10.0.1.1/24
static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=10.0.0.1
static domain_name_servers=10.0.0.1 8.8.8.8
Configuração do servidor DHCP:
Edite o arquivo /etc/default/isc-dhcp-server para informar quais interfaces serão servidas por DHCP (ens192 ens224 ens256 ens161 ens193):
$ sudo cp /etc/default/isc-dhcp-server{,.velho}
$ sudo vi /etc/default/isc-dhcp-server
Configure o DHCP para cada interface modificando o arquivo /etc/dhcp/dhcpd.conf:
$ sudo cp /etc/dhcp/dhcpd.conf{,.velho}
$ sudo vi /etc/dhcp/dhcpd.conf
Inclua ou modifique as seguintes informações:
#
# Sample configuration file for ISC dhcpd for Debian
#
# Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as
# configuration file instead of this file.
#
#
# 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;
# option definitions common to all supported networks...
option domain-name "inf.puc-rio.br";
option domain-name-servers 139.82.16.3, 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
# 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;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
#subnet 10.152.187.0 netmask 255.255.255.0 {
#}
#
# minha configuracao
#
# Rede do InterSCity
subnet 172.16.0.0 netmask 255.255.255.0 {
option routers 172.16.0.1;
option subnet-mask 255.255.255.0;
option broadcast-address 172.16.0.255;
range 172.16.0.2 172.16.0.10;
}
#
# Rede do ContextNet1 (regiao A)
subnet 172.16.1.0 netmask 255.255.255.0 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 172.16.1.255;
range 172.16.1.2 172.16.1.10;
}
#
# Rede do ContextNet2 (regiao B)
subnet 172.16.2.0 netmask 255.255.255.0 {
option routers 172.16.2.1;
option subnet-mask 255.255.255.0;
option broadcast-address 172.16.2.255;
range 172.16.2.2 172.16.2.10;
}
#
# Rede do ContextNet3 (regiao C)
subnet 172.16.3.0 netmask 255.255.255.0 {
option routers 172.16.3.1;
option subnet-mask 255.255.255.0;
option broadcast-address 172.16.3.255;
range 172.16.3.2 172.16.3.10;
}
#
# Rede do ContextNet4 (regiao D)
subnet 172.16.4.0 netmask 255.255.255.0 {
option routers 172.16.4.1;
option subnet-mask 255.255.255.0;
option broadcast-address 172.16.4.255;
range 172.16.4.2 172.16.4.10;
}
Configuração do NAT
A configuração a seguir deve ser implementada no Ubuntu a partir da versão 18.04. Para versões anteriores (16.04 ou anteriores), veja texto logo a seguir.
Ubuntu 18.04 ou mais recente
Extraído de https://askubuntu.com/questions/1050816/ubuntu-18-04-as-a-router
Primeiro, habilitar o firewall UFW com o comando a seguir:
$ sudo ufw enable
Apague qualquer regra do iptables (será que realmente é necessário???) com os comandos a seguir:
$ sudo iptables --flush # Flush all the rules in filter and nat tables
$ sudo iptables --table nat --flush
$ sudo iptables --delete-chain # Delete all chains that are not in default filter and nat table
$ sudo iptables --table nat --delete-chain
Habilite o encaminhamento de pacotes pelo ufw. Edite o arquivo /etc/default/ufw com os seguintes comandos:
$ sudo cp /etc/default/ufw{,.velho}
$ sudo vi /etc/default/ufw
Modifique o valor de DEFAULT_FORWARD_POLICY para ACCEPT como mostra o texto a seguir:
DEFAULT_FORWARD_POLICY="ACCEPT"
Edite o arquivo /etc/ufw/sysctl.conf com os comandos a seguir:
$ sudo cp /etc/ufw/sysctl.conf{,.velho}
$ sudo vi /etc/ufw/sysctl.conf
E remova os comentários das seguintes linhas:
net/ipv4/ip_forward=1
net/ipv4/conf/all/forwarding=1
net/ipv6/conf/default/forwarding=1 # if using IPv6
Edite o arquivo /etc/ufw/before.rules com os seguintes comandos:
$ sudo cp /etc/ufw/before.rules{,.velho}
$ sudo vi /etc/ufw/before.rules
E inclua as seguintes linhas logo abaixo dos comentários do início do arquivo, onde ens13 é a interface de saída e 172.16.0.0/16 são as redes internas do NAT:
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from eth1 through eth0.
-A POSTROUTING -s 172.16.0.0/16 -o ens13 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
Reinicie o firewall com os comandos a seguir:
$ sudo ufw disable
$ sudo ufw enable
Ubuntu 16.04 ou anteriores
Extraído de http://www.yourownlinux.com/2013/07/how-to-configure-ubuntu-as-router.html
Extraído de https://www.howtoforge.com/nat-gateway-iptables-port-forwarding-dns-and-dhcp-setup-ubuntu-8.10-server
Habilite o encaminhamento de pacotes IP modificando a linha a seguir no arquivo /etc/sysctl.conf:
net.ipv4.ip_forward=1
Considerando as seguintes configurações de interface de rede:
ens160: externo
ens195: interno
ens224: interno
ens255: interno
Inclua as regras no iptables inserindo as seguintes linhas no final do arquivo /etc/rc.local:
Para fazer port forwarding, use o comando a seguir:
-
---- OU -----
O arquivo final será assim:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# para habilitar o NAT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o ens160 -j MASQUERADE
# para fazer port forward para o InterSCity
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 8000 -j DNAT --to 172.16.0.201:8000
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 8001 -j DNAT --to 172.16.0.201:8001
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 8080 -j DNAT --to 172.16.0.201:8080
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 8443 -j DNAT --to 172.16.0.201:8443
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 8888 -j DNAT --to 172.16.0.201:8888
# para fazer port forward para o InterSCity A
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 18000 -j DNAT --to 172.16.1.202:8000
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 18001 -j DNAT --to 172.16.1.202:8001
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 18080 -j DNAT --to 172.16.1.202:8080
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 18443 -j DNAT --to 172.16.1.202:8443
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 18888 -j DNAT --to 172.16.1.202:8888
# para fazer port forward para o InterSCity B
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 28000 -j DNAT --to 172.16.2.202:8000
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 28001 -j DNAT --to 172.16.2.202:8001
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 28080 -j DNAT --to 172.16.2.202:8080
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 28443 -j DNAT --to 172.16.2.202:8443
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 28888 -j DNAT --to 172.16.2.202:8888
# port forward para o gateway do ContextNet 1
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 5501 -j DNAT --to 172.16.1.202:5500
/sbin/iptables -t nat -A PREROUTING -p udp -i ens160 --dport 5501 -j DNAT --to 172.16.1.202:5500
# port forward para o gateway do ContextNet 2
/sbin/iptables -t nat -A PREROUTING -p tcp -i ens160 --dport 5502 -j DNAT --to 172.16.2.202:5500
/sbin/iptables -t nat -A PREROUTING -p udp -i ens160 --dport 5502 -j DNAT --to 172.16.2.202:5500
exit 0
Verificação final
Reinicie o computador e verifique se o processo abaixo está sendo executado:
$ ps aux | grep -E 'hostapd|udhcpd'