前言
在不改变现有网络拓扑的情况下想实现全终端留学,增加一个旁路网关是一个好办法,下文将会介绍具体配置方法
下载Clash
下载最新版本的clash
然后用gzip命令解压
⚠注意,19.0以下的Clash不支持TPROXY方式的UDP转发
开启转发功能
临时开启
| 1
 | echo "1" > /proc/sys/net/ipv4/ip_forward
 | 
永久开启
| 1
 | echo "net.ipv4.ip_forward= 1" >> /etc/sysctl.conf
 | 
立即生效
设置服务
创建服务
| 1
 | vi /lib/systemd/system/clash.service
 | 
写入内容
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 
 | [Unit]Description=clash service
 
 [Service]
 Type=simple
 StandardError=journal
 User=clash
 Group=clash
 CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_NET_ADMIN
 AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_ADMIN
 ExecStart=/home/clash/clash -d /home/clash
 LimitNPROC=500
 LimitNOFILE=1000000
 
 [Install]
 WantedBy=multi-user.target
 
 | 
⚠可选添加名为clash的用户,或者替换成其它非root用户
加入服务列表
| 12
 
 | systemctl daemon-reloadsystemctl enable clash
 
 | 
运行服务以及查看日志
| 12
 
 | systemctl start clashsystemctl status clash
 
 | 
测试clash是否配置正确
| 1
 | curl -x socks5://127.0.0.1:7891 google.com
 | 
iptables设置
添加标记路由
| 12
 
 | ip rule add fwmark 0x1 table 100ip route add local 0.0.0.0/0 dev lo table 100
 
 | 
UDP重路由
| 12
 3
 4
 5
 6
 
 | iptables -t mangle -N P_MARK  #新建表iptables -t mangle -A P_MARK -d 127.0.0.1 -j RETURN
 iptables -t mangle -A P_MARK -d 192.168.0.0/16 -j RETURN   #放行局域网数据
 iptables -t mangle -A P_MARK -d 255.255.255.255 -j RETURN   #放行广播数据包
 iptables -t mangle -A P_MARK -m owner --uid-owner clash -j RETURN   #放行clash发出的数据
 iptables -t mangle -A P_MARK -p udp -j MARK --set-mark 0x1    #标记并重路由
 
 | 
TCP转发
| 12
 3
 4
 
 | iptables -t nat -N TCP_REDIRiptables -t nat -A TCP_REDIR -d 127.0.0.1/8 -j RETURN
 iptables -t nat -A TCP_REDIR -d 192.168.0.0/16 -j RETURN
 iptables -t nat -A TCP_REDIR -p tcp -j REDIRECT --to-ports 7892   #转发TCP到指定端口
 
 | 
UDP转发
| 12
 3
 4
 5
 
 | iptables -t mangle -N UDP_REDIRiptables -t mangle -A UDP_REDIR -d 127.0.0.1 -j RETURN
 iptables -t mangle -A UDP_REDIR -d 192.168.0.0/16 -j RETURN
 iptables -t mangle -A UDP_REDIR -d 255.255.255.255 -j RETURN
 iptables -t mangle -A UDP_REDIR -p udp -j TPROXY --on-port 7892 --tproxy-mark 0x1/0x1   #按标记路由转发UDP到指定端口
 
 | 
应用规则
| 12
 3
 4
 
 | iptables -t mangle -A PREROUTING -j UDP_REDIR   #转发来自其它设备的UDP包iptables -t mangle -A OUTPUT -j P_MARK          #重路由本机发出的UDP包
 iptables -t nat -A PREROUTING -j TCP_REDIR      #转发来自其它设备的TCP包
 iptables -t nat -A OUTPUT -m owner ! --uid-owner clash -j TCP_REDIR  #转发本机非clash的流量
 
 |