Configure o comportamento da filtragem NAT com iptables

Configure o comportamento da filtragem NAT com iptables

Estou usando esta regra para configurar o SNAT:

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 193.49.142.107:4000

Quero especificar uma regra para filtrar pacotes não destinados ao endereço interno e à porta que iniciou a sessão. Além disso, para receber pacotes de um terminal externo específico, é necessário que o terminal interno envie os pacotes primeiro para o endereço IP desse terminal externo específico. (Filtragem Dependente de Endereço NAT)

Exemplo:

Uma máquina com IP interno e porta (X:x) que está atrás do NAT abre uma conexão para um servidor com IP Y. Então com a regra devo poder permitir apenas conexões provenientes do endereço IP Y e destinadas a (X: x). Todas as outras conexões serão descartadas.

Responder1

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -P FORWARD -j DROP
iptables -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT

O que essas regras fazem?

  1. -A POSTROUTING -o eth1 -j MASQUERADEoculta seus IPs internos conforme os pacotes saem da sua rede
  2. -P FORWARD -j DROPdefine a política padrão para sua cadeia FORWARD como DROP
  3. -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPTpermite conexões FORWARDed novas e estabelecidas
  4. -A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPTpermite apenas conexões FORWARD estabelecidas em

As regras acima pressupõem que você esteja usando esta caixa como um gateway/firewall conectado eth1à sua WAN e eth0conectado à sua LAN.

Leitura Adicional:Pós-roteamento e mascaramento de IP

EDITAR

Para configurar o encaminhamento de porta "condicional":

Por porta de origem

iptables -A PREROUTING -t nat -i eth1 -p tcp --sport [trusted_source_port] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT

Por IP de origem

iptables -A PREROUTING -t nat -i eth1 -p tcp -s [trusted_source_ip] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT

informação relacionada