最近发现树莓派涨价了,所以翻出了吃灰很久的树莓派 3B+,作为可以翻墙的旁路由网关,替代性能孱弱的路由器翻墙。这里记录下步骤。
1. 在树莓派上安装 clash 直接在这里 下载clash-linux-armv8
开头的二进制包,解压后放到/usr/local/bin 下
clash 配置文件部分内容:
cat /data/clash/config.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 port: 7890 socks-port: 7891 allow-lan: true tproxy-port: 7893 mode: Rule log-level: info external-controller: 0.0 .0 .0 :9090 external-ui: yacd secret: "" dns: enable: false ipv6: false nameserver: - https://dns.rubyfish.cn/dns-query - https://223.5.5.5/dns-query - https://dns.pub/dns-query fallback: - tls://dns.google proxies: - name: proxy1 proxy-groups: - name: Auto type: url-test url: http://www.gstatic.com/generate_204 interval: 300 proxies: - proxy1 - name: Proxy type: select proxies: - Auto - proxy1
2. 在树莓派上安装 ss-tproxy ss-tproxy 是个工具套件,帮你配置透明代理。
这里直接贴出我的配置文件,不介绍安装步骤。
cat /etc/ss-tproxy/ss-tproxy.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 mode='chnroute' ipv4='true' ipv6='false' tproxy='true' tcponly='true' selfonly='false' proxy_procuser='clash' proxy_procgroup='' proxy_svraddr4=(1.2.3.4) proxy_svraddr6=() proxy_svrport='80,443' proxy_tcpport='7893' proxy_startcmd='sudo -u clash bash -c "/usr/local/bin/clash -d /data/clash -f /data/clash/config.yaml > /var/log/clash.log 2>&1 &"' proxy_stopcmd='pkill clash' dns_direct='123.123.123.123' dns_direct6='240C::6666' dns_remote='8.8.8.8#53' dns_remote6='2001:4860:4860::8888#53' dnsmasq_bind_port='5353' dnsmasq_cache_size='4096' dnsmasq_cache_time='3600' dnsmasq_query_maxcnt='1024' dnsmasq_log_enable='false' dnsmasq_log_file='/var/log/dnsmasq.log' dnsmasq_conf_dir=() dnsmasq_conf_file=() dnsmasq_conf_string=() chinadns_bind_port='65353' chinadns_timeout='5' chinadns_repeat='1' chinadns_fairmode='false' chinadns_gfwlist_mode='false' chinadns_noip_as_chnip='false' chinadns_verbose='false' chinadns_logfile='/var/log/chinadns.log' chinadns_privaddr4=() chinadns_privaddr6=() dns2tcp_bind_port='65454' dns2tcp_tcp_syncnt='' dns2tcp_tcp_quickack='false' dns2tcp_tcp_fastopen='false' dns2tcp_verbose='false' dns2tcp_logfile='/var/log/dns2tcp.log' ipts_if_lo='lo' ipts_rt_tab='233' ipts_rt_mark='0x2333' ipts_set_snat='true' ipts_set_snat6='true' ipts_reddns_onstop='true' ipts_proxy_dst_port='1:65535' opts_ss_netstat='auto' opts_ping_cmd_to_use='auto' opts_hostname_resolver='auto' opts_overwrite_resolv='false' opts_ip_for_check_net='114.114.114.114' file_gfwlist_txt='/etc/ss-tproxy/gfwlist.txt' file_gfwlist_ext='/etc/ss-tproxy/gfwlist.ext' file_ignlist_ext='/etc/ss-tproxy/ignlist.ext' file_chnroute_set='/etc/ss-tproxy/chnroute.set' file_chnroute6_set='/etc/ss-tproxy/chnroute6.set' file_dnsserver_pid='/etc/ss-tproxy/.dnsserver.pid' pre_start () { iptables -t filter -P FORWARD ACCEPT }
有热心网友整理了坑点:https://github.com/zfl9/ss-tproxy/issues/188
需要注意的是需要给clash
设置能开启tproxy
的权限:
1 sudo setcap cap_net_bind_service,cap_net_admin=+ep /usr/local /bin/clash
启动 ss-tproxy
sudo ss-tproxy start
设置开启启动
1 2 3 cp ss-tproxy.service /etc/systemd/system/ss-tproxy.service systemctl daemon-reload systemctl enable ss-tproxy
3. 验证效果 假设你的树莓派 IP 为192.168.1.2
在手机上配置静态 IP,网关和 DNS 都设置成192.168.1.2
看下能否正常上网,翻墙。
4. 配置 DHCP 为了不用在每台设备上配置静态 IP,可以直接修改路由器的 DHCP 配置。
a. 配置路由器的 DHCP,将树莓派的 MAC 地址和 IP 绑定,并将网关和 DNS 都设置成192.168.1.2
b. 配置树莓派为静态 IP
如果树莓派也按照路由器的 DHCP 配置,那它会用自己当网关,ss-tproxy 会一直在等待网络就绪,无法启动,死锁了。
所以需要将树莓派设置成静态 IP,网关和 DNS 都设置成路由器 IP。
我的树莓派装的是 Ubuntu 系统,可以参考这篇:https://cloud.tencent.com/developer/article/1933335
不过这样做有个风险,如果哪天你换路由器了,且 IP 段也变了,那可能连不上树莓派,只能重装树莓派的系统了。
5. 常见问题 1. Chrome 访问 Google 证书错误,Safari 正常 访问 https://www.google.com ,结果出来的是 facebook 的证书。
这是因为 DNS 被污染了,需要调整 Chrome 的 DNS 配置。
chrome://settings/security?search=dns 关闭 Use secure DNS
UDDATE 树莓派 3B 的网口是 100 Mbps 的,如果你的宽带带宽超过 100,就浪费了。