我在解决这个问题上遇到了困难 - 我正在尝试编写一个与Linux隧道驱动程序交互的程序。在非常基本的层面上,我只是想创建一个能够在网络隧道上传输数据的应用程序。然而,我完全不知道如何正确设置隧道驱动程序以实现这一目标。
我正在Ubuntu 9.04上进行开发,并且已经加载了隧道驱动内核模块。
存在着设备"/dev/net/tun",但是没有"/dev/tunX"设备。我无法使用"ifconfig"命令创建这些设备 - 例如,每当我运行"/sbin/ifconfig tun0 up"时,都会出现以下错误:
tun0: ERROR while getting interface flags: No such device.
如果我尝试查看"/dev/net/tun"设备,会出现以下错误:
cat: /dev/net/tun: File descriptor in bad state.
通过一个小程序尝试打开"/dev/tunX",基本上是一个简单的
返回-1:应用程序正在以root身份运行,但仍无法打开此隧道设备。可以打开`/dev/net/tun`,但似乎没有生成新的`/dev/tunX`设备来替代使用。
所以,总结一下-如何编写一个希望使用Linux隧道驱动程序的应用程序?任何见解将不胜感激。
谢谢; ~Robert
我正在Ubuntu 9.04上进行开发,并且已经加载了隧道驱动内核模块。
存在着设备"/dev/net/tun",但是没有"/dev/tunX"设备。我无法使用"ifconfig"命令创建这些设备 - 例如,每当我运行"/sbin/ifconfig tun0 up"时,都会出现以下错误:
tun0: ERROR while getting interface flags: No such device.
如果我尝试查看"/dev/net/tun"设备,会出现以下错误:
cat: /dev/net/tun: File descriptor in bad state.
通过一个小程序尝试打开"/dev/tunX",基本上是一个简单的
tun_fd = open( "/dev/tun0", O_RDWR )
返回-1:应用程序正在以root身份运行,但仍无法打开此隧道设备。可以打开`/dev/net/tun`,但似乎没有生成新的`/dev/tunX`设备来替代使用。
所以,总结一下-如何编写一个希望使用Linux隧道驱动程序的应用程序?任何见解将不胜感激。
谢谢; ~Robert
#include <unistd.h>
语句,用于read()
和close()
函数。 - user3629249