问题标签 [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.

0 投票
3 回答
48307 浏览

c - 如何与 Linux tun 驱动程序交互

我很难解决这个问题 - 我正在尝试编写一个与 Linux 隧道驱动程序交互的程序。在一个非常基本的层面上,我只是想创建一个能够通过网络隧道传输数据的应用程序。但是,我完全不知道如何正确设置隧道驱动程序以完成此操作。

我正在 Ubuntu 9.04 上开发,并且已加载隧道驱动程序内核模块。

存在设备/dev/net/tun,但没有/dev/tunX设备。我无法使用ifconfig- 每当我运行时创建这些设备/sbin/ifconfig tun0 up,例如,我收到以下错误:

tun0:获取接口标志时出错:没有这样的设备。

如果我尝试查看/dev/net/tun设备,则会出现以下错误:

cat: /dev/net/tun: 文件描述符处于错误状态。

尝试/dev/tunX通过一个小程序打开,基本上,一个简单的

返回 -1:应用程序以 root 身份运行,但仍无法打开此隧道设备。可以打开/dev/net/tun,但这似乎不会生成/dev/tunX要使用的新设备。

所以,总而言之 - 如何编写一个希望使用 Linux 隧道驱动程序的应用程序?任何见解将不胜感激。

谢谢; 〜罗伯特

0 投票
1 回答
1242 浏览

linux - 是否有作为 TUN 接口运行的用户空间 TCP 堆栈?

是否有用户空间 TCP 堆栈作为 TUN 接口运行,并且在应用程序端具有类似于 POSIX 的 API?

0 投票
1 回答
1637 浏览

c - tun程序不创建设备节点

我正在关注http://backreference.org/2010/03/26/tuntap-interface-tutorial/

以下代码在我以 root 身份运行时成功获取 fd(通常为 3),但它不会创建 /dev/tun77 设备。

应该是?

0 投票
1 回答
2578 浏览

vpn - 使 HTTP 代理使用 tun/tap 设备

我正在尝试使我用来通过 VPN 连接到我大学的网络的工具成为可能。问题是,我只能生成一个 tun/tap 设备。该工具本身不支持使用特定的网络接口,但它支持使用 HTTP 代理。

所以现在我正在寻找一个可以绑定到特定接口(tun 设备)的 HTTP 代理,以便让该工具通过这个 HTTP 代理连接到我的 VPN。

我看过 privoxy an squid 但我找不到他们支持它的暗示。

你知道任何支持我计划做的 HTTP 代理吗?

0 投票
1 回答
8868 浏览

tun - 在 Windows 中使用 TUN 驱动程序

我已经在我的 Windows 7 机器上安装了TAP-WIN32 Adapter V9 。我想使用 TUN 从接口中读取 IP 数据包。我遵循了来自 http://www.varsanofiev.com/inside/using_tuntap_under_windows.htm的 C# 示例

我修改了如下代码

但是,我似乎仍然没有收到 IP 数据包。我在另一端运行了 tcpdump,它抱怨“Wrong link layer encapsulation”

这是尝试从 TUN 接口获取 IP 数据包的正确方法吗?

0 投票
1 回答
1664 浏览

linux - 运行 Web 服务器 (lightttpd) 和 (curl) 客户端的 Linux 服务器上的隔离测试网络

我正在编写一个测试工具,它需要从 NIC 捕获已知流量(使用 libpcap),然后将其输入到我们尝试测试的应用程序中。

我正在尝试设置的是一个 Web 服务器(在本例中为 lighttpd)和一个运行在同一台机器上的客户端(curl),在一个隔离的测试网络上。脚本将驱动整个设置,目标是能够指定多个客户端以及一组文件,以便每个客户端从 Web 服务器下载。

我最初的方法是简单地使用 loopback (lo) 接口...在 127.0.0.1 上运行 Web 服务器,让客户端从 获取他们的文件http://127.0.0.1,然后在 lo 接口上运行我的基于 libpcap 的工具。除了环回接口不模拟真正的以太网接口这一事实之外,这可以正常工作。主要问题是数据包的大小都不一致...... 32kbytes 和更大,而且有点随机...... 也无法降低 lo 上的 MTU(嗯,你可以,但它没有效果!)。

我也尝试在我的真实接口(eth0)上运行它,但由于它是一个内部 Web 客户端与内部 Web 服务器通信,流量永远不会离开接口,所以 libpcap 永远不会看到它。

于是我转向 tun/tap。我使用 socat 将两个 tun 接口与一个 tcp 连接绑定在一起,所以实际上,我有:

这似乎是一个非常巧妙的解决方案...... tun/tap 设备模拟真实的以太网设备,所以我可以在 tun0 (10.0.1.1) 上运行我的 web 服务器,在 tun0 上运行我的捕获工具,并将我的客户端绑定到 tun1 (10.0.2.1 )... 我什至可以使用 tc 将整形规则应用于此流量并在我的 linux 机器内创建一个虚拟 WAN...但它只是不起作用...

以下是我使用的 socat 命令:

这会产生 2 个 tun 接口 (tun0tun1),以及它们各自的 IP 地址。

如果我运行ping -I tun1 10.0.1.1,则没有响应,但是当我运行时tcpdump -n -i tun0,我看到 ICMP 回显请求将其发送到另一端,只是没有响应返回的迹象。

那么我是否遗漏了一些明显的东西,或者这是错误的方法?还有什么我可以尝试的(例如2个物理接口,eth0和eth1???)。

最简单的方法就是使用两台机器,但我希望所有这些都是独立的,所以它可以在一台机器上编写脚本和自动化,没有其他依赖项......

更新:

不需要 2 个 socat 与 tcp 连接连接,可以(而且对我来说更可取)这样做:

虽然同样的问题仍然存在......

0 投票
1 回答
1621 浏览

tun - TUN/TAP 写回隧道

我的应用程序正在使用 TUN 说 tun0。在设计中,我的应用程序将收到一个包含完整 IP 层的 UDP,然后我将取出 IP 层,然后使用“文件写入”将它们放入我自己的 tun0 设备中,据说在设计中,我应该可以读取再次从 tun0 发出数据包。

现在的情况是我可以通过 tcpdump 看到包被写入隧道,但我无法读回它们。

隧道设置或路由设置有问题?

提前致谢

0 投票
0 回答
2100 浏览

routing - RTNETLINK 回答:隧道路由时参数无效

我在我的服务器上设置了一个 TUN 路由,如下所示:

如果我使用“ip route get”检查来自 eth0 的路由,则没有问题,如下所示:

ip rg 192.168.1.3 从 10.0.1.3 iif eth0

但如果我使用如下:

ip rg 192.168.1.3 从 10.0.1.3 iif tun0

据说它仍然可以工作。我认为这里有一些网络配置问题。有什么想法吗?提前致谢。

0 投票
2 回答
12663 浏览

python - 使用 Python 与 MAC OSX (Lion) 的 TUN\TAP 接口

我找到了以下 tun\tap 示例程序,但无法使其工作:

http://www.secdev.org/projects/tuntap_udp/files/tunproxy.py

我修改了以下几行:

修改了第一行以反映驾驶员的真实位置。它原本是

运行时出现以下错误:

我正在使用从http://tuntaposx.sourceforge.net/download.xhtml安装的最新 tun\tap 驱动程序

0 投票
1 回答
151 浏览

c - C: 检测有多少数据被写入一个水龙头

我正在开发一个从 Tap 读取的程序。唯一的问题是,我不知道如何检测到水龙头的一次传输结束和另一次传输的开始。

从水龙头读取是否与 SOCK_STREAM 相同?