Ubuntu Server como router no VirtualBox

Quando trabalhamos com redes, é importante ter uma forma de testar as nossas configurações. A nível académico e pessoal, é muito utilizado o VirtualBox, entre outros softwares que permitem virtualizar um sistema.

Neste artigo, pretendo mostrar como configurar uma máquina virtual com Ubuntu Server, para agir como roter entre a interface interna e a externa.

Este é um cenário muito utilizado para testar serviços num determinado servidor, através de clientes virtualizados.

A imagem abaixo, mostra o cenário, que interliga o cliente ao servidor, através da rede interna do VirtualBox. Também mostra a ligação do servidor, à rede real.

clienteservidordiagram

Este cenário é muito utilizado, pois permite testar serviços num servidor, sem perturbar a rede local real.

Neste cenário, para que os clientes ligados à rede interna, tenham acesso à rede real e Internet, é necessário que o servidor haja como roter. Onde passa os pacotes da rede interna para a externa e vise versa. Desta forma, permite aos clientes virtualizados, atualizar o sistema, navegar na Internet, etc.

O Linux, é um sistema muito versátil, em todos os aspetos, pelo menos na minha humilde opinião. Polo a trabalhar como roter é bem simples, pois ele já está preparado para tal. Apenas temos que ativar a passagem de pacotes e inserir umas regras de FireWall.

Vamos lá então configurar o servidor para agir como um roter.

Para permitir a passagem de pacotes de uma interface para outra, temos que ativar a seguinte opção:

# echo 1 > /proc/sys/net/ipv4/ip_forward;

Ao lançarmos este comando no terminal, estamos a ativar a passagem de pacotes no Linux, para o ipv4.

Agora, só nos falta as regras de FireWall. Na imagem acima, podemos constatar, que o servidor usa a interface eth0 para a rede interna e a interface eth1 para a rede externa. Se utilizarem outra configuração nos vossos servidores, têm de adequar as regras. Bastando para isso indicar as interfaces corretas.

As seguintes regras, permitem a passagem de pacotes à interface eth0 e eth1.

# iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE;
# iptables --append FORWARD --in-interface eth0 -j ACCEPT;

Neste momento, o kernelLinux, já está pronto para agir como roter e os clientes, já poderão ter acesso à rede local real, bem como à Internet.

Para que estas configurações sobrevivam a um reinicio do servidor, é necessário, que sejam guardadas e inseridas sempre que o servidor arranque. Podemos conseguir este objectivo de várias maneiras, mas para simplificar eu irei usar o ficheiro /etc/rc.local. Este ficheiro por defeito vem apenas com o comando exit 0. Este ficheiro é executado após todos os serviços terem arrancado. O que permite, que estas três simples regras, sejam executas após todos os serviços.

Temos que editar o ficheiro, /etc/rc.local para ficar 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 que seja possível rotear entre interfaces
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE;
iptables --append FORWARD --in-interface eth0 -j ACCEPT;

#Permitir o forward de pacotes v4 no Kernel
echo 1 > /proc/sys/net/ipv4/ip_forward;

exit 0

Visto, que trabalho muito com este tipo de configuração, criei um script que me auxilia nesta tarefa. Chamei-lhe rconfig.sh e está em anexo a este artigo. O script, através de menus, permite-nos escolher as interfaces, interna e externa e trata de guardar as regras corretamente.

Para que possamos executa-lo fazemos o seguinte no servidor:

$ wget https://www.ncdc.pt/wp-content/uploads/2015/07/rconfig.sh
$ sudo chmod +x rconfig.sh
$ sudo ./rconfig.sh

Basta apenas indicar qual é a interface externa e a interface interna e já temos o servidor a agir como roter.

Espero que este pequeno artigo possa ajudar alguém!

Comentem, partilhem e experimentem!

 

Anexos:

Artigos Relacionados:

Um comentário sobre “Ubuntu Server como router no VirtualBox

Deixe uma resposta