Eu poderia resolver o problema. Eu cometi um erro na tabela de roteamento do alvo (192.168.0.16). Alterar o gateway nesta máquina faz o trabalho de encaminhamento de portas.
Eu gostaria de encaminhar a porta ssh do ubuntu-fw (firewall) para o ubuntu-server1.
| Internet | --- | Roteador (hardware) | --- | ubuntu-fw | ---- | ubuntu-server1 |
Roteador (hardware): Fritz-Box
ubuntu-fw: ubuntu 16 servindo como firewall
ubuntu-server1: ubuntu 16 servindo como servidor ssh
O roteador (hardware) encaminha a porta para o ubuntu-fw. No entanto, para fins de teste, coloquei um computador no meio:
| teste-pc | --- | ubuntu-fw | ---- | ubuntu-server1 |
Agora eu gostaria de acessar do pc de teste para o meu ubuntu-server1 via ubuntu-fw usando:
ssh myuser@ubuntu-server1
A topologia de rede é a seguinte:
test-pc: 192.168.183.253/24
ubuntu-fw: eth0: 192.168.0.254/24 & amp; eth2: 192.168.183.254/24
ubuntu-server: 192.168.0.16/24
Minha pergunta é como devo encaminhar a porta 22 no ubuntu-fw?
Eu habilitei o roteamento:
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Eu também criei uma regra que permite que o ubuntu-server1 se conecte à internet usando o ubuntu-fw como NAT. Isso funciona bem. Mas eu falho quando quero encaminhar a porta 22 para o ubuntu-server1.
Para gerar o script iptables eu uso o fwbuilder.
Eu criei uma regra nat que resulta em (depois de compilar): Imagem da regra NAT do fwbuilder
$IPTABLES -t nat -A PREROUTING -p tcp -m tcp -d 192.168.183.254 --dport 22 -j DNAT --to-destination 192.168.0.16
e eu criei uma política resultando em (depois de compilar): Imagem da política do fwbuilder
$IPTABLES -A FORWARD -i eth2 -p tcp -m tcp -d 192.168.0.16 --dport 22 -m state --state NEW -j ACCEPT
Quando tento estabelecer uma conexão do pc de teste, vejo:
ssh: connect to host 192.168.183.254 port 22: Connection timed out
Alguém tem ideia do que estou fazendo errado?
Aqui está a saída do iptables -v -x -n -L
Chain INPUT (policy DROP 417 packets, 49211 bytes)
pkts bytes target prot opt in out source destination
28201 2294981 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
1 60 In_RULE_1 tcp -- eth0 * 192.168.0.0/24 192.168.0.254 tcp dpt:22 state NEW
0 0 In_RULE_2 tcp -- eth0 * 192.168.0.0/24 0.0.0.0/0 tcp multiport dports 21,80,443 state NEW
0 0 In_RULE_5 all -- eth2 * 0.0.0.0/0 192.168.183.254
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3071 2805588 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 104 In_RULE_2 tcp -- eth0 * 192.168.0.0/24 0.0.0.0/0 tcp multiport dports 21,80,443 state NEW
7 420 ACCEPT tcp -- eth2 * 0.0.0.0/0 192.168.0.16 tcp dpt:22 state NEW
Chain OUTPUT (policy DROP 8 packets, 480 bytes)
pkts bytes target prot opt in out source destination
15619 310844265 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 Out_RULE_0 tcp -- * eth2 192.168.183.254 0.0.0.0/0 tcp multiport dports 80,443 state NEW
Chain In_RULE_1 (1 references)
pkts bytes target prot opt in out source destination
1 60 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "RULE 1 -- ACCEPT "
1 60 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain In_RULE_2 (2 references)
pkts bytes target prot opt in out source destination
2 104 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "RULE 2 -- ACCEPT "
2 104 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain In_RULE_5 (1 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "RULE 5 -- DENY "
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Chain Out_RULE_0 (1 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "RULE 0 -- ACCEPT "
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0
E a saída do sudo iptables -t nat -v -x -n -L:
Chain PREROUTING (policy ACCEPT 1049 packets, 207739 bytes)
pkts bytes target prot opt in out source destination
1 60 DNAT tcp -- * * 0.0.0.0/0 192.168.183.254 tcp dpt:22 to:192.168.0.16
Chain INPUT (policy ACCEPT 3 packets, 180 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 22 packets, 1308 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)
pkts bytes target prot opt in out source destination
2 104 SNAT all -- * eth2 192.168.0.0/24 0.0.0.0/0 to:192.168.183.254
Como tenho muitas outras políticas para adicionar, gostaria de usar fwbuilder- também para a regra NAT.
Aqui está a saída do tcpdump sudo tcpdump -n -tttt -i eth2 port 22 :
2017-04-21 20:07:01.745154 IP 192.168.183.253.33774 > 192.168.183.254.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84033839 ecr 0,nop,wscale 6], length 0
2017-04-21 20:07:02.745098 IP 192.168.183.253.33774 > 192.168.183.254.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84034089 ecr 0,nop,wscale 6], length 0
2017-04-21 20:07:04.747111 IP 192.168.183.253.33774 > 192.168.183.254.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84034590 ecr 0,nop,wscale 6], length 0
2017-04-21 20:07:08.756022 IP 192.168.183.253.33774 > 192.168.183.254.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84035592 ecr 0,nop,wscale 6], length 0
2017-04-21 20:07:16.767457 IP 192.168.183.253.33774 > 192.168.183.254.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84037596 ecr 0,nop,wscale 6], length 0
2017-04-21 20:07:32.778145 IP 192.168.183.253.33774 > 192.168.183.254.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84041600 ecr 0,nop,wscale 6], length 0
2017-04-21 20:08:04.829078 IP 192.168.183.253.33774 > 192.168.183.254.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84049616 ecr 0,nop,wscale 6], length 0
e de sudo tcpdump -n -tttt -i eth0 port 22 | grep -v 192.168.0.47 (atualmente 192.168.0.47 é meu computador usando ssh para 192.168.183.254 e 192.168.183.253 usando outro roteador para essa rede)
2017-04-21 20:07:01.745195 IP 192.168.183.253.33774 > 192.168.0.16.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84033839 ecr 0,nop,wscale 6], length 0
2017-04-21 20:07:02.745136 IP 192.168.183.253.33774 > 192.168.0.16.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84034089 ecr 0,nop,wscale 6], length 0
2017-04-21 20:07:04.747139 IP 192.168.183.253.33774 > 192.168.0.16.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84034590 ecr 0,nop,wscale 6], length 0
2017-04-21 20:07:08.756068 IP 192.168.183.253.33774 > 192.168.0.16.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84035592 ecr 0,nop,wscale 6], length 0
2017-04-21 20:07:16.767486 IP 192.168.183.253.33774 > 192.168.0.16.22: Flags [S], seq 2118693960, win 29200, options [mss 1460,sackOK,TS val 84037596 ecr 0,nop,wscale 6], length 0
Eu poderia resolver o problema. Eu cometi um erro na tabela de roteamento do alvo (192.168.0.16). Alterar o gateway nesta máquina faz o trabalho de encaminhamento de portas.