IP encaminhamento através do túnel ssh

3

A situação envolve 3 máquinas:

  • A Algum laptop conectado em algum lugar à Internet por qualquer meio
  • B Um servidor conectado à Internet através de um ISP padrão (IP estático fornecido por dyndns: myserver.dyndns.com)
  • C Outro servidor conectado para a internet através de um Dongle 4G

A < --- ISP1 --- ISP 2 --- > B < --- ISP 2 --- 4G --- > C

Como o dongle 4G rejeita novas conexões de entrada, eu coloco um canal autossh para conectar de A a C via B:

autossh -M 0 -N [email protected] -R 10022:127.0.0.1:22 -R 10000:127.0.0.1:10000

Isso funciona muito bem.

Agora, gostaria de acessar a interface da web do dongle 4G digitando

myserver.dyndns.com:80

Então eu tentei fazer NATing coisas:

  • Em B :

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:10000
    

    e

    iptables -t nat -A POSTROUTING -d 127.0.0.1 --dport 10000 -j MASQUERADE'
    
  • Em C :

    iptables -t nat -A PREROUTING -p tcp --dport 10000 -j DNAT --to-destination 192.168.8.1:80
    

    e

    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    

Nota: eth1 é a interface do dongle 4G, o IP de C nessa interface é 192.168.8.100 e o dongle é 192.168.8.1.

Infelizmente, isso não funciona. Também ativei o encaminhamento de IP:

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

Ao digitar

iptables -t nat -L -v -n

em B e C , somente a linha PREROUTING de B vê seu aumento na contagem de pacotes após cada tentativa.

Isso pode ser devido a um entendimento incompleto de como netfilter funciona.

Eu apreciaria qualquer ajuda que você pudesse fornecer!

    
por Thomas 06.03.2016 / 12:56

1 resposta

1

Por favor, você poderia fornecer iptables -t filter -nvL de saídas nos servidores B e C?

Eu acho que o canal autossh é executado no servidor C. Está correto? Se assim for, sugiro uma abordagem diferente. Em B, você precisa de uma regra REDIRECT, porque o kernel não permitirá que um usuário sem privilégios abra a porta 80.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000
iptables -t filter -A INPUT -p tcp --dport 10000 -j ACCEPT

(EDIT) : no servidor B, GatewayPorts deve estar ativado em /etc/ssh/sshd_config :

# /etc/ssh/sshd_config
GatewayPorts clientspecified

No servidor C, direcione as conexões diretamente para o dongle, modificando autossh arguments:

autossh -M 0 -N [email protected] -R 10022:127.0.0.1:22 \
    -R :10000:192.168.8.1:80

O único erro que vejo em sua configuração reside na regra de PREROUTING da cadeia do servidor C. Nesse cenário, ela não será avaliada porque afeta apenas os pacotes que entram pelas interfaces de rede. As conexões criadas por ssh são geradas localmente, portanto, elas seriam afetadas pelas regras em OUTPUT chain.

    
por 06.03.2016 / 18:18