Linux中的全局SS代理脚本

   最近用Linux系统用得多,突然发现Linux下全局科学上网非常麻烦,特意花了点时间写了一个全局代理脚本。

    下载地址在文章最后放出。

先简述下原理:

    首先使用ss-redir将本地所有LOCAL_PORT端口上的流量全部转发的服务器

    然后使用iptables工具将本地所有的流量全部转发到本地LOCAL_PORT上去,从而实现全部流量都走代理,完成全局代理科学上网。

主要代码说明:

ss-redir篇

## 使用nohup工具使ss-redir在后台执行,ss-redir的参数和ss-local的基本一样,不解释了
nohup sudo ss-redir -s $SS_IP -p $SS_PORT -l 1080 -k 19960514 -m aes-256-cfb > /dev/null 2>&1 &

iptables篇

## make a iptables rule chain
## 创建一个iptables 规则链
sudo iptables -t nat -N $CHAIN_NAME

## iptables Ignore shadowsocks address
## 忽略流向服务器的流量(这个流量也转发的LOCAL_PORT的话后果自行体会)
sudo iptables -t nat -A $CHAIN_NAME -d $SS_IP -j RETURN

## Ignore LANs and any other addresses you'd like to bypass the proxy
## 忽略一些对本地内网的转发
sudo iptables -t nat -A $CHAIN_NAME -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A $CHAIN_NAME -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A $CHAIN_NAME -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A $CHAIN_NAME -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A $CHAIN_NAME -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A $CHAIN_NAME -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A $CHAIN_NAME -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A $CHAIN_NAME -d 240.0.0.0/4 -j RETURN

## Anything else should be redirected to shadowsocks's local port
## 剩余流量全部转发到LOCAL_PORT上(要转发udp和icmp流量请自行去掉前面的#号)
sudo iptables -t nat -A $CHAIN_NAME -p tcp -j REDIRECT --to-ports $SS_LOCAL_PORT
#sudo iptables -t nat -A $CHAIN_NAME -p udp -j REDIRECT --to-ports $SS_LOCAL_PORT
#sudo iptables -t nat -A $CHAIN_NAME -p icmp -j REDIRECT --to-ports $SS_LOCAL_PORT

## Apply the rules
## 使规则生效
sudo iptables -t nat -I OUTPUT -j $CHAIN_NAME


## clean the rules
## 清除规则
sudo iptables -t nat -F $CHAIN_NAME
sudo iptables -t nat -D OUTPUT -j $CHAIN_NAME
sudo iptables -t nat -X $CHAIN_NAME



源文件下载 github

0 条评论
发表一条评论