Lo estoy usando iptables
junto con net-filter
la cola para modificar paquetes mediante programación.
Estoy usando iptables
reglas sobre ubuntu lab con 2 NIC, eth0 para Internet y eth1 para la LAN. He usado las conocidas reglas de iptables para NAT con enmascaramiento en eth0.
sudo iptables --table nat --append POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -append FORWARD -i eth1 -j ACCEPT.
sudo iptables -t mangle -A PREROUTING -j NFQUEUE --queue-num 0
sudo iptables -t mangle -A OUTPUT -j NFQUEUE
Estas 4 reglas se utilizan para ayudarme a capturar paquetes dentro de mi programa y modificar paquetes o descartar lo que quiero usar nfq_set_verdict
.
De hecho, todo va como esperaba, es decir, los tres tipos de protocolo icmp
, tcp
y udp
los paquetes se modifican y reinyectan. Luego, en la cola sale eth0 a Internet tomando la dirección IP de eth0 como dirección de origen (efecto de usar la regla MASQUERADE NAT).
Esto es cierto para todos los paquetes EXCEPTO: ping ICMPrespondero TCPACKpaquetes.
Salen a Internet tomando la IP privada del dispositivo LAN: 192.168.xx en eth1 y llegan al otro lado con esta dirección IP de origen privada.
Algunas ideas. Gracias.