-
Notifications
You must be signed in to change notification settings - Fork 91
IP地址类型的流量似乎没有被导入utun #6
Comments
在 iptables/nftables/tcpip协议栈 的眼里域名流量和 IP 流量没有任何区别 并且所有规则在我的设备上工作正常 至于为什么所谓的 IP 流量没有进入 clash 建议检查其他设备的路由表 (作为旁路由设备同样也进行过测试 (Switch 的 UDP NAT 穿越 正常 最后 所谓防火墙 Linux 下有一万种实现 (最基本的 iptables 或者是 firewalld 或者 ufw 不知道你这说的那种以及规则是什么 |
换了个debian 10测试了一下,运行起来非常正常。看来可能是fedora上的问题。 |
发现在不能正常工作的 Fedora 33 上运行 nft list ruleset,结果是空的。又尝试手动执行 /usr/lib/clash/setup-tun.sh ,一切都变正常了。初步怀疑是 /usr/lib/udev/rules.d/99-clash.rules 的问题。 Fedora 33
Ubuntu 20.10
Debian 9
所以可能是Fedora本身,因为某种原因阻止了setup-tun.sh的执行。 |
你遇到的问题似乎和 #2 (comment) 相同,把 /usr/lib/udev/rules.d/99-clash.rules 改成 /lib/udev/rules.d/99-clash.rules(引用这个文件的相关文件也要修改)试试。 |
这俩其实是一样的地址吧。原因不在rules的位置,它其实是可以匹配到并执行setup.tun的,只是执行的时候出了问题。而且我看了下一下他fork的版本,也不是用udev的rules执行setup-tun.sh |
问题大概搞明白了,Fedora 系统 udev 规则执行脚本时的环境似乎是 device 自身的环境,所以就找不到 setup-tun.sh 和 clean-tun.sh 中涉及到的命令,修改一下 RUN+= 后面的命令就可以正确执行了。不过不知道为啥加/bin/sh也没用,只能改成 /bin/sudo。
udevadm control --reload-rules 上面这种是最容易修改的,还有一种方案是创建一个 clash-tun.service,udev 规则调用 service 来完流量重定向。
这样就还需要再创建两个 service。如果 udev 的 RUN 可以调用 service 的同时传递参数倒是可以省事一点,不过好像不行。 |
同样是 尝试根据上一个 post 在
尝试更改 成功解决 udev 的 99-clash.rules 失败导入....
Reading rules file: /etc/udev/rules.d/99-clash.rules
...
Config file /lib/systemd/network/99-default.link applies to device utun
link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
DEVPATH=/devices/virtual/net/utun
INTERFACE=utun
IFINDEX=5
ACTION=add
SUBSYSTEM=net
ID_NET_DRIVER=tun
ID_NET_LINK_FILE=/lib/systemd/network/99-default.link
TAGS=:systemd:
SYSTEMD_ALIAS=/sys/subsystem/net/devices/utun
USEC_INITIALIZED=903257523
run: 'bridge-network-interface'
run: 'ifupdown-hotplug'
run: '/home/pi/lib/clash/setup-tun.sh'
run: '/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/utun --prefix=/net/ipv4/neigh/utun --prefix=/net/ipv6/conf/utun --prefix=/net/ipv6/neigh/utun'
Unload module index
Unloaded link configuration context. 可是, `$ systemctl status systemd-udevd.service` 日志输出● systemd-udevd.service - udev Kernel Device Manager
Loaded: loaded (/lib/systemd/system/systemd-udevd.service; static; vendor preset: enabled)
Active: active (running) since dateTime; 10min ago
Docs: man:systemd-udevd.service(8)
man:udev(7)
Main PID: 155 (systemd-udevd)
Status: "Processing with 26 children at max"
Tasks: 1
CGroup: /system.slice/systemd-udevd.service
└─155 /lib/systemd/systemd-udevd
dateTime raspberrypi systemd[1]: Starting udev Kernel Device Manager...
dateTime raspberrypi systemd[1]: Started udev Kernel Device Manager.
dateTime raspberrypi systemd-udevd[157]: Using default interface naming scheme 'v240'.
dateTime raspberrypi systemd-udevd[157]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
dateTime raspberrypi systemd-udevd[164]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
dateTime raspberrypi systemd-udevd[178]: Using default interface naming scheme 'v240'.
dateTime raspberrypi systemd-udevd[178]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
dateTime raspberrypi systemd-udevd[1524]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
dateTime raspberrypi systemd-udevd[1524]: Process '/bin/sudo /home/pi/lib/clash/setup-tun.sh' failed with exit code 1. 尝试 折腾错方向了... 不过感谢各位相关的 debug 知识 |
我感觉是因为 udev 的规则本来就不支持放在用户目录底下,除非自己魔改一下 systemd-udevd 😂 udev 规则以管理员身份编写并保存在 /etc/udev/rules.d/ 目录,其文件名必须以 .rules 结尾。各种软件包提供的规则文件位于 /lib/udev/rules.d/。如果 /usr/lib 和 /etc 这两个目录中有同名文件,则 /etc 中的文件优先。 |
刚好在 https://github.com/Dreamacro/clash 那边提过 https://github.com/Dreamacro/clash/discussions/1251类似的问题 。
tun模式运行的clash premium会接管53端口,域名类请求都会被clash正确地处理,但是有一些应用如Telegram、Android TV端的Netflix会直接请求IP地址类资源,这类请求似乎没有被导入utun。
我关闭了防火墙并尝试了下面的iptables规则,发现可以解决问题,但是似乎clash-premium-installer用的是nftables。
所以在打开防火墙时该如何处理IP地址类的入站流量?另外“放行root用户数据避免回环”那个规则是否应该加上?
谢谢
The text was updated successfully, but these errors were encountered: