A finalidade do Mascaramento de IP IP Masquerading é permitir que máquinas com um endereço IP privado e não encaminhável na sua rede, acedam à Internet através da máquina que está a fazer o mascaramento. O tráfego da sua rede privada destinado à Internet tem que ser manipulado para que as respostas possam ser encaminhadas de volta à máquina que efectuou o pedido. Para fazer isto o kernel deve alterar o endereço IP de origem de cada pacote para que a resposta possa ser encaminhada de volta a si, em vez de ser encaminhada para o endereço IP privado que originou o pedido, o que é impossível através da Internet. O Linux utiliza o Registo do Caminho de Ligação Connection Tracking (conntrack) para manter o registo das ligações e a que máquinas pertencem e reencaminha os pacotes de acordo com essa informação. O tráfego que sai da sua rede privada é assim "mascarado" como tendo sido originado na máquina Ubuntu que funcione como porta de ligação. Este processo é referido na documentação da Microsoft como Partilha de Ligação à Internet.
Isso pode ser conseguido com uma única regra de iptables, que pode diferir ligeiramente na sua configuração de rede:
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
O comando anterior assume que o espaço do seu endereço privado é 192.168.0.0/16 e que o seu interface com a internet é o ppp0. A sintaxe explica-se da seguinte forma:
-t nat -- a regra deve ser adicionada na tabela de nat
-A POSTROUTING -- a regra deve ser adicionada (-A) à cadeia de POSTROUTING
-s 192.168.0.0/16 -- a regra aplica-se a tráfego originário do grupo de endereços indicado
-o ppp0 -- a regra aplica-se a tráfego definido para ser encaminhado através do dispositivo de rede especificado
-j MASQUERADE -- O tráfego coberto por esta regra será "encaminhado - jump" (-j) para o alvo MASCARADO para ser manipulado conforme acima descrito
Cada entrada da tabela de filtragem (a tabela por omissão, e onde a maioria ou mesmo toda a filtragem de pacotes ocorre) tem uma política de ACCEPT por defeito, mas se está a criar uma firewall em adição a um equipamento de gateway, poderá ter alterado esta política para DROP ou REJECT, o que em qualquer dos casos exigirá que o seu tráfego mascarado seja autorizado através do comando FORWARD para que a regra funcione:
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT
Este comando permitirá o estabelecimento das ligações a partir da sua rede local para a internet e que todo o tráfego relacionado regresse à máquina que o iniciou.