问题标签 [mknod]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
333 浏览

docker - docker内部的tun接口无法从主机读取数据包

我正在尝试本教程来创建和使用tun界面。就我而言,我想在 docker 容器中使用它。我的主机和 docker 容器都是支持 mknod 的 Linux。我正在尝试在容器内获取 tun 接口以从主机读取数据包,但不使用--network=host.

基于docker run doc,我/dev/net/tun使用--device. 然后添加功能NET_ADMIN(也尝试添加MKNODNET_RAW但似乎没有帮助)。然后使用下面的示例 tun 阅读器;这是上面教程中的示例;添加代码以创建界面;试图读取数据包。

它可以从容器内从 10.0.0.2 上 ping 读取数据包。但无法从主机上的 ping 读取。使用--network=host标志 to docker runtunx接口在主机上创建,因此 ping 工作。

我的问题是,是否可以在不使用主机网络的情况下使其工作?我需要任何明确iptables的规则来转发容器和主机之间的流量吗?

tun_alloc功能来自本教程

码头工人命令

阅读器代码