sábado, 14 de março de 2009

Utilizar um PC como gateway para acesso de outro(s) à rede

Esta configuração destina-se a obter uma ligação rápida e eficiente, que permite ligar um computador a outro, que irá partilhar a sua ligação à Internet (bem como eventuais partilhas de ficheiros, caso estejam configuradas).
Na parte final deste post encontram-se os passos para um setup sem modificação dos ficheiros de configuração da rede para obter rapidamente uma ligação ocasional.


ATENÇÃO: Esta rede está configurada desta forma porque o router é o seu principal filtro para o exterior e tenho confiança e controlo sobre todos os computadores que se ligam à rede do router para dentro.

MUITO IMPORTANTE: Não adaptar esta configuração a redes de topologia diferente, mesmo que pareçam semelhantes se não se souber o que se está a fazer. Uma rede mal configurada pode comprometer a segurança e privacidade de todos os computadores e utilizadores que a ela se ligam!


Topologia da rede utilizada e respectivos interfaces de comunicação entre os nós:
Internet <-> Router <-> (wlan0) PC (eth1) <-> (eth0) Portátil

Internet
|
Router
|192.168.2.0/24
|
PC
|10.0.0.0/24
|
Portátil


Configurações no PC:
# echo "allow-hotplug eth1
iface eth1 inet static
address 10.0.0.1
netmask 255.255.255.0
post-up iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE; sysctl net.ipv4.ip_forward=1
post-down iptables -t nat -F; sysctl net.ipv4.ip_forward=0" >> /etc/network/interfaces

Em alternativa ao uso do sysctl pode-se alterar o ficheiro /etc/sysctl.conf, adicionando-se a linha net.ipv4.ip_forward=1. A forma acima é mais aconselhada, já que apenas liga o forwarding durante o tempo em que o portátil estiver ligado a este PC.

No portátil ligado ao PC:
Para a resolução de nomes ser configurada automaticamente ao mudar de rede, convém ter o pacote resolvconf instalado (# apt-get install resolvconf).
# echo "iface eth0 inet static
address 10.0.0.2
netmask 255.255.255.0
gateway 10.0.0.1
# dns-* options are implemented by the resolvconf packages, if it is installed
# Information from http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch03_:_Linux_Networking
dns-nameservers 192.168.2.1" >> /etc/network/interfaces

Esta configuração irá ligar automaticamente o portátil à rede quando for indicado o comando # ifup eth0 ou se este for ligado com o cabo de rede ligado.

Para uma ligação que se pretenda utilizar esporadicamente, poder-se-á obter a mesma configuração sem modificar os ficherios de configuração da rede:

Configurações no PC:

# ifconfig eth1 10.0.0.1
# ifconfig eth1 up
# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# sysctl net.ipv4.ip_forward=1

O comando iptables indica que todo o tráfego deve sair da interface wlan0 com o IP que a ela está associado. Assim, o tráfego que vier da interface eth1 será reencaminhado através da wlan0 sendo visto a partir daí como pertencente àquela rede.
O segundo comando activa a funcionalidade de reencaminhamento de pacotes no Linux.


A tabela de encaminhamento deve ficar então com um aspecto semelhante a este:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth1
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 wlan0

É importante que a rede 10.0.0.0/8 esteja associada à interface eth1.


No portátil ligado ao PC:
# ifconfig eth0 10.0.0.2
# ifconfig eth0 up
# route add default gw 10.0.0.1
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0

# cat /etc/resolv.conf
nameserver 192.168.2.1


Referências:
iptables NAT HOWTO
"Ubuntu Documentation: Internet Connection Sharing"
Quick HOWTO : Ch03 : Linux Networking

Sem comentários: