最近准备使用 clash permium 中的 tun 来实现透明代理,但在使用过程中碰到一些疑问,首先我很困惑的是 clash permium 自动插入的 ip rule 是什么意思?
> sudo ip rule ls
0: from all lookup local
1000: from all lookup [l3mdev-table]
9000: not from all ipproto tcp goto 9060
9000: from all dport 53 goto 9060
9000: from all iif lo sport 7777 goto 9060
9010: from all to 192.18.0.0/16 lookup 1919247465
9020: from all lookup main suppress_prefixlength 0
9030: not from all iif lo lookup 1919247465
9040: from 0.0.0.0 iif lo uidrange 0-4294967294 lookup 1919247465
9050: from 192.18.0.5 iif lo uidrange 0-4294967294 lookup 1919247465
9060: from all nop
9500: from all to 192.18.0.0/16 lookup 1970566510
9510: from all ipproto icmp goto 9560
9520: not from all dport 53 lookup main suppress_prefixlength 0
9530: not from all iif lo lookup 1970566510
9540: from 0.0.0.0 iif lo uidrange 0-4294967294 lookup 1970566510
9550: from 192.18.0.1 iif lo uidrange 0-4294967294 lookup 1970566510
9560: from all nop
32766: from all lookup main
32767: from all lookup default
除了 0 ,1000 ,32766 和 32767 是有明确的意思外,为何 clash 添加了这么多条记录,是啥意思? 接着,我有执行了 ip route show table all
> sudo ip route show table all | grep utun
default dev utun table 1970566510 proto unspec
192.18.0.0/16 dev utun proto kernel scope link src 192.18.0.1
broadcast 192.18.0.0 dev utun table local proto kernel scope link src 192.18.0.1
local 192.18.0.1 dev utun table local proto kernel scope host src 192.18.0.1
broadcast 192.18.255.255 dev utun table local proto kernel scope link src 192.18.0.1
fe80::/64 dev utun proto kernel metric 256 pref medium
local fe80::3b91:83c6:157c:91ad dev utun table local proto kernel metric 0 pref medium
multicast ff00::/8 dev utun table local proto kernel metric 256 pref medium
> sudo ip route show table all | grep redir
default via 192.18.0.6 dev redir table 1919247465 proto unspec
192.18.0.0/16 dev redir proto kernel scope link src 192.18.0.5
broadcast 192.18.0.0 dev redir table local proto kernel scope link src 192.18.0.5
local 192.18.0.5 dev redir table local proto kernel scope host src 192.18.0.5
broadcast 192.18.255.255 dev redir table local proto kernel scope link src 192.18.0.5
fe80::/64 dev redir proto kernel metric 256 pref medium
local fe80::872:3eff:fe29:d33f dev redir table local proto kernel metric 0 pref medium
multicast ff00::/8 dev redir table local proto kernel metric 256 pref medium
后面是我的 clash 配置:
log-level: info
allow-lan: true
mode: rule
ipv6: false
routing-mark: 6666
profile:
store-selected: true
store-fake-ip: true
tun: # 启用 tun 模式
enable: true
stack: system
auto-route: true
auto-detect-interface: true
dns:
enable: true
ipv6: false
listen: 0.0.0.0:53
default-nameserver:
- 233.5.5.5
- 119.29.29.29
enhanced-mode: fake-ip
nameserver:
- https://dns.alidns.com/dns-query
#后面未相关的配置省略
...
1
Jirajine 2022-09-23 07:20:31 +08:00
你都用 premium 了,就不应该关系它具体做了什么,能用就行。这样才是一个合格的闭源软件用户。
|
2
ioiioi OP 因为我碰到问题了,要排错,所以需要知道工作原理才能定位问题。
|
3
noahzh 2022-09-23 08:45:55 +08:00
tun 模式是使用 fake-ip ,ip 规则是把 fake-ip 请求转发给 clash
|
4
ioiioi OP 问题 1:pc 默认路由应该配成旁路由的 ip 吗?
我的网络拓扑是这样: 1 、有一个主路由上联宽带,下联交换机,主要负责 pppoe 拨号、nat 和对内网的 dhcp ; 2 、旁路由(物理网卡配了内网 ip )是一台树莓派,安装了 clash premium ,启用 tun 作为透明代理,只有一条网线,上联交换机; 3 、ap 和 pc 通过网线上联交换机; 4 、pc 获得的内网 ip 与旁路有、主路由同网段,可通过无线可以访问旁路有和主路由。 问题 2:ip rule 是如何工作的? 主要的困惑是不理解 ip rule 的写法和匹配流程。linux 在匹配路由表的时候,还能支持挑转?譬如 ``` 9000: not from all ipproto tcp goto 9060 ... 9060: from all nop ``` 这两条语句是路由表吗?隶属于同一个 table ,还是分别隶属于 9000 和 9060 这两个 table ? 然而我用 ip route show table all 看到的又跟 ip rule ls 不匹配,这给我造成很大困扰。 |