edit: soy novato en networking y descubriendo cosas nuevas :)
Creé una interfaz TUN mediante programación y pude interactuar con ella.
Lo configuré y ejecuté por
ifconfig myTun 10.10.1.1/24 up
y está en funcionamiento como puedo verlo ifconfig
y haciendo ping10.10.1.1
y para estar 100% seguro de si mi interfaz TUN está funcionando con mi problema escrito, hice lo siguiente:
Hice ping 10.10.1.2
y el paquete se recibió en mi programa, lo escribí nuevamente en tun y luego lo recibí nuevamente en un bucle.
ahora estoy seguro de que todos los paquetesDEoA 10.10.1.x
están siendo recibidos y escritos en TUN sin ningún problema.
cuando escribo un paquete concualquier IP de destino fueraSe 10.10.1.x
escribió correctamente en TUN pero no se recibió respuesta en TUN.
Después de buscar y leer muchos artículos, pensé que el kernel lo eliminaría silenciosamente.
Leí muchas preguntas y respuestas sobre interfaces TUN en serverfault.com y descubrí que me había perdido una parte importante de mi lógica, que esENRUTAMIENTO.
Mi entendimiento final es: el paquete está bien y lo recibe la pila de red en Linux, pero el kernel no sabe qué hacer con el paquete debido a su extraño destino. luego descubrí que debo especificar alguna ruta para el kernel eniptablesy habilitando net.ipv4.ip_forward
pero no sabe cómo hacerlo.
mi objetivo final es:
cuando envío cualquier paquete con cualquier destino fuera 10.10.1.x
del TUN, debe enrutarse a mi interfaz principal (que tiene acceso a Internet, y es wlps020f3
) y cualquier resultado de ese paquete se recibe de regreso a mi interfaz TUN
cómo configurarNATeniptables¿Cómo solucionarlo?
gracias de antemano
Respuesta1
sudo sysctl -w net.ipv4.ip_forward=1
tráfico NATdesde la interfaz del túnel detrás de su dirección inalámbrica:
sudo iptables -t nat -A POSTROUTING -o wlps020f3 -j MASQUERADE
Ninguno de estos cambios sobrevivirá a un reinicio. El enlace superior yÉsteTienes más información sobre ese aspecto.