devome / blog

个人网站的源码
https://evine.win
0 stars 0 forks source link

我的家庭网络设计思路,开启debian的旁路由之路(四) #20

Open devome opened 11 months ago

devome commented 11 months ago

https://devome.github.io/blog/p/%E6%88%91%E7%9A%84%E5%AE%B6%E5%BA%AD%E7%BD%91%E7%BB%9C%E8%AE%BE%E8%AE%A1%E6%80%9D%E8%B7%AF%E5%BC%80%E5%90%AFdebian%E7%9A%84%E6%97%81%E8%B7%AF%E7%94%B1%E4%B9%8B%E8%B7%AF%E5%9B%9B/

本篇主要讲解clash的安装和配置,以及涉及到的IP规则和nftables规则。

devome commented 11 months ago

请注意:这篇在最早发出来时,在 clash.serviceExecStartPostExecStop这两行的;前少了个空格,会报错,加上空格就好了。

daisuki4gh commented 11 months ago

启动clash.service报错,能帮忙看看吗(人菜瘾大。。)

root@debian:/usr/local/bin# systemctl status clash.service
x clash.service - Clash-Meta tproxy daemon.
     Loaded: loaded (/etc/systemd/system/clash.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Thu 2023-10-26 22:31:43 CST; 4s ago
    Process: 166621 ExecStartPre=sleep 1s (code=exited, status=0/SUCCESS)
    Process: 166647 ExecStart=clash -d /var/lib/clash (code=exited, status=1/FAILURE)
-- 
-- A stop job for unit clash.service has finished.
-- 
-- The job identifier is 2200 and the job result is done.
Oct 26 22:31:43 debian systemd[1]: clash.service: Start request repeated too quickly.
Oct 26 22:31:43 debian systemd[1]: clash.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- The unit clash.service has entered the 'failed' state with result 'exit-code'.
Oct 26 22:31:43 debian systemd[1]: Failed to start clash.service - Clash-Meta tproxy daemon..
-- Subject: A start job for unit clash.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- A start job for unit clash.service has finished with a failure.
-- 
-- The job identifier is 2200 and the job result is failed.
~
devome commented 11 months ago

@daisuki4gh

输入这个命令 journalctl -eu clash.service,看看最后的错误。

daisuki4gh commented 11 months ago

@devome @daisuki4gh

输入这个命令 journalctl -eu clash.service,看看最后的错误。

Oct 26 22:31:42 debian systemd[1]: Starting clash.service - Clash-Meta tproxy daemon....
Oct 26 22:31:43 debian clash[166647]: This program can only be run on AMD64 processors with v3 microarchitecture support.
Oct 26 22:31:43 debian systemd[1]: clash.service: Main process exited, code=exited, status=1/FAILURE
Oct 26 22:31:43 debian ip[166648]: RTNETLINK answers: File exists
Oct 26 22:31:43 debian systemd[1]: clash.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
Oct 26 22:31:43 debian systemd[1]: clash.service: Failed with result 'exit-code'.
Oct 26 22:31:43 debian systemd[1]: Failed to start clash.service - Clash-Meta tproxy daemon..
Oct 26 22:31:43 debian systemd[1]: clash.service: Scheduled restart job, restart counter is at 5.
Oct 26 22:31:43 debian systemd[1]: Stopped clash.service - Clash-Meta tproxy daemon..
Oct 26 22:31:43 debian systemd[1]: clash.service: Start request repeated too quickly.
Oct 26 22:31:43 debian systemd[1]: clash.service: Failed with result 'exit-code'.
Oct 26 22:31:43 debian systemd[1]: Failed to start clash.service - Clash-Meta tproxy daemon..
lines 114-142/142 (END)
daisuki4gh commented 11 months ago

我的cpu是[英特尔® 赛扬® 处理器3215U],不支持clash么

devome commented 11 months ago

@daisuki4gh 我的cpu是[英特尔® 赛扬® 处理器3215U],不支持clash么

你可以试试带cgo或者compatible的 的版本:https://github.com/MetaCubeX/Clash.Meta/wiki/FAQ

daisuki4gh commented 11 months ago

@devome 你可以试试带cgo或者compatible的 的版本:https://github.com/MetaCubeX/Clash.Meta/wiki/FAQ

好的,晚上试下,谢谢

daisuki4gh commented 11 months ago

root@debian:/usr/local/bin# journalctl -eu clash.service Oct 27 21:18:21 debian systemd[1]: clash.service: Control process exited, code=exited, status=2/INVALIDARGUMENT Oct 27 21:18:21 debian systemd[1]: clash.service: Failed with result 'exit-code'. Oct 27 21:18:21 debian systemd[1]: Failed to start clash.service - Clash-Meta tproxy daemon.. Oct 27 21:18:21 debian systemd[1]: clash.service: Scheduled restart job, restart counter is at 2. Oct 27 21:18:21 debian systemd[1]: Stopped clash.service - Clash-Meta tproxy daemon.. Oct 27 21:18:21 debian systemd[1]: Starting clash.service - Clash-Meta tproxy daemon.... Oct 27 21:18:22 debian ip[27786]: RTNETLINK answers: File exists Oct 27 21:18:22 debian systemd[1]: clash.service: Control process exited, code=exited, status=2/INVALIDARGUMENT Oct 27 21:18:22 debian systemd[1]: clash.service: Failed with result 'exit-code'. Oct 27 21:18:22 debian systemd[1]: Failed to start clash.service - Clash-Meta tproxy daemon.. Oct 27 21:18:22 debian systemd[1]: clash.service: Scheduled restart job, restart counter is at 3. Oct 27 21:18:22 debian systemd[1]: Stopped clash.service - Clash-Meta tproxy daemon.. Oct 27 21:18:22 debian systemd[1]: Starting clash.service - Clash-Meta tproxy daemon.... Oct 27 21:18:23 debian ip[27803]: RTNETLINK answers: File exists Oct 27 21:18:23 debian systemd[1]: clash.service: Control process exited, code=exited, status=2/INVALIDARGUMENT Oct 27 21:18:23 debian systemd[1]: clash.service: Failed with result 'exit-code'. Oct 27 21:18:23 debian systemd[1]: Failed to start clash.service - Clash-Meta tproxy daemon.. Oct 27 21:18:23 debian systemd[1]: clash.service: Scheduled restart job, restart counter is at 4. Oct 27 21:18:23 debian systemd[1]: Stopped clash.service - Clash-Meta tproxy daemon.. Oct 27 21:18:23 debian systemd[1]: Starting clash.service - Clash-Meta tproxy daemon.... Oct 27 21:18:24 debian ip[27835]: RTNETLINK answers: File exists Oct 27 21:18:24 debian systemd[1]: clash.service: Control process exited, code=exited, status=2/INVALIDARGUMENT Oct 27 21:18:24 debian systemd[1]: clash.service: Failed with result 'exit-code'. Oct 27 21:18:24 debian systemd[1]: Failed to start clash.service - Clash-Meta tproxy daemon.. Oct 27 21:18:25 debian systemd[1]: clash.service: Scheduled restart job, restart counter is at 5. Oct 27 21:18:25 debian systemd[1]: Stopped clash.service - Clash-Meta tproxy daemon.. Oct 27 21:18:25 debian systemd[1]: clash.service: Start request repeated too quickly. Oct 27 21:18:25 debian systemd[1]: clash.service: Failed with result 'exit-code'. Oct 27 21:18:25 debian systemd[1]: Failed to start clash.service - Clash-Meta tproxy daemon..

root@debian:/usr/local/bin# /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 --help | grep supported x86-64-v2 (supported, searched) x86_64 (AT_PLATFORM; supported, searched) tls (supported, searched) x86_64 (supported, searched) root@debian:/usr/local/bin#

还是不行呢 ,cgo:、compatible都试了

devome commented 11 months ago

@daisuki4gh

问题核心是 ip: RTNETLINK answers: File exists,你可以google搜索一下,主要的可能性有:多网卡、ip route不对或者已经添加过了?、/etc/network/interface设置不正确等等。以下是我的ip route的输出,供参考:

default via 10.0.0.1 dev ens18 onlink 
10.0.0.0/24 dev ens18 proto kernel scope link src 10.0.0.2

以下是正常启动的 ip rule(启动前没有第二条):

0:      from all lookup local
32765:  from all fwmark 0x1 lookup 100
32766:  from all lookup main
32767:  from all lookup default

也可以试试先手动清空ip route和ip rule再启动,最有效的就是重启机器了。

daisuki4gh commented 11 months ago

@devome

@daisuki4gh

问题核心是 ip: RTNETLINK answers: File exists,你可以google搜索一下,主要的可能性有:多网卡、ip route不对或者已经添加过了?、/etc/network/interface设置不正确等等。以下是我的ip route的输出,供参考:

default via 10.0.0.1 dev ens18 onlink 
10.0.0.0/24 dev ens18 proto kernel scope link src 10.0.0.2

也可以试试先手动清空ip route和ip rule再启动。

root@debian:~# ip route default via 192.168.5.1 dev enp1s0 192.168.5.0/24 dev enp1s0 proto kernel scope link src 192.168.5.100

现在貌似又可以了,刚才尝试Google了一些解决办法,不知道哪个奏效了。 我是物理机装的Debian,确实有4个物理网卡。

root@debian:~# systemctl enable --now clash.service root@debian:~# journalctl -efu clash.service Oct 27 22:09:15 debian systemd[1]: Starting clash.service - Clash-Meta tproxy daemon.... Oct 27 22:09:16 debian clash[467]: time="2023-10-27T22:09:16.409468309+08:00" level=info msg="Start initial configuration in progress" Oct 27 22:09:16 debian clash[467]: time="2023-10-27T22:09:16.414221716+08:00" level=info msg="Geodata Loader mode: standard" Oct 27 22:09:16 debian systemd[1]: Started clash.service - Clash-Meta tproxy daemon.. Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.104145585+08:00" level=info msg="Start initial GeoIP rule CN => 🎯 全球直连, records: 10003" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.300433953+08:00" level=warning msg="replace fallback-filter.geosite with nameserver-policy, it will be removed in the future" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.39392168+08:00" level=info msg="Start initial GeoSite dns fallback filter gfw, records: 6069" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.393988922+08:00" level=warning msg="Deprecated: Use Sniff instead" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.394066218+08:00" level=info msg="Initial configuration complete, total time: 983ms" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.39560309+08:00" level=info msg="RESTful API listening at: [::]:9090" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.442659863+08:00" level=info msg="Sniffer is loaded and working" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.442710217+08:00" level=info msg="Use tcp concurrent" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.442724964+08:00" level=info msg="Use routing mark: 0x29a" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.443205124+08:00" level=info msg="DNS server listening at: [::]:7874" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.444895903+08:00" level=info msg="HTTP proxy listening at: [::]:7890" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.445710241+08:00" level=info msg="SOCKS proxy listening at: [::]:7891" Oct 27 22:09:17 debian clash[467]: time="2023-10-27T22:09:17.446499167+08:00" level=info msg="TProxy server listening at: [::]:7895"

devome commented 11 months ago

@daisuki4gh

那你就找针对多网卡的解决办法,多网卡应该是只要配置一块网卡的网关。

daisuki4gh commented 11 months ago

@devome

@daisuki4gh

那你就找针对多网卡的解决办法,多网卡应该是只要配置一块网卡的网关。

“多网卡应该是只要配置一块网卡的网关”是什么意思啊? 我目前的旁路由其余几个网卡不设置任何东西,只设置了连主路由的网卡为静态IP。

daisuki4gh commented 11 months ago

再请教一个问题,目前adguard home ,mosdns, clash都跑起来了,但是局域网其它设备把网关跟DNS 设置为Debian 的ip(192.168.5.100)后,国内网站可以正常打开,谷歌却不行。此时如果把代理设为clash 的代理端口 192.168.5.100:7890又能访问谷歌,懵了。如何才能让其它设备做到无感出国,谢谢!

devome commented 11 months ago

@daisuki4gh

透明代理,当然关键是靠nftables规则了。你看看你的规则有没有生效。

daisuki4gh commented 11 months ago

@devome

@daisuki4gh

透明代理,当然关键是靠nftables规则了。你看看你的规则有没有生效。

重启规则后正常了,谢谢耐心指导。 最后一个问题:目前的配置默认貌似不能代理Debian自身的流量,比如我在终端curl Google无响应。如果实现,要如何设置呢,看您文章开头提到靠IP规则,能否详细点?

“注意,在旁路由自身中运行的程序都工作在应用层,而 tproxy 只能工作在 prerouting 链,所以如果我们要想透明代理旁路由自己产生的流量,要通过设置IP规则让这部分流量在进入 output 链时,将需要代理的流量转回到 prerouting 链。这就需要靠IP规则来实现。”

devome commented 11 months ago

@daisuki4gh

已经在clash.service中了啊,StartExecPost不就是。在执行逻辑中有解释。

daisuki4gh commented 11 months ago

@devome

@daisuki4gh

已经在clash.service中了啊,StartExecPost不就是。在执行逻辑中有解释。

害, 可能找到原因了,我前面编辑 /etc/network/interface 时,是新建了一个interface 文件,不是在原文件interfaces 里修改,现在可以了。再次感谢!

daisuki4gh commented 11 months ago

我又来了。。。Debian重启后就无法透明代理了,如何排查原因啊? 尝试过的操作:把mosdns、clash、adadguardhome等重启后,过一段时间可能会恢复,但毫无规律,不知道是哪个服务起作用。这三个服务启动顺序有讲究吗? 先谢过~

devome commented 11 months ago

@daisuki4gh

看日志排查。 各个service文件中已经写明依赖了。重启机器不会有问题,除非你的配置有问题导致服务起不来。

daisuki4gh commented 11 months ago

@devome

@daisuki4gh

看日志排查。 各个service文件中已经写明依赖了。重启机器不会有问题,除非你的配置有问题导致服务起不来。

好的,我再研究下。

daisuki4gh commented 11 months ago

@devome

@daisuki4gh

看日志排查。 各个service文件中已经写明依赖了。重启机器不会有问题,除非你的配置有问题导致服务起不来。

查看启动日志发现claah启动时出现报错,我自己当时v3版本不兼容,“##安装 install -ps clash.meta-linux-amd64-v${remote_ver} /usr/local/bin/clash” ,排查是把clash.meta赋予了777权限,系统提示有风险,改成644报错消失。

现在在debian终端使用PING Baidu.com,发现调用的主路由IP(192.168.5.1)作为DNS,并没有使用本机127.0.0.1(192.168.5.100),这个正常吗,我记得第一篇设置静态IP时,要修改/etc/network/interfaces时设定默认使用本机IP做DNS。

devome commented 11 months ago

@daisuki4gh

请自行学习Linux权限事宜,644是不行的。不支持 AMD v3请不要install AMD v3的包,请自行修改为所支持的包名。 ping并不显示DNS服务器,请使用nslookup

daisuki4gh commented 11 months ago

好的,感谢不吝指教!

devome @.***> 于 2023年10月30日周一 13:52写道:

@daisuki4gh https://github.com/daisuki4gh

请自行学习Linux权限事宜。644是不行的,要755,install默认就是755。 ping并不显示DNS服务器,请使用nslookup。

— Reply to this email directly, view it on GitHub https://github.com/devome/blog/issues/20#issuecomment-1784527208, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJWAPWLLVNQF4ZSBRDLSTULYB46CDAVCNFSM6AAAAAA6KDGMTGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBUGUZDOMRQHA . You are receiving this because you were mentioned.Message ID: @.***>

zhlmnet commented 2 months ago

geoip4_cn.nft 哪里下载啊到处都没找到

devome commented 2 months ago

@zhlmnet geoip4_cn.nft 哪里下载啊到处都没找到

正文中这里 “你可以先下载这并非是最新的文件,先保存到该位置:geoip4_cn.nft。”