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 up
Por 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