Encaminhamento de porta com iptables

1

Eu tenho uma topologia de rede estranha e estou tentando, sem sucesso, encaminhar portas.

O problema é que tenho um servidor público e todas as portas precisam ser encaminhadas do roteador para o mesmo servidor (como DMZ).

Minha topologia:

   internet
      |
    router
      |
 /----+--+------\
 |       |      |
pc1   server   etc

O servidor executa o linux (ubuntu) com iptables . O firewall está configurado da seguinte forma:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

# for every port I accept on the server (this part works perfectly)
iptables -A INPUT -p tcp --dport xxxx -j ACCEPT

# for every port I want to forward to pc1 (this is the part that doesn't work)
iptables -A FORWARD -p tcp --dport xxxx -j ACCEPT
iptables -t nat -P PREROUTING -p tcp --dport xxxx -j DNAT --to $PC1_IP
# I've also tried with the following line:
iptables -t nat -P POSTROUTING -p tcp --sport xxxx -j SNAT --to $PC1_IP

mas o encaminhamento parece não funcionar.

Quando eu habilito o encaminhamento, as conexões podem se conectar (ou parecem poder), mas nenhum dado é transferido. Talvez eles tenham acabado de sair.
Quando não habilito o encaminhamento, as conexões são recusadas imediatamente.

O PC de destino foi verificado e pode aceitar conexões.

Eu também tentei farejar um pouco com o Wireshark em ambas as máquinas. No servidor, o pacote é aceito, mas nenhum pacote de saída é encontrado (suponho que deve haver um caso o desvio de DNAT tenha realmente ocorrido). Em pc1 , nenhum pacote é recebido.

Alguém pode sugerir uma correção? Eu estive pesquisando por dias, e eu tentei várias configurações para essa porta - nenhuma delas funcionava.

    
por configurator 17.11.2009 / 07:59

1 resposta

3

tente adicionar

echo 1 > /proc/sys/net/ipv4/ip_forward

para habilitar o roteamento no linux

adicione

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

caso contrário, as respostas dos computadores locais não serão encaminhadas para a Internet.

você também pode querer usar:

iptables -t nat -P PREROUTING -p tcp --dport xxxx -d your.public.ip.addr -j DNAT --to $PC1_IP

se você mantiver sua regra - qualquer tráfego enviado na porta xxxx da rede local será encaminhado para $ PC1_IP

    
por 17.11.2009 / 08:05