iptables question: redirecionamento da porta x para uma porta ssh de outra máquina na rede

3

Eu tenho um Ubuntu PC, com duas placas de rede, agindo como um roteador. Um cartão eth0 está conectado à internet e outro eth1 está conectado à LAN. Eu quero expor portas ssh de diferentes hosts na LAN para diferentes números de porta para o mundo exterior. isto é "ssh user @ router -p 1234" deve ir para a porta ssh do host1 e "ssh user @ router -p 3456" deve ssh para host2. Eu adicionei a seguinte regra de iptable para o host1, mas não funciona:

iptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 1234 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -d $EXTIP --dport 1234 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j DNAT --to-destination 10.9.0.2:22

EXTIF é interface externa (eth0), INTIF é interface interna (eth1), EXTIP É o endereço IP da eth0.

Qualquer ajuda? (Não tenho certeza se a pergunta é clara, por favor edite com o jargão certo, se alguém entender minha intenção)

    
por Geos 24.08.2009 / 13:09

2 respostas

5

A regra para a cadeia FORWARD precisa usar a porta de destino, porque é executada após a cadeia de pré-roteamento, ou seja, após o DNAT ter sido feito.

iptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

Um bom diagrama geral de como as várias tabelas e cadeias estão vinculadas é aqui: link

    
por 24.08.2009 / 15:04
0
por 24.08.2009 / 13:13