问题标签 [tun]
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.
c - 对 TUNSETIFF ioctl 类型的困惑
我看到TUNSETIFF
ioctl 的定义相互矛盾。如果我查看linux/if_tun.h
我的系统,我会看到这一行:
这表明 TUNSETIFF ioctl 采用指向int
. 此外,如果我打印出 的值TUNSETIFF
,我会得到 1074025674,如果我屏蔽掉大小位,则表明这个 ioctl 获取大小为 4 字节的数据。
但是当我查看周围的文档时TUNSETIFF
,我看到了将指针传递给struct ifreq
. 例如在官方文档中:
那么为什么会出现这种差异呢?只是头文件中的错误吗?
linux - 原始套接字与 TUN 设备
将 IP 数据包(从用户空间)发送到 tun 设备和使用原始套接字有什么区别?
用于通过用户空间隧道传输 IP 数据包。为什么我要使用一种方法而不是另一种方法?
原始套接字:
调设备:
linux-kernel - 如何在 Rust 中调用“ioctl”?并连接Linux“tun”驱动程序
如何在 Rust 中使用函数“ioctl”?我应该在某个地方找到它的包装吗?有事实上的包装吗?或者它可能已经包含在标准的 Rust 库中?不过,我还没有找到。
或者,更一般地说,我需要一个 Linux“tun”驱动程序的接口。
c - linux 中的 Tap 设备不能正确传递 ARP/IP 数据包?
似乎还有其他一些人对我有类似的问题,但我认为他们特别具体。我想我可能遇到了一个普遍的问题。
我在 Linux 中有一个 TAP 设备(用 C 创建)连接到另一个网络,我希望我的计算机能够通过这个 TAP 设备与另一个网络通信。
我可以看到使用wireshark 清楚地进入arp 数据包,但我的内核不会响应它们。我尝试配置网桥并将网桥的 IP 地址设置为无济于事。我也尝试过桥接到物理硬件,由于某种原因,Linux 似乎没有将数据传递给另一个网卡。
如果我设置了静态 ARP 路由,这个 Linux 机器似乎不会响应对它上面的设备的 ping。
我可以尝试将 br0、eth9 或 tap0 设置为 IP,但没有回复 ping 或 arp。就算我毁掉那座桥,也没什么。
我觉得我想要的是一个“假装”界面。就像“这是一张假的以太网卡”并谈论它。我觉得用水龙头应该可以做到。
类似问题:
networking - 使用 TAP 嗅探或修改传入的 eth 数据包
我试过https://github.com/TOGoS/TUN2UDP
这允许我这样做:
我想做的是:
换句话说,我想在第 2 层拦截传入的数据包并控制阻止、修改或传递它们。
我认为也许桥接 ETH 和 TAP 是关键,但我无法弄清楚如何以我需要的方式以编程方式访问这个桥接器。
linux - 使用 tun 设备发送原始 IP 数据包
我正在尝试通过TUN 设备以编程方式构造和发送 IP 数据包。
我已经设置了 TUN 设备和正确的路由:
这导致:
IP 转发开启:# echo 1 > /proc/sys/net/ipv4/ip_forward
我已经为tun0
数据包设置了 NAT:
然后我有 python 脚本来生成ICMP
数据包:
我可以看到来自tun0
接口的数据包:
但是wlp3s0
接口是静默的,因此似乎数据包没有经过 NAT 并路由到wlp3s0
接口,这是我的 WLAN 卡。
有什么我想念的想法吗?
docker - 将 docker 容器中的 Tap 接口暴露给 docker 主机
我的应用程序在 docker 容器内创建了一个点击界面。例如 tap_1: ip: 192.168.2.1
我的要求是任何来自 docker 主机的数据包都可以直接发送到 docker 容器内的 tap 接口。我基本上是尽量避免一跳先发送到 docker0 然后将其转发到特定的点击接口。
我尝试通过管道和桥接网络,但似乎没有一个可以解决我的要求。
感谢你的帮助。感谢 Ankit
linux - 如何将主机连接到她的虚拟网桥?
一个网桥brOnline
连接到eth0
它提供对 LAN / Internet 的访问。设置在修改中存档,/etc/network/interfaces
如下所示。
为什么?这次冒险的目的是在几个虚拟机和托管虚拟桥的系统和虚拟机(主机)之间建立一个虚拟网络。
如何从我的主机连接到网桥?
一件重要的事情:添加eth0
到网桥会导致主机无法使用它!
那么在将接口添加eth0
到网桥之前,连接到哪个魔法eth0
使我的浏览器能够访问本地网络?我可以或如何将此魔术连接到网桥以访问 LAN 并可以与连接到网桥的其他客户端交谈?
parsing - 如何使用 PCAP 或其他库来解析从 TUN 接收的第 3 层帧?
这就是我从 TUN 接收第 3 层帧的方式。根据文档编写:
- https://www.kernel.org/doc/Documentation/networking/tuntap.txt
- http://backreference.org/2010/03/26/tuntap-interface-tutorial/
- 从http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/解压
玩:
gcc index.c
sudo ./a.out
sudo ip link set tun0 up