【发布时间】:2022-01-05 19:46:01
【问题描述】:
我编写了以下函数,应该在 Linux 上创建一个名为“my_tun”的 TUN 接口:
int tun_open()
{
int fd;
if ((fd = open("/dev/net/tun", O_RDWR)) == -1) {
return -1;
}
struct ifreq ifr;
strncpy(ifr.ifr_name, "my_tun", IFNAMSIZ);
ifr.ifr_flags = IFF_TUN | IFF_NO_PI;
if (ioctl(fd, TUNSETIFF, &ifr) == -1) {
return -1;
}
return fd;
}
我正在通过在以--cap-add NET_ADMIN 开头的 Ubuntu docker 容器中运行它来测试它。在这个 docker 容器中,我首先执行:
mkdir /dev/net
mknod /dev/net/tun c 10 200
然后运行我的函数。后者没有失败,之后ifconfig 没有显示 TUN 接口,只有以太网和环回接口。我做错了什么?
【问题讨论】:
标签: c linux networking tun