¿Cómo creo un dispositivo tun para la interfaz de red física real?

¿Cómo creo un dispositivo tun para la interfaz de red física real?

Estoy intentando crear un programa en C que cree una interfaz de dispositivo tun para la interfaz física de mi PC. La idea al hacerlo es que cuando escribo paquetes sin procesar en mi dispositivo de túnel, los colocará en mi interfaz física real. Mi pregunta es ¿cómo asigno el dispositivo tun con la interfaz física real?

Por ejemplo, mi eth1 tiene una dirección IP: 10.16.1.152. ¿Cómo puedo crear un dispositivo tun para poder leer/escribir en la interfaz eth1? ¿Necesito dar la misma dirección IP o una dirección IP diferente? Es la única forma de ruta en la que escribiré paquetes en un dispositivo tun y crearé una ruta que tendrá una puerta de enlace predeterminada del dispositivo tun como dispositivo phy.

Estoy siguiendoeste ejemplo, pero todavía no tengo claro el concepto.

He creado un dispositivo de túnel con los siguientes comandos. Mi PC tiene una interfaz Ethernet real. Esta dirección IP de interfaz Ethernet 10.16.1.152 se conecta a un grupo de PC y luego al servidor de puerta de enlace para acceder a Internet.

Estoy intentando crear un programa en C que escriba paquetes de saludo OSPF en la interfaz.

Para hacerlo, estoy creando un dispositivo de túnel para poder escribir paquetes de saludo OSPF en él. Pero antes de hacer eso, estoy revisando el dispositivo del túnel. Aquí mi dispositivo de túnel es 11.11.11.2/24 y estoy configurando la ruta para obtener 10.16.1.152. Tengo entendido que todos los paquetes recibidos o enviados en la interfaz real, es decir, 10.16.1.152, serán recibidos por esta interfaz de dispositivo de túnel, cuya dirección IP es 11.11.11.2. Pero, cuando hice un ping a 10.16.1.152, los paquetes RX/Tx recibidos siguen siendo cero. Entonces, creo que mi túnel no recibe ningún paquete.

ip tuntap add mode tun dev tun0
ip addr add 11.11.11.2/24 dev tun0
ip link set dev tun0 up
ip route get 10.16.1.152

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

¿Me estoy perdiendo algún concepto aquí? ¿Como lo puedo hacer? Todavía estoy luchando por aclarar los conceptos de mi dispositivo de túnel.

Respuesta1

No puede utilizar una tuninterfaz para "poner paquetes reales en una interfaz existente". Una tuninterfaz es siempre una nueva interfaz de red, distinta de todas las interfaces existentes.

Pero puedes usarsockets de paquetespara escribir paquetes sin procesar (o leer paquetes sin procesar desde) una interfaz de red existente. Ver man 7 packetpara más detalles. Pero con esto estás evitando todas las capas de protocolo, por lo que debes implementar el comportamiento de protocolo correcto tú mismo, así que, a menos que realmente,en realidadSé lo que estás haciendo, no hagas esto.

No dijiste lo que realmente quieres lograr y pareces estar un poco confundido acerca de los conceptos, por lo que esto puede ser unaproblema xy, y es muy posible que ni una tuninterfaz ni sockets de paquetes sean lo que realmente necesita.

información relacionada