Clash 旁路由透明网关

Sep 12, 2022 • 预计阅读时间 1 分钟

正常的客户端上网流程:

客户端 => 路由器 => 互联网

加上旁路由后,流程变成:

客户端 => 旁路由(透明) => 路由器 => 互联网

客户端的 DNS网关的 IP 都指向旁路由,流量由旁路由转发。

使用树莓派做旁路由,Clash 安装在树莓派上,树莓派运行的系统是 Debian。

Clash 开启透明代理:

redir-port: 7892

修改配置后需要重启 Clash 使配置生效:

sudo systemctl restart clash

Debian 开启 IPv4 的数据包转发 /etc/sysctl.conf

net.ipv4.ip_forward = 1

使用 nftables 配置转发规则,先安装:

sudo apt install nftables

配置转发规则 /etc/nftables.conf

#!/usr/sbin/nft -f

flush ruleset

define lan = {
  0.0.0.0/8,
  10.0.0.0/8,
  127.0.0.0/8,
  169.254.0.0/16,
  172.16.0.0/12,
  192.168.0.0/16,
  224.0.0.0/4,
  240.0.0.0/4
}

table ip nat {
  chain proxy {
    ip daddr $lan return
    ip protocol tcp redirect to :7892
  }

  chain prerouting {
    type nat hook prerouting priority 0; policy accept;
    jump proxy
  }
}

把 tcp 转发给 Clash 代理,这样所有流量都可以被 Clash 的规则所控制。

开启 nftables 服务(如果需要):

sudo systemctl enable nftables

启动 nftables 服务:

sudo systemctl start nftables

树莓派上的旁路由配置已经完成了,还需要修改路由器的 DHCP 配置,使分发给客户端的 DNS 和网关的 IP 是树莓派的地址。

我的路由器是 OpenWRT 系统,配置 DHCP 下发的网关和 DNS 为旁路由的地址(10.2.2.254):

Interfaces » LAN » DHCP Server » Advanced Settings » DHCP-Options

3,10.2.2.254
6,10.2.2.254

另外,还需要禁用 IPv6,因为 Clash 和树莓派的配置都是 IPv4 的。

clash
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

使用 simctl 安装 tvOS 和 watchOS 模拟器

aria2 并发下载