问题标签 [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.
android - ioctl() 不允许操作
我正在用 C 语言为 Android 开发一个应用程序。我想添加一个新的 tun 接口并使用文件描述符来访问设备。我这样做的方式与此处描述的相同:https ://backreference.org/2010/03/26/tuntap-interface-tutorial/
但是,我在 ioctl() 调用上不允许操作。我的设备已植根,我授予了我的应用程序的超级用户权限,将 SELinux 策略设置为允许。但是,Android 仍然不允许我访问/dev/net/tun。我通过从/dev/tun创建符号链接来创建它。我也没有忘记在/dev/tun上设置chmod 666。调用 open("/dev/net/tun", O_RDWR | O_NONBLOCK) 返回一个有效的文件描述符,并且我正确设置了 ifreq 结构。正是ioctl()调用返回了不允许操作的错误。
此外,如果我分离代码并交叉编译它,然后通过 adb 将其推送到设备并运行它 - 一切正常。但是,如果我将其作为我的应用程序的一部分进行,则不允许该操作。
关于如何在应用程序中允许此系统调用的任何建议?任何有关失败原因的提示也将不胜感激。
代码:
docker - CoreOS - 将主机端口暴露给 VPN
我在 CoreOS 中运行 docker Openvpn 容器:
容器作为客户端连接到 VPN,其他 VPN 客户端可以 ping 容器。它使用配置中的选项在其中运行正常openvpn
进程。dev tun
我的任务是使这台机器上的主机端口(-p
来自任何其他容器的未显示端口)可用于其他 VPN 客户端,通过tun0
VPN 客户端容器内的那个(所以它必须是主机才能设置路由?)。如何实施?
networking - TAP 设备上是否可以使用除以太网之外的其他第 2 层协议?
使用 TAP 设备时,是否有人知道是否可以使用以太网以外的其他第 2 层协议,例如 PPP oder FDDI?
所有示例,我只能找到使用以太网,但内核文档 https://www.kernel.org/doc/Documentation/networking/tuntap.txt并没有具体说明这一点。
主机内核不需要处理自定义的第 2 层帧。如果我可以使用 Wireshark 和 Scapy 之类的工具来处理流量,那很好。
在我尝试为 TAP 设备构建一个接口之前,这将不起作用,我想检查一下,是否有人以前尝试过。
c# - 不允许请求的注册表访问。即使在清单中有签名的 exe 和管理员特权
我正在尝试访问 HKEY_LOCAL_MACHINE 注册表,
这是清单文件:
我还用测试证书签署了可执行文件
这是功能:
这是结果:
我应该怎么做才能在没有安全异常的情况下读取注册表
vpn - 如何在 tun 设备的用户空间实现中识别 iptables 标记的数据包?
我有一些用 C 语言编写的自定义 VPN 代码,它使用 Linux tun 设备。
此用户空间代码是否可以查看附加到数据包的 iptables 标记?还是这些标记不会传播到 tun 接口?
c++ - Client在虚拟网络接口环境下收到Server的SYN/ACK后无法回复ACK
我正在设置一个本地 vpn 环境,我想通过虚拟网络接口在本地捕获流量,然后通过物理网络接口绑定套接字将它们转发到真实目的地。但是,设置 tun 虚拟网络接口后,我什至无法连接真实目的地。
我的测试机:Linux testing-VirtualBox 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
首先,我成功创建了一个名为 tun0 的虚拟网络接口,如下所示:
为简洁起见,我只是将目标服务器的 ip 地址添加到路由表中: route add -host 45.113.192.102 dev tun0 路由表如下: 内核 IP 路由表
xxx.xx.xxx.xxx 是我的内部主机/网关 IP 地址。
最后,我创建了一个套接字并将套接字绑定到物理网络接口。我在这里使用 libuv,应该不管这个问题。
我运行我的代码,发现我无法连接到“45.113.192.102”。我通过wireshark抓到流量,发现我的程序已经向“45.113.192.102”发送了SYN,“45.113.192.102”也回复了SYN,ACK。但是,在那之后似乎我的程序没有发送 ACK,导致连接失败。接下来,Client不断发送[TCP Spurious Retransmission] SYN,Server回复[TCP Retransmission] SYN,ACK。
c - 如何从tun接口接收数据到dpdk绑定的网卡?
我想要任何流量生成器(比如 iperf、D-ITG 甚至 ping)将数据发送到 tun 接口。这个 tun 接口应该会自动转发到绑定到 DPDK 的 NIC。我想运行从界面获取数据的 l3fwd 示例。
我在命令行中使用了选项 --vdev=net_tun0 来创建 tun 接口。我认为 tun/tap PMD 会自动轮询 tun/tap 接口的数据包并重定向到/来自 NIC。但是,这并没有发生。我无法接收任何数据包。
我需要 dpdk 和流量生成器在同一台 PC 上运行。DPDK 应该选择用户空间的流量。
c++ - 为什么发送NAT穿越包后收不到包?
我正在设置一个基于 TUN 设备的虚拟专用网络程序,其中最重要的部分之一是 NAT 穿越。编写完这个程序后,我使用同一个局域网中的两台设备进行调试。
但是我注意到一件奇怪的事情,假设 A 想向 B 发送数据包,并且有一个外部服务器 S 具有静态 IP。我使用最常见的方式在 UDP 中实现 NAT 穿越。
A 向 B 发送一个数据包,该数据包可能被 B 的 NAT 丢弃。然后 A 向 S 发送请求,S 向 B 发送请求,然后 B 向 A 发送数据包。之后,来自 A 的数据包理论上应该被 B 接收。
但是我遇到的情况是B没有收到A的包。
我首先检查了我的 NAT 类型,它是 Port Restricted Cone NAT,所以它应该可以工作。
这是网络结构。
我认为这很可能是我的代码错误,但我无法理解。
完整代码在https://github.com/timber3252/omelet上,以下是部分代码。
客户:
服务器:
我在机器 A 上使用 ping 到 B,但没有响应。数据包已成功发送到 B,但 B 无法接收任何数据包。
linux - 在 ubuntu 18.04 上设置 TUNSETQUEUE 总是失败
我想用多队列打开 tun,但是当我设置 IFF_ATTACH_QUEUE 时失败。
Linux 版本 4.15.0-62-generic (buildd@lcy01-amd64-024) (gcc 版本 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1))
函数 tun_set_queue 将得到“ioctl:Invalid argument”
sql - SQL查询优化更新
此查询需要很长时间才能更新我很想优化此查询,我们将不胜感激。