IP Masquerading


Requerimentos e Configurações


Para implementar IPM numa rede ethernet, é necessário duas placas ethernet: uma para a rede mascarada e outra para o mundo exterior. As duas placas precisam ser detectadas pelo Linux. Se toda a rede estiver cabeada até o roteador, o Sistema Linux irá através dele para as demais máquinas.
Também é preciso um kernel versão 1.2.n ou 1.3.n (e fonte). Iremos mostrar passo a passo como aplicar o patch IPM apenas nas versões 1.2.n, já que o pacote 1.3.n já vêm com o IP masquerading incluído. Para maiores informações a respeito da configuração nas versões mais modernas, consulte a página official: LInux IP Masquerading Page.

Implementação do Patch e reconstrução do Kernel


Embora não se recomende, é possível interligar as duas placas Ethernet no computador Linux de modo a criar uma rede contínua com endereços "masqueraded" e números reais do IP. Use isto numa situação em que você gostaria de ter números reais IP e clientes mascarados na mesma rede. Ou, se quiser um servidor proxy na máquina Linux por onde o tráfego da rede dos clientes atravessará. De uma maneira ou de outra, esta double-networking é sempre uma opção, mas tende a aumentar o tráfego da rede já que cada pacote que vai ou vem de uma máquina cliente (ipm) é transmitido duas vezes no mesmo fio -- uma péssima saída para redes ocupadas.

A primeira etapa é determinar a versão do kernel do Linux que que está sendo utilizado e obter a versão apropriada do patch do IPM. Digite o comando:

uname - a

para obter a indicação da versão do sistema. Há duas versões do patch do IPM, e a versão que você necessita depende da versão do kernel. Se você tiver uma versão anterior a 1.2.13, você deve baixar um patch apropriado a esta (coloque-a no diretório /usr/src). Para implementar o patch ipm (qualquer versão), digite o seguinte comando (substitua filename pelo arquivo do patch).

patch < filename

Deverão aparecer longas mensagens, muitas do tipo "hunk succeeded." Não tente compilar o kernel se aparecer alguma mensagem "hunk failed".
Se o processo apresentar esse tipo de erro, certifique-se que você está usando o patch correto e reinstale seu kernel fonte.

Uma vez que o patch já foi aplicado, você está pronto para reconstruir seu kernel com IP masquerading. O primeiro passo para isso é reconfigurá-lo. Vá para o diretório /usr/src/linux e digite:

make config

Você será perguntado diversas vezes sobre seu hardware. A menos que você já tenha reinstalado seu kernel desde a última reconstrução, as respostas serão sempre as default e basta o pressionamento do ENTER seguidas vezes. Algumas vezes você será perguntado sobre a habilitação da rede TCP/IP. Escolha sim e em seguida responda as perguntas da seguinte forma:

IP forwarding/gatewaying
IP multicasting
IP firewalling
IP accounting
IP masquerading (ALPHA)
yes
no
yes
yes
yes

Na seção "It is safe to leave these untouched," pressione Enter para aceitar como defaults. Quando terminar a configuração, digite:

make dep
make clean
make zImage

Se tudo correr bem, seu kernel será recompilado. A compilação deve terminar com mensagens do tipo:

System size is 1234567 bytes.
Compressed is 12345.

Quando estiver de volta ao prompt, faça um backup do kernel digitando o seguinte comando (altere vmlinuz com o nome do seu kernel, se necessário):

cp /vmlinuz /kernelbackup1

Agora, copie o novo kernel para o lugar do outro (novamente mudando vmlinuz com o nome do seu kernel):

cp arch/i386/boot/zImage /vmlinuz

Por fim, digite:

lilo;sync

...para instalá-lo. Novamente, se tudo der certo, você verá uma mensagem assim:

* Added linux

Restarte seu computador e dê um boot com o novo kernel.

Configurando as rotas de rede


Uma vez tendo o kernel apto para rodar IPM, você necessita setar as rotas de transmissão de dados. O endereço de sua rede local deve estar contido dentro daqueles relacionados no item 1 do trabalho. Neste exemplo, usaremos 10.0.0.0 como o endereço da rede. Como sabemos, cada cliente terá um endereço relacionado, do tipo 10.0.0.x, onde x é um número entre 1 e 254. O sistema Linux também necessita de um número IP dentro deste intervalo). Recomenda-se usar o endereço 10.0.0.1 para esta máquina. O Linux estipula nomes para cada interface de rede do sistema. Uma interface de rede pode ser uma placa Ethernet, uma conexão SLIP, PPP ou Token Ring, ou um link para outra rede. Interfaces Ethernet são nomeadas como eth0, eth1, e assim sucessivamente. Quando o Linux é iniciado, ele associa os nomes e automaticamente os detecta. Esteja certo de que a interface com IP Registrado é a eth0 e que a rede mascarada está conectada na eth1. Um dos programas necessários para configurar corretamente sua tabela de IP Masquerading é o "ipfw," chamdo de "IP firewall." Você pode baixar aqui. Coloque este programa no diretório /sbin e torne-o executável, digitando:

chmod u+x /sbin/ipfw

Tente os seguintes comando para estabelecer a rota da rede externa para a rede mascarada, substituindo 10.0.0.1 pelo endereço IP local da sua máquina Linux. e substituindo 10.0.0.0 pelo endereço da rede em si. Mude também a netmask (255.255.255.0) and a netmask bits switch no comando (/24) se necessário. O IP 0.0.0.0 é um loopback e deve funcionar para qualquer setup.

Comandos:

ifconfig eth1 up netmask 255.255.255.0 10.0.0.1
ipfw add masquerade all from 10.0.0.1/24 to 0.0.0.0/0
route add -net 10.0.0.0 gw 10.0.0.1 dev eth1

A única saída que você deve ver é do comando ipfw e deve ser assim:

add masquerading all from 10.0.0.1/24 to 0.0.0.0/0

Mude o número IP de uma das máquinas clientes conectadas a rede mascarada de 10.0.0.2 (por ex.) para um ainda não utilizado, se necessário. O gateway deve apresentar o endereço da máquina Linux mascarada (10.0.0.1 no nosso exemplo). A netmask 255.255.255.0 deve funcionar perfeitamente para todo tipo de configuração.

IP address: 10.0.0.2
Gateway:10.0.0.1
Netmask:255.255.255.0

Uma vez que o cliente estiver devidamente configurado, tente dar um ping para ver se está presente. No prompt do Linux digite: (substitua 10.0.0.2 pelo endereço correspondente):

ping 10.0.0.2

Se o ping indicar que pacotes estão indo e voltando, a setup está correto. Coloque então os comandos ifconfig, ipfw e route mencionados anteriormente no início do arquivo rc.local ou no fim do rc.inet1 ou rc.inet2.

Agora, você está pronto para dar um reboot e ver se o mascaramento se inicia automaticamente durante o startup (como deve ser). Vá em frente! Tente navegar na internet através dos clientes que foram testados pelo ping para ter certeza que tudo está funcionando como deveria. Assumindo que sim, você está pronto para configurar cada cliente de sua rede com um IP diferente, como fizemos nos passos anteriores. Para cada um, não se esqueça de testar exaustivamente.

Voltar para a página inicial