我找到了以下tun\tap示例程序,但无法运行:
http://www.secdev.org/projects/tuntap_udp/files/tunproxy.py
我修改了以下行:
f = os.open("/dev/tun0", os.O_RDWR)
ifs = ioctl(f, TUNSETIFF, struct.pack("16sH", "toto%d", TUNMODE))
ifname = ifs[:16].strip("\x00")
第一行被修改以反映司机的真实位置。原来是
f = os.open("/dev/net/tun", os.O_RDWR)
运行时出现以下错误:
sudo ./tuntap.py -s 9000
Password:
Traceback (most recent call last):
File "./tuntap.py", line 65, in <module>
ifs = ioctl(f, TUNSETIFF, struct.pack("16sH", "toto%d", TUNMODE))
IOError: [Errno 25] Inappropriate ioctl for device
我正在使用从http://tuntaposx.sourceforge.net/download.xhtml安装的最新tun\tap驱动程序
因此,在执行以下操作时出现“No such file or directory”错误:
f = os.open("/dev/tun12", os.O_RDWR)
这对我有效:
brew install Caskroom/cask/tuntap
OSX tun/tap驱动程序似乎有点不同。Linux示例动态地分配tun接口,这在OSX中不起作用,至少不是以相同的方式。
我剥离了代码,创建了一个基本示例,说明如何在OSX上使用自选tun设备使用tun,并将每个数据包打印到控制台。我添加了Scapy作为漂亮打印的依赖项,但是如果需要,可以用原始数据包转储替换它:
必须以根用户身份运行此命令,或者执行
sudo chown your_username /dev/tun12
以允许打开设备。要将其配置为点到点接口,请键入:
请注意,
tun12
接口仅在/dev/tun12
打开时(即程序运行时)可用。如果中断程序,tun接口将消失,下次运行程序时需要重新配置。如果您现在ping端点,您的数据包将打印到控制台:
Ping本身将打印请求超时,因为没有响应Ping请求的隧道终结点。
相关问题 更多 >
编程相关推荐