Na verdade, iptables é adequado muito bem para restringir isso. A tabela filter , em que os pacotes são permitidos ou bloqueados, tem três cadeias. Em cada cadeia, as regras podem ser definidas para corresponder aos pacotes e acionar uma ação se um pacote for correspondido. Contra qual cadeia de regras um pacote é correspondido depende da direção do pacote em relação ao host em que iptables está em execução:
-
INPUT: pacote de entrada destinado ao host local -
OUTPUT: pacotes de saída originados do host local -
FORWARD: Pacotes destinados a outro host e precisam ser encaminhados
Agora, por exemplo, se um pacote tiver que ser encaminhado e não tiver uma regra que corresponda à cadeia FORWARD , ele será tratado de acordo com o policy definido nessa cadeia, que é por padrão: ACCEPT . O pacote terá permissão para passar. Este comando mostrará as políticas e regras, se alguma delas estiver definida:
iptables -t filter -vnL
A tabela é especificada usando -t <table> , filter é a tabela padrão se nenhuma for especificada, então o seguinte comando é equivalente:
iptables -vnL
Para bloquear todos os pacotes para encaminhamento, a política dessa cadeia pode ser definida como REJECT ou DROP da seguinte maneira
iptables -P FORWARD REJECT
Agora, todos os pacotes a serem encaminhados serão rejeitados se nenhuma regra na cadeia FORWARD os aceitar explicitamente.
Para o tráfego interno, você provavelmente deseja uma política REJECT . Isso notificará os clientes imediatamente que o caminho está fechado. Você pode querer as regras DROP para o tráfego originado de uma rede externa.
Para permitir explicitamente que determinados pacotes passem, as regras são anexadas a essas cadeias, que são correspondidas a um pacote principal na ordem em que essas regras foram definidas. Por exemplo, para permitir que todo o tráfego entre em eth0 e com base no encaminhamento seja encaminhado para eth1 :
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
E, por exemplo, para permitir que somente os pacotes da sub-rede 10.0.0.0/24 passem na direção oposta:
iptables -A FORWARD -i eth1 -o eth0 -s 10.0.0.0/24 -j ACCEPT
Para uma descrição detalhada de todos os parâmetros, consulte a página do iptables e o iptables-extensions manpage .