树莓派用作透明代理

/ 1评 / 0

海外的谷歌什么简直是美好,但是无奈每台机器都要配备特殊工具也是很累.研究了一段时间,发现用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的转发协议.

  1. sRGB说道:

    一直搞不懂 ss-redir 怎么用,看官方也都是英文,其他博客没有你这个详细。

    mark一下,争取在龙芯2F也跑起来

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注