Estrutura do IPTables 2: a tabela nat
Quais os poderes da tabela nat existente no iptables? E as listas PREROUTING, POSTROUTING, para que servem?
Parte 4: Lista nat OUTPUT
Observe que alterações de destino, como porta ou IP, só podem ser realizados no gancho PREROUTING. Infelizmente, porém, existe um problema aí, pois observe que pacotes gerados por processos locais não passam por este gancho.
Para evitar que pacotes gerados localmente fossem condenados a não ter meios de alterar parâmetros de destino, o nat também atua no gancho OUTPUT.
As regras do nat OUTPUT tem o mesmo propósito e a mesma sintaxe das do gancho PREROUTING, com a única diferença de operar pacotes originados por processos locais.
Eu particularmente uso isto para redirecionar alguns tráfegos SSH. Por exemplo, um dos servidores que administro, para diminuir as tentativas de força bruta, está operando o SSH na porta 2215 e não na porta 22 padrão. Para evitar o incômodo de ter que por -p 2215 cada vez que executo o meu cliente:
$ ssh meuServidor -p 2215
Eu optei por inserir a seguinte regra de iptables:
iptables -t nat -A OUTPUT -p tcp -d IPDOMEUSERVIDOR --dport 22 -j DNAT --to :2215
Assim não preciso ficar me lembrando de por -p no ssh, no scp, no cvs, enfim...
Faça um teste no seu Linux (como root):
iptables -t nat -I OUTPUT -p tcp --dport 90 -j DNAT --to :80
Depois desta regra você pode acessar o VOL também desta forma:
http://www.vivaolinux.com.br:90/
O iptables se encarrega de trocar a porta 90 para a 80 e destrocá-la quando o pacote retornar, sem que precise de uma regra específica para isto (este comportamento de desfazer a troca sozinho não é só da lista OUTPUT, mas em todas. Em algumas ocasiões, porém, quando se estiver realizando nat 1:1 deve-se colocar regras de ida e de retorno).
Para evitar que pacotes gerados localmente fossem condenados a não ter meios de alterar parâmetros de destino, o nat também atua no gancho OUTPUT.
As regras do nat OUTPUT tem o mesmo propósito e a mesma sintaxe das do gancho PREROUTING, com a única diferença de operar pacotes originados por processos locais.
Eu particularmente uso isto para redirecionar alguns tráfegos SSH. Por exemplo, um dos servidores que administro, para diminuir as tentativas de força bruta, está operando o SSH na porta 2215 e não na porta 22 padrão. Para evitar o incômodo de ter que por -p 2215 cada vez que executo o meu cliente:
$ ssh meuServidor -p 2215
Eu optei por inserir a seguinte regra de iptables:
iptables -t nat -A OUTPUT -p tcp -d IPDOMEUSERVIDOR --dport 22 -j DNAT --to :2215
Assim não preciso ficar me lembrando de por -p no ssh, no scp, no cvs, enfim...
Faça um teste no seu Linux (como root):
iptables -t nat -I OUTPUT -p tcp --dport 90 -j DNAT --to :80
Depois desta regra você pode acessar o VOL também desta forma:
http://www.vivaolinux.com.br:90/
O iptables se encarrega de trocar a porta 90 para a 80 e destrocá-la quando o pacote retornar, sem que precise de uma regra específica para isto (este comportamento de desfazer a troca sozinho não é só da lista OUTPUT, mas em todas. Em algumas ocasiões, porém, quando se estiver realizando nat 1:1 deve-se colocar regras de ida e de retorno).
Já tá nos favoritos.