Quiero que las conexiones que entran en ppp0 en el puerto 8001 se enruten a 192.168.1.200 en eth0 en el puerto 8080.
Tengo estas dos reglas
-A PREROUTING -p tcp -m tcp --dport 8001 -j DNAT --to-destination 192.168.1.200:8080
-A FORWARD -m state -p tcp -d 192.168.1.200 --dport 8080 --state NEW,ESTABLISHED,RELATED -j ACCEPT
y no funciona ¿Qué me estoy perdiendo?
Respuestas:
En primer lugar, debe verificar si el reenvío está permitido:
Si ambos regresan
1
, está bien. Si no, haga lo siguiente:Lo segundo:
DNAT
podría aplicarsenat
solo en la mesa. Por lo tanto, su regla debe ampliarse agregando también la especificación de la tabla (-t nat
):Ambas reglas se aplican solo al tráfico TCP (si desea alterar UDP también, debe proporcionar reglas similares pero con un
-p udp
conjunto de opciones).Por último, pero no menos importante es la configuración de enrutamiento. Tipo:
y verifique si se
192.168.1.0/24
encuentra entre las entradas de enrutamiento devueltas.fuente
sysctl
sintaxis comosysctl net.ipv4.conf.eth0.forwarding=1
-A
con-D
Creo que lo que quieres es:
fuente
Olvida la dirección de origen de postrouting SNAT 'ing:
Y no olvide configurar su firewall de Linux como puerta de enlace predeterminada en la computadora con la dirección 192.168.1.200.
fuente
POSTROUNTING
escalón. En este punto, la conversación sigue siendo sobre--destination
más que--source
.He creado el siguiente script bash para hacer esto en mi enrutador Linux. Infiere automáticamente la IP de WAN y confirma sus selecciones antes de continuar.
El uso de la secuencia de comandos es simple, simplemente cópielo y péguelo en un archivo y luego.
Para eliminar la misma regla
Pensé que esto podría ahorrarle tiempo a alguien en su enrutador respectivo.
fuente
Tuve la tarea de hacer que MACHINE_A pensara que el servicio se ejecuta físicamente en MACHINE_B, pero que redirige todas las solicitudes a MACHINE_C de manera transparente.
El truco era usar MASQUERADE.
Tenga en cuenta que es posible que desee modificar los comandos:
Para permitir el reenvío de paquetes solo en una interfaz específica. Por ejemplo:
Para permitir que no solo MACHINE_A, sino también todos los demás utilicen el reenvío de puertos, elimine:
fuente
Tratar
Estos archivos le dicen al núcleo que puede reenviar paquetes entre las interfaces.
fuente
Este comando no funciona para mí:
Tengo 2 interfaces LAN y trabajo ADELANTE cuando escribo:
PREROUTING y FORWARD también son necesarios, por supuesto :)
fuente