Port Forwarding usando iptables em Open-Mesh

2

Uma visão geral rápida para aqueles que não estão familiarizados com o Open-Mesh:

O sistema usa pequenos pontos de acesso sem fio que criam automaticamente sua própria rede de malha. Desde que um dos pontos de acesso esteja conectado à Internet por meio de uma LAN com fio (tornando esse ponto de acesso o "gateway"), todos os pontos de acesso (e seus clientes sem fio) terão acesso à Internet.

Os pontos de acesso executam uma versão modificada do OpenWRT.

Normalmente, o único caminho para o SSH em qualquer um dos pontos de acesso sem fio (nós) é o primeiro SSH no gateway, então SSH a partir daí para o nó.

O que estou tentando fazer: Abrir / encaminhar uma porta para o SSH em cada nó sem fio diretamente.

Por exemplo, meu gateway está em 10.45.13.220 na minha LAN. O primeiro nó sem fio está em 5.12.252.248 na rede em malha (ou seja, digitar ssh [email protected] durante o login no gateway abrirá um shell para o nó sem fio). Eu gostaria de poder entrar no nó sem fio assim:

$ ssh -p 11001 [email protected]

Então, tentei encaminhar essa porta em iptables usando os seguintes comandos:

$ iptables -t nat -A PREROUTING -p tcp -d 10.45.13.220 --dport 11001 \
          -j DNAT --to-destination 5.12.252.248:22

$ iptables -t filter -A FORWARD -p tcp -d 5.12.252.248 --dport 22 -j ACCEPT'

Eu sei que isso está fazendo algo porque quando eu tento SSH para 10.45.13.220:11001 (de outro computador na rede) antes de digitar os comandos acima, a conexão é recusada. Mas assim que os comandos forem inseridos, a conexão expira.

Alguma ideia do que estou fazendo errado? Sou muito novo em iptables , mas parece que isso deve ser bem direto.

Observação: o encaminhamento de IP já está ativado

EDITAR: Registrando Resultados

Após configurar o registro para as duas regras sugeridas por @slm, é isso que o dmesg envia quando tento conectar-me a 10.45.13.220:11001 de outra caixa do Linux:

[1015021.850000] IN=br-lan1 OUT= MAC=ac:86:74:0c:fd:00:6c:62:6d:12:85:9d:08:00 \
SRC=10.45.13.246 DST=10.45.13.220 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=16916 DF \
PROTO=TCP SPT=41908 DPT=11001 WINDOW=14600 RES=0x00 SYN URGP=0

[1015021.850000] IN=br-lan1 OUT=br-lan1 MAC=ac:86:74:0c:fd:00:6c:62:6d:12:85:9d:08:00 \
SRC=10.45.13.246 DST=5.12.252.248 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=16916 DF \
PROTO=TCP SPT=41908 DPT=22 WINDOW=14600 RES=0x00 SYN URGP=0

[1015022.850000] IN=br-lan1 OUT=br-lan1 MAC=ac:86:74:0c:fd:00:6c:62:6d:12:85:9d:08:00 \
RC=10.45.13.246 DST=5.12.252.248 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=16917 DF \
PROTO=TCP SPT=41908 DPT=22 WINDOW=14600 RES=0x00 SYN URGP=0

Novas regras de iptables usadas (conforme sugestão de @ slm):

iptables -t nat -A PREROUTING -p tcp --dport 11001 -j LOG --log-level debug
iptables -t nat -A PREROUTING -p tcp --dport 11001 -j DNAT --to 5.12.252.248:22
iptables -A FORWARD -i br-lan1 -p tcp -j LOG --log-level debug
iptables -A FORWARD -i br-lan1 -o bat0.2@bat0 -p tcp -d 5.12.252.248 --dport 22 \
    -j ACCEPT
    
por Kyle G. 16.08.2013 / 22:43

1 resposta

1

Isso não é necessário com ssh . Você pode ssh através de um host para outro host da seguinte forma:

$ ssh -t serverA ssh serverB

Exemplo

$ hostname
grinchy

$ ssh -t skinner ssh mulder
Last login: Fri Aug 16 18:19:56 2013 from skinner.somedom.net

$ hostname
mulder.somedom.net
$

iptables

Se você deseja encaminhar a porta, acredito que essa regra funcionará:

$ iptables -t nat -A PREROUTING -p tcp -d 10.45.13.220 --dport 11001 -j DNAT --to 5.12.252.248:22
$ iptables -A FORWARD -i eth1 -o eth0 -p tcp -d 5.12.252.248 --dport 22 -j ACCEPT

Onde eth1 é interface externa e eth0 é a interface interna.

    
por 17.08.2013 / 00:21