Try   HackMD

TUN/TAP interfaces

En el mundo de las redes siempre se habla de interfaces tun/tap de forma indistinta, hasta ahora, yo tambien lo hacia, pero llega un momento de la vida donde uno tiene que madurar y ver de que narices va esto

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
.

Vamos al meollo. En networking, las interfaces TUN y TAP son interfaces virtuales que se crean y se gestionan en espacio de kernel. Mencionar que como estas interfaces son virtuales se gestionan directamente vía softaware, no como las interfaces reales que se gestionan con unos drivers diferentes, ad-hoc de la interfaz. Los drivers TUN/TAP se crearon en los 2000 como una unión de los avances de los drivers desarrollados en las comunidades de Solaris, Linux, BSD. Actualmente los drivers solo tienen mantenimiento por los kernels de linux y FreeBSD.

Ambos tipos de interfaces se utilizan para tunelado, pero no pueden ser utilizadas a la vez dado que trabajan en niveles distintos. Las TUN, de network TUNnel, emula la capa de red y puede llegar hacer FW de paquetes. En cambio las interfaces TAP, trabajan en capa 2, y emulan un equipo en capa 2.

  • TUN se puede llegar a utilizar para routing.
  • TAP se puede llegara utilizar para crear un bridge.

Los paquetes son enviados por el sistema operativo a través de una interfaz TUN/TAP, y serán recibidos por algun programa de espacio de usuario, el cual, está enganchado directamente en la interfaz. Cualquier programa de espacio de usuario podrá pasar paquetes por las interfaces, y las interfaces virtuales se lo pasarán al stack de red pro defecto, emulando la recepción de los paquetes inyectados desde espacio de usuario.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Para la creación de estas interfaces lo podemos hacer por ioctl

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
o podemos hacerlo mas fasil
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
a través del binario tunctl. Puede que en nuestra distribución no lo tengamos instalado, por lo que habrá que instalarlo. Para instalarlo, podemos hacer un:

sudo apt install -y uml-utilities

Este paquete se trata del User-mode Linux (utility programs).

Para crear una un interfaz podemos hacer lo siguiente:

tunctl -t tun

Para eliminarla:

tunctl -d tun

Cosa graciosa, podefecto estas interfaces tienen un owner no tengo muy claro por que. He buscado información al respecto pero no he encontrado nada. Además he hecho pruebas de funcionamiento con las interfaces cambiando de ususario y no se hace nada. Si se quiere especificar un user para la interfaz se puede hacer de la siguiente manera, si no, tomará el id del user que ejecute el comando.

tunctl -t tun -u user

Para crear interfaces TAP tenemos dos opciones, que el principio del nombre empiece por tapX o especificar explicitamente el siguiente parametro. Para eliminarlas es igual.

tunctl -p -t intf 

El parametro -p ya no va. Jajajajaja vaya risa. Por que? por que crea las interfaces del mismo tipo modo tap todo. Absurdo.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →


Sorpresa al terminar de escribir estas notas, hay un comando para trabajar con tun-tap desde iproute2:

https://baturin.org/docs/iproute2/#ip-tuntap

Tocate los pies realmente los mundos tun-tap están muy entre mezclados dado que hemos probado a poner a una TAP una IP y si se puede Es dificil diferenciarlas cual es el uso de cada cual. Para ver si es de un tipo u otro, tenemos que ejecutar un:

ethtool -i intf

Y fijarnos en el cambio de bus-info, ahí nos dirá de que tipo es. Dejo pruebas:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Referencias chingonas