Um gateway é um sistema de ligação de várias redes. Este termo frequentemente se refere ao "ponto de saída" de uma rede local no caminho obrigatório para endereços IP externos. O gateway está ligado a cada uma das redes que une e atua como um roteador para transmitir pacotes IP entre suas várias interfaces.
Quando uma rede local usa um intervalo de endereços privado (não roteável na Internet), o gateway precisa implementar mascaramento de endereço para que as máquinas na rede possam se comunicar com o mundo exterior. A operação de mascaramento é um tipo de operação de proxy no nível de rede: cada conexão saindo de uma máquina interna é substituída com uma conexão do próprio gateway (já que o gateway tem um endereço externo e roteável), os dados passando pela conexão mascarada são enviados para a nova, e os dados voltando como resposta são enviados através da conexão mascarada para a máquina interna. O gateway usa um intervalo de portas TCP dedicadas para este objetivo, normalmente com números bastante altos (acima de 60000). Cada conexão vindo de uma máquina interna aparece então para o mundo exterior como uma conexão vindo de uma destas portas reservadas.
O gateway também pode realizar dois tipos de NAT (network address translation ou tradução de endereço de rede). O primeiro tipo, DNAT (Destination NAT ou NAT no destino) é uma técnica para alterar o endereço IP de destino (e/ou a porta TCP ou UDP) para uma conexão (geralmente) entrando. O mecanismo de rastreio de conexão também altera os seguintes pacotes na mesma conexão para garantir a continuidade na comunicação. O segundo tipo de NAT é o SNAT (Source NAT ou NAT na origem), do qual masquerading (ou mascaramento) é um caso particular; SNAT altera o endereço IP de origem (e/ou a porta TCP ou UDP) de uma conexão (geramente) saindo. Assim como no DNAT, todos os pacotes na conexão são apropriadamente manipulados pelo mecanismo de rastreio de conexão. Observe que o NAT só é relevante para o IPv4 e seu espaço de endereços limitado; no IPv6, a ampla disponibilidade de endereços reduz grandemente a utilidade de NAT permitindo que todo endereço "interno" possa ser diretamente roteável na Internet (isto não implica que as máquinas internas serão acessíveis, uma vez que firewalls intermediários possam filtrar o tráfego).
Chega de teoria, vamos para a prática. Fazer do Debian um gateway é simplesmente habilitar a opção apropriada no núcleo Linux, através do sistema de arquivos virtual /proc/
:
#
echo 1 > /proc/sys/net/ipv4/conf/default/forwarding
Esta opção também pode ser automaticamente habilitada no boot se em /etc/sysctl.conf
a opção net.ipv4.conf.default.forwarding
estiver com valor 1
.
Exemplo 10.1. O arquivo /etc/sysctl.conf
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
O mesmo efeito pode ser obtido para o IPv6 simplesmente substituindo o ipv4
por ipv6
no comando manual e usando a linha net.ipv6.conf.all.forwarding
em /etc/sysctl.conf
.
Habilitando mascaramento IPv4 é uma operação um pouco mais complexa que envolve configurar o firewall netfilter.