在Ubuntu虚拟机上创建TUN设备似乎不起作用

2024-06-02 17:57:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个脚本,将使用python在ubuntu VM上创建并打印新TUN接口的名称

import fcntl
import struct
import os
import subprocess
#from scapy.all import *

TUNSETIFF = 0x400454ca
IFF_TUN = 0x0001
IFF_TAP = 0x0002
IFF_NO_PI = 0x1000

tun = os.open("/dev/net/tun", os.O_RDWR)
ifr = struct.pack('16sH', b'tun%d', IFF_TUN | IFF_NO_PI)
ifname_bytes = fcntl.ioctl(tun, TUNSETIFF, ifr)
ifname = ifname_bytes.decode('UTF-8')[:16].strip('\x00')
print("Interface Name: {}".format(ifname))
proc = subprocess.Popen(['ifconfig'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
stdout, stdin = proc.communicate()
print(stdout.decode())

输出

        Interface Name: tun0
        enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.204 ......

        lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        ........

这将创建一个TUN接口并为其指定一个名称tunX(X是接口新名称的可用编号) 运行此命令后,我通常会得到tun0的答案。 然后,我打印出“ifconfig”的输出(我也手动尝试过),但我看不到tun0

有人能告诉我,我是否真的在创造TUN设备,如果是这样的话,脚本结束后会发生什么,如果有人有,我也对它的理论材料完全感兴趣

多谢各位


Tags: noimport脚本名称osstdoutstructsubprocess
1条回答
网友
1楼 · 发布于 2024-06-02 17:57:20

你的剧本很好。。。脚本完成运行后,您无法看到tub界面的原因是,脚本没有循环…只要服务器(脚本)处于活动状态,turn界面就会显示,之后它就会消失

相关问题 更多 >