
最近准备使用 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 不匹配,这给我造成很大困扰。 |