encaminhar porta ssh de um host para outro host e porta diferente em outra interface

2

Eu gostaria de encaminhar uma porta ssh para outro host e uma porta e interface diferente.

server1: 22 - > server1: 22

internet pública - > eth0 - > server1: 23 - > eth1 - > server2: 22

i ativou o encaminhamento de ipv4

sysctl -p
net.ipv4.ip_forward = 1

e criou as seguintes regras da tabela ip

iptables -t nat -I PREROUTING -p tcp -i eth0 --dport 23 -j DNAT --to-destination 192.168.0.3:22
iptables -A FORWARD -i eth0 -o eth0 -p tcp --dport 23 -j ACCEPT

mas não consigo que funcione, o que me falta?

finalmente, com haukes ajuda eu tenho que trabalhar

iptables -t mangle -A PREROUTING -d <Server1_eth0> -p tcp --dport 2223 -j MARK --set-mark 1 -i eth0
iptables -t nat -A PREROUTING -p tcp -m mark --mark 1 -j DNAT --to-destination <Server2>:2222 -i eth0
iptables -t nat -A POSTROUTING -m mark  --mark 1 -j SNAT --to-source <Server1_eth1> -o eth1 
iptables -A FORWARD -m mark --mark 1 -j ACCEPT -o eth1

where Server1_eth0 is my public ip
    
por supernova 27.02.2013 / 01:02

1 resposta

4

Se o server1 não for o gateway para o server2, você também precisará do SNAT. Caso contrário, o servidor2 enviará a resposta ao cliente que não reconhece o pacote, pois ele não tem o servidor1 como endereço de origem, mas o servidor2.

iptables -t nat -A POSTROUTING -p tcp -m conntrack --ctstate DNAT --ctorigdst server1 --ctorigdstport 23 -j SNAT --to-source server1

Um critério de filtro preciso e fácil de entender para as regras em FORWARD, PREROUTING e POSTROUTING seria uma marca de pacote:

iptables -t mangle -A PREROUTING -d $server1_ip -p tcp --dport 23 -j MARK --set-mark 22
iptables -t nat -A PREROUTING -p tcp -m mark --mark 22 -j DNAT --to-destination $server2_ip:22
iptables -t nat -A POSTROUTING -m mark --mark 22 -j SNAT --to-source $server1_ip
iptables -A FORWARD -m mark --mark 22 -j ACCEPT

Por favor, note: Se server1 tiver mais de uma interface e os pacotes DNATed forem roteados de uma interface para outra (como aconteceu neste caso), então o IP de correspondência de destino e o SNAT IP são diferentes.

"- p tcp" não deve ser necessário na segunda linha, mas o iptables ou o Netfilter precisam disso. Pode ser útil adicionar, e. -m comment --comment "DNAT SSH from port 23 to server2" em todas as linhas para facilitar a compreensão da iptables -L -nv .

    
por 27.02.2013 / 01:21