Reenvío de IP a través del túnel ssh

La situación involucra 3 máquinas:

  • Una computadora portátil conectada a Internet a través de cualquier medio
  • B Un server conectado a Internet a través de un ISP estándar (IP estática proporcionada por dyndns: myserver.dyndns.com)
  • C Otro server conectado a internet a través de un Dongle 4G

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

Como el dongle 4G rechaza las nuevas conexiones entrantes, coloco un canal autossh para conectarme de A a C a través de B:

 autossh -M 0 -N user@myserver.dyndns.com -R 10022:127.0.0.1:22 -R 10000:127.0.0.1:10000 

Eso funciona genial

Ahora, me gustaría acceder a la interfaz web del dongle 4G escribiendo

 myserver.dyndns.com:80 

Así que probé NATing cosas:

  • En B :

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

    y

     iptables -t nat -A POSTROUTING -d 127.0.0.1 --dport 10000 -j MASQUERADE` 
  • En C :

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

    y

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

Nota: eth1 es la interfaz del dongle 4G, la IP de C en esa interfaz es 192.168.8.100 y la del dongle es 192.168.8.1.

Lamentablemente, eso no funciona. También activé el reenvío de IP:

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

Al escribir

 iptables -t nat -L -v -n 

en B y C , solo la línea PREROUTING de B ve su conteo de packages boost después de cada bash.

Esto puede deberse a una comprensión no completa de cómo funciona netfilter .

Agradecería cualquier ayuda que pudiera brindar.

Solutions Collecting From Web of "Reenvío de IP a través del túnel ssh"

Por favor, ¿podría proporcionar iptables -t filter -nvL outputs en los serveres B y C?

Supongo que el canal autossh ejecuta en el server C. ¿Correcto? Si es así, sugiero un enfoque diferente. En B, necesita una regla REDIRECTA, porque el kernel no permitirá que un usuario sin privilegios abra el puerto 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 

(EDITAR) : en el server B, GatewayPorts debe estar habilitado en /etc/ssh/sshd_config :

 # /etc/ssh/sshd_config GatewayPorts clientspecified 

En el server C, reenvíe las conexiones directamente al dongle modificando los arguments autossh :

 autossh -M 0 -N user@myserver.dyndns.com -R 10022:127.0.0.1:22 \ -R :10000:192.168.8.1:80 

El único error que veo en su configuration reside en la regla de cadena PREROUTING del server C. En este escenario, no se evaluará porque afecta solo a los packages que ingresan a través de las interfaces de networking. Las conexiones creadas por ssh se generan localmente, por lo que se verían afectadas por las reglas en la cadena OUTPUT .