Descobri recentemente a existência de interfaces Linux TUN / TAP e ainda estou tentando entendê-las. Acho que entendi o conceito básico - são criados pseudo-dispositivos que emulam uma interface de rede e, em vez de passar dados para o hardware, são passados para um programa no espaço do usuário.
Como você direcionaria um programa não relacionado para utilizar esse túnel?
Por exemplo, antes da criação do túnel, meu sistema contém apenas eth0 e lo, a interface Ethernet normal (conectada à minha rede local) e a interface de loopback. Depois que um programa cria e configura um túnel, tenho uma nova interface gr0, que forneci um endereço IP que está na minha rede local, mas não está em uso (portanto, estamos todos na mesma sub-rede). Como eu faria um programa independente utilizar esse 'túnel'? Digamos que eu tenha uma mensagem Python simples transmitindo um aplicativo cliente / servidor que utilize uma conexão TCP, como eu poderia configurá-lo para usar o túnel?
Peço desculpas se estou sentindo falta de algo básico, mas como sempre, consegui me confundir no esquema das coisas. Novamente, tudo o que eu quero é que um programa TCP simples utilize esse túnel.
Obrigado!
fonte