我正在尝试打开一个 TUN 设备并使用操作代码为 TUNSETIFF 的 ioctl,但出现了操作不允许的错误。
环境
PRETTY_NAME="Ubuntu 22.04.1 LTS"
$ docker --version
Docker version 20.10.17, build 100c701
Python 3.10.6
使用以下命令运行容器
docker run --rm -it --network host --cap-add=NET_ADMIN --device=/dev/net/tun ubuntutest bash -c "tuntaptest.py"
我尝试过以下选项但
docker run --rm -it --network host --privileged
docker run --rm -it --network host --cap-add=SYS_ADMIN
到目前为止都不起作用
代码快照
TUNSETIFF: int = 0x400454ca
IFF_TUN: int = 0x0001
IFF_NO_PI: int = 0x1000
tun = open('/dev/net/tun', 'r+b', buffering=0)
ifr: bytes = struct.pack('!16sH', bytes('tun0', 'utf-8'), IFF_TUN | IFF_NO_PI)
fcntl.ioctl(self.tun, TUNSETIFF, ifr)