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'