Использование TunTap с ядром Linux 2.6

В документации TunTap на сайте vtun указано, что драйвер поддерживается только до ядра Linux 2.4. Есть ли способ заставить его работать на 2.6 и 3.2 версиях Linux?

Кот на устройстве показывает:

# cat /dev/net/tun
 cat: File descriptor in bad state

Я попытался установить непосредственно из файла rpm, чтобы посмотреть, как далеко я мог пойти и получил:

# rpm -i tun-1.1-6.rh71.i386.rpm
error: Failed dependencies:
     /bin/sh is needed by tun-1.1-6.i386

Есть ли способ заставить это работать на Linux 2.6+ или есть какие-нибудь хорошие альтернативы tuntap, о которых вы знаете?

2 ответа

Документация по Tuntap устарела. Кроме того, в новых версиях Linux вам может понадобиться

tunctl 

вместо

ip tuntap add

Чтобы установить tunctl в debian Squeeze, установите пакет 'uml-utilities', который предоставляет команду tunctl. Вы можете добавить новый туннель, используя

tunctl -t tun1

Используйте приведенный ниже скрипт для его автоматического создания, просто скопируйте содержимое в файл file.sh, замените "ETHOIPADDR" на свой IP-адрес, аналогично измените шлюз и широковещательный адрес и запустите скрипт с разрешением sudo.

#!/bin/sh 
# 
# script to bring up the tun device in QEMU in bridged mode 
# first parameter is name of tap device (e.g. tap0)
#
# some constants specific to the local host - change to suit your host
#
ETH0IPADDR=192.168.0.3
GATEWAY=192.168.0.1
BROADCAST=192.168.0.255
#
# First take eth0 down, then bring it up with IP address 0.0.0.0 
#
/sbin/ifdown eth0
/sbin/ifconfig eth0 0.0.0.0 promisc up
#
# Bring up the tap device (name specified as first argument, by QEMU)
#
/usr/sbin/openvpn --mktun --dev $1 --user `id -un`
/sbin/ifconfig $1 0.0.0.0 promisc up
#
# create the bridge between eth0 and the tap device
#
/usr/sbin/brctl addbr br0
/usr/sbin/brctl addif br0 eth0
/usr/sbin/brctl addif br0 $1
# 
# only a single bridge so loops are not possible, turn off spanning tree protocol
#
/usr/sbin/brctl stp br0 off 
# 
# Bring up the bridge with ETH0IPADDR and add the default route 
#
/sbin/ifconfig br0 $ETH0IPADDR netmask 255.255.255.0 broadcast $BROADCAST
/sbin/route add default gw $GATEWAY
#
# stop firewall - comment this out if you don't use Firestarter
#
/sbin/service firestarter stop 
Другие вопросы по тегам