Cómo reenviar el puerto desde enp7s0 a localhost:80

Cómo reenviar el puerto desde enp7s0 a localhost:80

Estoy bastante confundido y no lo entiendo en absoluto iptables.

Tengo un servidor nginx escuchando localhost:80y quiero acceder a él con la IP de mi NIC 192.168.29.167:80. yo estaba siguiendoocéano digitalEl tutorial de cómo configurar las reglas.

mi:

tipo Interfaz DIRECCIÓN
local lo 127.0.0.1
NIC lan enp7s0 192.168.29.167

Hice,

iptables -A FORWARD -i lo -o enp7s0 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i lo -o enp7s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i enp7s0 -o lo -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -d 127.0.0.1 -j SNAT --to-desitnation 127.0.0.1

Configurar las reglas y PREROUTINGno hizo nada. No puedo acceder a través de .POSTROUTINGFORWARDlocalhost:80enp7s0

(nota: tengo sudo sysctl -w net.ipv4.ip_forward=1)

Respuesta1

  1. Tienes un error en las natreglas: los nombres de tus interfaces parecen incorrectos. Es mejor utilizar el DNATbasado en la dirección de destino, no en el nombre de la interfaz de entrada. Por lo tanto, solo necesitas una regla para lograr lo que deseas:
iptables -t nat -A PREROUTING --dst 192.168.29.167 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:80
  1. Estos paquetes no se reenvían (transmiten), pero se ingresan. Debes permitir este tráfico en la filter/INPUTcadena, no en filter/FORWARD. Tenga en cuenta que después de DNATla acción, la interfaz de entrada no cambia (por lo que debe especificar enp7s0la interfaz, no lo). Pero puedes permitir cualquier DNATconexión con una sola regla.
iptables -t filter -A INPUT -m conntrack --ctstate DNAT -j ACCEPT
  1. Ejecute el sysctl -w net.ipv4.conf.enp7s0.route_localnet=1para permitir recibir desde el exterior los paquetes, aquellos que están dirigidos al archivo 127.0.0.1.
  2. Utilice mejor iptables-save -clos comandos para enumerar el conjunto completo de reglas con contadores. Deberías ver nat/PREROUTINGal menos aumentar los contadores de reglas. Además, utilice iptables-applypara aplicar nuevas reglas. Consulte la documentación de estas utilidades.
  3. Utilice tcpdump -ni enp7s0 'tcp port 80'para solucionar problemas de tráfico desde el exterior.
  4. Para redirigir el tráfico originado localmente debes utilizar estas reglas
  iptables -t nat -A OUTPUT -p tcp --dport 80 --dst 192.168.29.167 -j DNAT --to 127.0.0.1

De lo contrario, no podrá conectarse a su nginx a través de la dirección 192.168.29.167 desde el propio servidor.

información relacionada