我已经创建了一个linux tun接口,设置了ipaddr,广播等等。使用open/ioctl apis。这就是tun界面的样子,
TEST_TUN: mtu 1500 qdisc pfifo_fast状态未知组默认qlen 500链接/无TEST_TUN 45.45.45.1/24作用域全局TEST_TUN valid_lft永远永远preferred_lft
Tun_fd接收由虚拟主机写入的任何消息(绑定在addr 45.45.45.1:udp=7070上)(在tun设备创建期间返回的fd)。
如果tun_fd写入msg (虚拟主机上未接收到IP(dst=45.45.45.1)+transport(udp_dst=7070)+payload)。wireshark捕获显示内核端正在接收数据包,但虚拟主机未收到任何数据包。
内核没有将数据包转发到虚拟主机的原因可能是什么?
发布于 2021-05-26 22:43:37
是否已将tun设备设置为启动状态?
如果没有,你可以简单的通过..
$sudo ifconfig tun0 up您也可以通过ioctle命令来执行此操作。
如果您的设备已处于启动状态,则linux destro必须启用转发功能。你可以通过..
#echo "1" > /proc/sys/net/ipv4/ip_forwarding或
$sudo sysctl net.ipv4.ip_forward=1
$sudo sysctl -p然后谈到路由,rules..you必须设置路由规则,以便通过虚拟接口捕获所有流量。
$sudo ip route 128/1 dev tun此命令将在您的内核路由表中添加一条路由,所有流量将流经您的虚拟接口。
如果我没理解错的话,这可能会对你有帮助。
https://stackoverflow.com/questions/51968513
复制相似问题