海外的谷歌什么简直是美好,但是无奈每台机器都要配备特殊工具也是很累.研究了一段时间,发现用Pi做透明代理其实超级简单,也不用一大堆东西,就一个脚本完事.
#!/bin/bash # 新建一个IP集,存放国内IP. ipset -N chnroute hash:net maxelem 65536 # 添加新的Chain,这样方便管理. iptables -t nat -N SHADOWSOCKS iptables -t mangle -N SHADOWSOCKS # 服务器也不走转发,否则死循环了. iptables -t nat -A SHADOWSOCKS -d xxx.xxx.xxx.xxx -j RETURN # 内网不转发,直接发走. iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN # 国内IP不走代理 iptables -t nat -A SHADOWSOCKS -p tcp -m set --match-set chnroute dst -j RETURN # 转发到1080端口 iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 1080 # DNS转发 ip route add local default dev lo table 100 ip rule add fwmark 1 lookup 100 iptables -t mangle -A SHADOWSOCKS -p udp --dport 53 -j TPROXY --on-port 1080 --tproxy-mark 0x01/0x01 # 转发路由 iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS iptables -t mangle -A PREROUTING -j SHADOWSOCKS ss-redir -s xxx.xxx.xxx.xxx -p xxxx -b 0.0.0.0 -l 1080 -k NQj4JUbLMT -m aes-256-gcm -t 5 -v >> /var/log/ss-redir.log # 获取中国IP段,并设置为跳过代理.如果Pi经常重启,还是不要每次拉了,我反正只是偶尔重启,而IP段归属是有可能变动的. curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-extended-latest' | grep ipv4 | grep CN | awk -F| '{ printf("%s/%d ", $4, 32-log($5)/log(2)) }' > /tmp/chnroute.txt for ip in $(cat '/tmp/chnroute.txt'); do ipset add chnroute $ip done
保存这个脚本,设置到开机启动,替换服务器信息,比如我惯例丢/etc/rc.local,然后就可以用了.
当然,如果梯子超快,全部走海外,那就随你喜欢了.
最后,开启IPv4的转发协议.
一直搞不懂 ss-redir 怎么用,看官方也都是英文,其他博客没有你这个详细。
mark一下,争取在龙芯2F也跑起来