问题标签 [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.
macos - 用于 OS X 的 tunctl 类似命令
是否有任何命令可以在 OS X中创建、删除等tun
/设备,例如在 Linux 中?tap
tunctl
python - 将 tun0(TUN 接口)与 Scrapy 一起使用
我想使用不同的接口从 Scrapy ( tun0
,而不是eth0)
. 发出请求。有人可以解释一下,如何用 Scrapy 来做吗?在 curl 我只是指定--interface tun0
了。提前谢谢你!
tun - TAP/TUN 设备的“目标地址”是什么?
TAP/TUN 设备的“目标地址”的用途是什么?
Pytun可让您轻松设置 tap/tun 设备的参数:
这样做将导致设备配置如下:
我知道系统现在有一个 IP 为 10.66.66.1 的虚拟接口。并且推测在这种情况下,TUN 设备将“连接”到 IP 地址为 10.66.66.2 的(例如 VPN 网关)设备。
但是具体的目的是什么,让内核知道这是一个“点对点”接口,以及目标的 IP 地址吗?它是否会以某种方式影响路由,而仅配置路由表无法实现?
设置dstaddr
属性会产生一个SIOCSIFDSTADDR
ioctl。
netdevice(7)
手册页简单地说:
networking - ioctl (TUNSETIFF) : 设备或资源繁忙
我无法设置 TUN 接口。我到处搜索,它说设备应该植根。我正在我的 ubuntu 14.04 系统上设置代理服务器
}
windows - 在 Windows 7 中创建 TUN 和路由
我正在玩一个应用程序来进行一些远程连接,我正在努力理解 tun/tap。我已经安装了 OpenVPN tuntap 驱动程序,并且可以通过我的应用程序连接/配置它,但我需要澄清一下。
如果我在 TAP 模式下使用它,我需要正确桥接我的网络适配器??
如何设置 TUN 接口?我知道我需要打电话DeviceIoControl
,TAP_IOCTL_CONFIG_TUN
我想我理解如何但我的研究让我认为我还需要添加到 Windows 路由表中?
有人可以设计一个典型的 TUN Layer3 VPN 的样子吗
谢谢马特
python - 将 Tun 连接到套接字
我想将 Tun 连接到套接字,以便 Tun 文件中存储的任何数据最终都会被推送到将接收数据的套接字。我正在努力理解如何连接套接字和 Tun 的更高层次的概念性理解。Tun 是否获得一个专用套接字,然后与另一个套接字(接收套接字)通信?还是 Tun 直接与接收套接字通信?还是我在一起?谢谢!
linux - Tun 接口和 IPv6
我想问你一个关于 tun 接口的问题,但没有 OpenVPN。
我有两个隧道流量的应用程序:“sgsn 用户空间应用程序”从 tun 接口“tun sgsn”读取 IP 数据包,将它们发送到“ggsn 用户空间应用程序”,这个应用程序将它们写入“tun ggsn”。它也以另一种方式工作,因此我可以进行有效的 ssh 会话、复制文件等。
所以,数据包是这样的:
scp 客户端 --> sgsn tun 接口 ---> 隧道通过我的应用程序 -----> ggsn tun 接口(放在这里) ----------> sshd
现在,我已经尝试使用 IPv4 并且它可以工作,但是当我切换到 IPv6 时,IP 数据包被写入“tun ggsn”并且 IP 堆栈将其丢弃。我用 dropwatch 看过它,它说丢弃在 ip_rcv+c0 中。
路由必须是正确的,否则数据包一开始就不会进入 tun_sgsn。
我在 CentOS 6.7 和 7.1 中都尝试过,结果相同。但是,在 7.1 中,我只有一个主机,所以我使用 ip6tables 对 NAT 地址做了一些技巧,因此来自每个用户空间应用程序(scp 和 sshd)的流量都通过 tun 接口。我这么说只是为了从一开始就很清楚,但是对于 6.7,我有两台机器并且没有 NAT(我知道 NAT 在用于 IPv6 的 CentOS 6.7 中不起作用)。我在 tun ggsn 接口中使用了 tcpdump,并且 IPv6 数据报似乎没问题。
另一个提示:如果我直接 scp 到 tun_ggsn 接口,它可以工作,但我认为这不会丢弃 tun 驱动程序的任何内容,因为在同一台机器上意味着 IP 数据包不会进入 TCP/IP 堆栈到达 tun 驱动程序(事实上,如果我这样做,tcpdump 不会捕获数据包)。
任何帮助将不胜感激,非常感谢您提前。
netty - Netty 是否支持多个网络接口卡?
我有两个问题。首先,我想启动几个netty进程绑定到不同的网络接口卡以进行模拟,但我看不到任何有关它的信息。那么,谁能给我一个明确的答复?其次,Java 中是否有任何包装库来驱动 tun/tap?我想通过使用 tun/tap 来实现虚拟网络接口卡。
非常感谢!!!
networking - dev_queue_xmit 随机返回带有 tun/tap 设备的 NET_XMIT_CN
我有一个用户空间程序,它构建自己的数据包(应用程序、UDP、IP)并将write()
其发送到 TUN 设备。该数据包被我自己的 Netfilter 模块拦截,它检查它收到的数据包是否是我们要处理的数据包。然后我的 Netfilter 模块将skb_clone()
原始skb
并创建一个响应数据包,我用一些数据填充该数据包以返回给用户空间程序。要发送响应,我使用dev_queue_xmit()
. NET_XMIT_CN
即使我刚刚创建了一个新的 TUN 设备并且没有其他流量通过,它也会随机返回。如果我继续执行用户空间程序(向 TUN 设备发送新数据包),最终 TUN 设备会响应,但不会始终如一。我似乎无法追查为什么它的行为如此不规律。
本质上,我使用 TUN 设备作为从用户空间到内核空间进行通信的机制,反之亦然。
这是我的用户空间应用程序:
这是我的 Netfilter 模块:
我似乎无法弄清楚这种行为。我是否误用了 TUN 设备?还有比这更简单的方法吗?
请让我知道我是否应该提供任何额外的细节或澄清一些事情。
virtualization - 无法在虚拟化环境中获取 vTAP 接口
假设我有以下设置:
运行两个 KVM 虚拟机(VM1和VM2)、一个虚拟网桥virbr和两个网桥分接头vTAP1和vTAP2的主机。VM 分别连接到 vTAPS。
我在主机上运行了一个应用程序,它测量网桥上的不同负载指标。为了实现这一点,它需要获取 vTAPS,以便通过网桥在 vTAP 之间传输数据包以进行测量。问题是我无法获取 vTAPS,因为
ioctl TUNSETIFF系统调用失败并显示EBUSY errno。
我猜这是因为应用程序(在主机上运行)不是水龙头的所有者(由 VM 拥有)。添加新的临时桥接 vTAPS 进行测量可能并不总是一种解决方案,因为有时我想直接测量 VM vTAPS 之间的流量。尝试的解决方案:有一个
多队列 tuntap 接口:
Linux 支持多队列 tuntap,它可以使用多个文件描述符(队列)来并行发送或接收数据包。设备分配和以前一样,如果用户要创建多个队列,必须多次调用具有相同设备名称的 TUNSETIFF 并带有 IFF_MULTI_QUEUE 标志。
使用IFF_MULTI_QUEUE阻止了ioctl因EBUSY errno 失败,但它在使用EINVAL errno向 vTAP写入系统调用时开始失败。所以它并没有真正解决任何问题。
我会很感激任何帮助,谢谢。