本文用于记录把 Linux 设置旁路由的过程,统一处理家里需要魔法的网络设备(例如 Android TV、PS5、IPad、MBP等),下面提到的操作方法都是基于谷歌搜索到网络文章,作者仅是总结和记录,避免重复踩坑。
一、前期准备
- Linux 系统:作者用的是闲置的装了 Deepin 系统的笔记本
- Clash:本文是基于 Clash 实现科学上网,并且用其充当 DNS 服务器以及处理转发过来的流量
- yacd:Clash 的其中一个 Web UI 项目,用于控制 Clash 节点选择,观察流量统计,查看链接信息等
二、配置 Clash
- 下载对应的 Clash 版本,例如我基于 Deepin 下载的是 clash-linux-amd64-v3-v1.18.0.gz
cd ~/Downloads
wget https://github.com/Kuingsmile/clash-core/releases/download/1.18/clash-linux-amd64-v3-v1.18.0.gz
2. 创建 /opt/clash/ 目录,将下载的 Clash 文件解压的改目录下,命名为 clash,并增加运行权限
sudo mkdir /opt/clash
gunzip ~/Downloads/clash-linux-amd64-v3-v1.18.0.gz
sudo mv ~/Downloads/clash-linux-amd64-v3-v1.18.0 /opt/clash/clash
sudo chmod u+x /opt/clash/clash
3. 下载 yacd release 文件,解压后,将 public 目录放到 /opt/clash/ 项目下,命名为 dashboard
cd ~/Downloads/
wget https://github.com/haishanh/yacd/releases/download/v0.3.8/yacd.tar.xz
tar -xf yacd.tar.xz
sudo mv ~/Downloads/public /opt/clash/dashboard
4. 在 /opt/clash/ 目录下,放入配置文件 config.yaml ,并在配置文件中加入下面的配置
redir-port: 7892
external-ui: dashboard
external-controller: '0.0.0.0:9090'
dns:
enable: true
ipv6: false
listen: 0.0.0.0:53
enhanced-mode: fake-ip
nameserver:
- 114.114.114.114
- 223.5.5.5
- tls://dns.rubyfish.cn:853
fallback:
- 114.114.114.114
- tls://dns.rubyfish.cn:853
- 8.8.8.8
experimental:
ignore-resolve-fail: true
三、配置 Linux
- 由于开启了 Clash 的 DNS 功能,需要关闭 Linux 的 53 端口服务
sudo systemctl disable systemd-resolved
2. 将 Clash 配置成系统服务,并在开机时自动启动
sudo vim /etc/systemd/system/clash.service
[Unit]
Description=clash service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/clash/clash -d /opt/clash
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable clash
sudo service clash start
3. 配置路由规则
sudo iptables -t nat -N CLASH
sudo iptables -t nat -A CLASH -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A CLASH -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A CLASH -p tcp -j REDIRECT --to-ports 7892
sudo iptables -t nat -A PREROUTING -p tcp -j CLASH
4. 安装 iptables-persistent,让 iptables 重启后依然生效,安装后会提示是否保存配置,选是就行,后面如果修改了 iptables 配置,执行 sudo iptables-save > /etc/iptables/rules
sudo apt install iptables-persistent
5. 开启 Linux 系统的转发功能
sudo vim /etc/sysctl.conf
# 增加下面这行
net.ipv4.ip_forward=1
# 让配置生效
sudo sysctl -p
四、测试
- 将局域网内的设置 IP 设置为手动设置,设置一个空闲的 IP,把路由地址和 DNS 都设置为旁路由的 IP 地址


2. 测试访问情况