Como fazer interface com o driver tun do Linux

Eu estou tendo dificuldade em descobrir este problema - estou tentando escrever um programa que irá interagir com o driver de túnel do Linux. Em um nível muito básico, eu simplesmente quero criar um aplicativo que seja capaz de transferir dados através de um túnel de rede. No entanto, eu estou completamente em uma perda de como configurar corretamente o driver de túnel para conseguir isso.

Eu estou desenvolvendo no Ubuntu 9.04, e eu tenho o módulo de kernel do driver de túnel carregado.

Existe o dispositivo/dev/net/tun, no entanto, não há/dev/tunX dispositivos. Eu não consigo criar esses dispositivos usandoifconfig - sempre que eu corro/sbin/ifconfig tun0 upPor exemplo, recebo o seguinte erro:

tun0: ERRO ao obter sinalizadores de interface: Nenhum dispositivo desse tipo.

Se eu tentar olhar para o/dev/net/tun dispositivo, o seguinte erro é apresentado:

cat: / dev / net / tun: Descritor de arquivos em mau estado.

Tentando abrir/dev/tunX através de um pequeno programa, basicamente, um simples

<code>tun_fd = open( "/dev/tun0", O_RDWR )
</code>

retorna -1: o aplicativo está sendo executado como root e ainda não pode abrir este dispositivo de encapsulamento. É possível abrir/dev/net/tun, no entanto, isso não parece gerar uma nova/dev/tunX dispositivo para usar em seu lugar.

Então, em resumo - como se escreve sobre um aplicativo que deseja usar o driver de túnel do Linux? Qualquer introspecção seria muito bem recebida.

Obrigado; ~ Robert

questionAnswers(3)

yourAnswerToTheQuestion