我很难想出这个问题 – 我正在尝试编写一个与
Linux隧道驱动程序交互的程序.在一个非常基本的层面上,我只想创建一个能够通过网络隧道传输数据的应用程序.但是,为了完成这一点,我完全失去了如何正确设置隧道驱动程序.
我正在Ubuntu 9.04开发,并且我加载了隧道驱动程序内核模块.
存在设备/ dev / net / tun,但是没有/ dev / tunX设备.我无法使用ifconfig创建这些设备 – 每当我运行/ sbin / ifconfig tun0 up,例如,我收到以下错误:tun0:ERROR,而获取接口标志:没有这样的设备.如果我尝试查看/ dev / net / tun设备,会出现以下错误:cat:/ dev / net / tun:文件描述符处于不良状态.尝试通过小程序打开/ dev / tunX(基本上,简单的tun_fd = open(“/ dev / tun0”,O_RDWR)返回-1:应用程序以root用户身份运行,仍然无法打开此隧道设备要打开/ dev / net / tun,但是这似乎不会生成一个新的/ dev / tunX设备来使用.
所以,总而言之,如何编写一个希望使用Linux隧道驱动程序的应用程序?任何见解将不胜感激.
谢谢;
〜罗伯特
解决方法
阅读
/usr/src/linux/Documentation/networking/tuntap.txt
.
你应该打开/ dev / net / tun设备.打开fd后的ioctl将创建tun0(或任何您想要命名的)网络接口. Linux的网络接口不对应任何/ dev / *设备.