问题标签 [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 - 如何与 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 隧道驱动程序的应用程序?任何见解将不胜感激。
谢谢; 〜罗伯特
linux - 是否有作为 TUN 接口运行的用户空间 TCP 堆栈?
是否有用户空间 TCP 堆栈作为 TUN 接口运行,并且在应用程序端具有类似于 POSIX 的 API?
c - tun程序不创建设备节点
我正在关注http://backreference.org/2010/03/26/tuntap-interface-tutorial/
以下代码在我以 root 身份运行时成功获取 fd(通常为 3),但它不会创建 /dev/tun77 设备。
应该是?
vpn - 使 HTTP 代理使用 tun/tap 设备
我正在尝试使我用来通过 VPN 连接到我大学的网络的工具成为可能。问题是,我只能生成一个 tun/tap 设备。该工具本身不支持使用特定的网络接口,但它支持使用 HTTP 代理。
所以现在我正在寻找一个可以绑定到特定接口(tun 设备)的 HTTP 代理,以便让该工具通过这个 HTTP 代理连接到我的 VPN。
我看过 privoxy an squid 但我找不到他们支持它的暗示。
你知道任何支持我计划做的 HTTP 代理吗?
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 数据包的正确方法吗?
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 接口 (tun0
和tun1
),以及它们各自的 IP 地址。
如果我运行ping -I tun1 10.0.1.1
,则没有响应,但是当我运行时tcpdump -n -i tun0
,我看到 ICMP 回显请求将其发送到另一端,只是没有响应返回的迹象。
那么我是否遗漏了一些明显的东西,或者这是错误的方法?还有什么我可以尝试的(例如2个物理接口,eth0和eth1???)。
最简单的方法就是使用两台机器,但我希望所有这些都是独立的,所以它可以在一台机器上编写脚本和自动化,没有其他依赖项......
更新:
不需要 2 个 socat 与 tcp 连接连接,可以(而且对我来说更可取)这样做:
虽然同样的问题仍然存在......
tun - TUN/TAP 写回隧道
我的应用程序正在使用 TUN 说 tun0。在设计中,我的应用程序将收到一个包含完整 IP 层的 UDP,然后我将取出 IP 层,然后使用“文件写入”将它们放入我自己的 tun0 设备中,据说在设计中,我应该可以读取再次从 tun0 发出数据包。
现在的情况是我可以通过 tcpdump 看到包被写入隧道,但我无法读回它们。
隧道设置或路由设置有问题?
提前致谢
杨
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
据说它仍然可以工作。我认为这里有一些网络配置问题。有什么想法吗?提前致谢。
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 驱动程序
c - C: 检测有多少数据被写入一个水龙头
我正在开发一个从 Tap 读取的程序。唯一的问题是,我不知道如何检测到水龙头的一次传输结束和另一次传输的开始。
从水龙头读取是否与 SOCK_STREAM 相同?