新手小白😭
这段时间在使用zju-connect
和clash-verge
,两者都支持TUN
模式;但是实测下两者的 TUN 模式无法共存,只能打开一个。请问各位大佬,这是TUN Device
本身原理的问题,还是软件编写的问题?有办法能让两者的TUN
模式共存吗?
1
wkj89 1 天前 ![]() tun 当然可以共存 不能共存是因为你用的 client 写的路由表冲突罢了 你可以手动解决这个问题
|
![]() |
2
sivacohan 1 天前 ![]() 1. tun 设备可以共存,因为这是设备,就像可以插两个 u 盘一样。
2. 你说的问题是 iptables 或者 路由表的问题。 比如你物理口是 eth0, zju 是 tun0, clash 是 tun1 。没开服务的时候,直接 app->eth0 就可以了。 但是开启 tun 之后,变成了 eth0 ->(1) tun0 -> eth0, 1 这个步骤会拦截所有发往 eth0 的流量。然后应用程序再进行规则匹配,修改数据报之后再发出去。 当你开始两个 tun 的时候,1 这个步骤就会发生冲突和混乱,这时候靠程序默认的配置是解决不了的。需要手动配置。 如果是新手,建议求助对网络配置比较熟悉的同学。 |
3
mlyy 1 天前 via iPhone
ip netns
|
![]() |
4
adoal 1 天前
zju........
|
![]() |
5
Mythologyli 1 天前 ![]() 我是作者,可以去发个 issue
https://github.com/Mythologyli/zju-connect/issues |
![]() |
6
PTLin 1 天前 ![]() 这种代理隧道的原理是。
一个 tun 设备,打开这个设备,对这个 fd 读会接受到发送到这个网卡的 ip 包,向这个 fd 写会把 ip 包放回网络栈(像是接受到一个数据包一样)。 所以透明代理的大体逻辑就是,首先修改路由表,让所有 ip 包默认走 tun 程序的逻辑,tun 程序接受到数据包,将数据包发送到代理服务器(这个数据包会走一些 bypass 的逻辑,避免循环),然后从代理服务器接受到数据,构造数据包放回协议栈。 明白了这点就可以知道,想让多 tun 程序协同工作首先你需要修改路由表,你可以自定义哪个地址的走哪个 tun 程序。 |
![]() |
7
smallsneaker 14 小时 58 分钟前
|