Departamento de Informática

Engenharia de Sistemas e Informática


Como configurar um PC de modo a servir de Gateway para a Internet

... em Linux?

 

 ...  no server está a "correr" Slackware 8 e nesse server existem 2 placas de rede.

-Uma delas serve para receber e enviar informação de e para o cable-modem, e é configurada normalmente por DHCP. (eth0)
-A outra servirá para ligar a um hub. Essa placa de rede terá um IP estático dentro da gama de IPs atribuídos às redes internas, neste caso 192.168.0.1 em que a subnet é 255.255.255.0. (eth1)

Como só existem 2 computadores, não é utilizado hub, portanto esta segunda placa de rede está ligada por um cabo twisted à placa de rede do único cliente da rede.

Depois das placas de rede configuradas é preciso por o iptables (ou para quem não gosta do iptables e não se quer modernizar ipchains ou até ipfwadm) a fazer o NAT (Network Address Translation). O nat é um estratagema que serve para o server mapear quem fez os pedidos para a internet e para quem vão as respostas da Internet.
Ou seja, a informação que vem do cliente para a Internet é alterada no server e no IP de origem é lá posto o IP do server (o único acessível pelo exterior) e o server sabe que a resposta àquele pacote é para o cliente que o pediu, portanto na resposta o server altera o pacote e reenvia-o para o cliente da rede interna. O modo de funcionamento não se afasta muito disto :)

Para fazer o server servir de gateway é preciso apenas que o iptables tenha lá essa informação. Esta linha chegará para isso:

/usr/bin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

Este comando diz ao kernel de linux que na tabela de nat (-t nat), na chain POSTROUTING (-A POSTROUTING) para todos os dados que saiam para a internet (-o eth0) -> (eth0 - interface do cable-modem) que venham da rede interna (-s 192.168.0.0/24), deverão ser NAT'ed (-j MASQUERADE)

Para se adaptar a cada caso, esta linha poderá ter que ser alterada para o verdadeiro interface exterior (por exemplo -o ppp0 para uma ligação à Internet analógica (por modem)) e para o verdadeiro endereço da subnet (por exemplo -s 192.168.1.0/24 para uma subnet 192.168.1)

Mais, este comando terá que ser executado cada vez que a máquina arranca.

Quanto aos servers e segurança, aconselha-se a ler os howto's relacionados com firewalling, proxy e iptables e montar uma firewall. Esta poderá ser montada no mesmo script que introduz a regra de MASQUERADE no iptables; de facto a firewall é implementada com o iptables.

Talvez falte dizer que os clientes terão que ter configurado IPs estáticos dentro da mesma subnet que o server e terão que ter configurado o IP da gateway (interno, no caso 192.168.0.1) e voilá! o kernel do server trata do resto.

Ver mais:

http://www.linux.trix.net/dicas_freesco2.htm

http://linux.matrix.com.br/dicas_lrp.htm

http://leaf.sourceforge.net/devel/khadley/packages.html

http://lrp.ramhb.co.nz/docs/ethernet2.htm