为了实现socks5全局代理我研究了很多天,网上的教程都不是给小白看的,很多问题根本没有说指出,作为一个小白,我一定详细的写好这篇文章,让每个人都能配置好全局代理!
好了,其实首先就是要有一个服务器,网上的有的文章有的根本没提服务端需要的配置(服务端代理也必须也为socks5,因为我之前服务端有https代理,我以为就不需要配置服务端了,这让我走了很多坑)
1.配置服务端
在终端下载 shadowsocks-libev 这个软件,不同系统下载的方法不同,主要就是分两类系统下载
(ubuntu 类)
sudo apt-get install shadowsocks
或者(centos类)
sudo yum install shadowsocks
下载完成后会有ssservice 这个工具 命令就是
ssservice -c 配置文件
下面我来写一个配置文件 配置文件内容如下(如果大家要复制粘贴的话一定要把注释去掉,否则不能正确执行的)
{
"server":"xx.xx.xx.xx", //你的服务器的ip地址
"server_port":80, //客户端访问服务器的端口(这个端口一定是开着的,保证客户端可以访问到服务器的代理),
"password":"xxxxxxx", //密码 随便设置(不过必须要设置一个密码,否则服务不能运行)
"method":"rc4-md5", //这个必填,就写这个rc4-md5就行了
"local_address":"0.0.0.0",//这个必须为0.0.0.0
"local_port":1080, //设置1080就可以了
"fast_open":false //这个没什么用,如果设置true说是可以提高加载速度,不过我感觉也没什么效果,按照其他文章写得都是false,所以我们也设置为false吧
}
这里还要注意最后一个配置项结束后没有逗号,其余每个配置项都要有逗号
写完这个配置项 把它保存为 shadowsocks.json(其实保存什么样的后缀名都可以读出来,不过我还是习惯于写.json了)
然后运行命令
ssservice -c shadowsocks.json
如果报错
socket.error: [Errno 98] Address already in use
就说明你的端口(我配置文件中设置的是80,这个看你设置的是多少了)被占用了
两种解决办法 、
1.结束掉占用端口的服务
2.换别的端口
怎么结束,或者怎么查看自己开启的端口 百度去吧,我这里不多说了
如果没报错 服务端就已经配好了
2.客户端
下载shadowsocks-libev
ubuntu类型系统 输入
sudo apt-get install shadowsocks-libev
如果没找到这个软件那就可以下载我的资源点我点我!
注意:这个软件是deb的如果你是centos系列的那就没办法了,去github搜索shaodowsocks-libev这个项目自己编译安装吧!
centos类型系统 输入
sudo yum install shadowsocks-libev
安装完成后会有ss-redir
命令就是
ss-redir -c 配置文件
配置文件同理还是以json为后缀名
配置文件如下(自己新建一个shadowsocks.json文件,如果大家要复制粘贴的话一定要把注释去掉,否则不能正确执行的)
{
"server":"xxx.xxx.xxx.xxx", //服务器ip地址
"server_port":80, //访问服务器的端口(要跟你服务器上面设置的一样,我设置的是80)
"timeout":600, //设置的超时,按照我设置的就可以了
"password":"xxxxxxx", //密码要跟你服务器上设置的一样
"method":"rc4-md5", //还是跟服务器上配置的一样
"local_address":"0.0.0.0", //这个必须为0.0.0.0
"local_port":1080, //设置1080就行
"fast_open":false //和服务器上配置的一样
}
这个配置完后我们还需要写一些iptables规则,打开命令行,输入如下:
iptables -t nat -N SHADOWSOCKSR
iptables -t nat -A SHADOWSOCKSR -d 0.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 10.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 100.64.0.0/10 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 127.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 169.254.0.0/16 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 172.16.0.0/12 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 192.168.0.0/16 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 224.0.0.0/4 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 240.0.0.0/4 -j RETURN
iptables -t nat -A SHADOWSOCKSR -p tcp -j REDIRECT --to-ports 1080
iptables -t nat -I PREROUTING -p tcp -j SHADOWSOCKSR
iptables -t nat -A OUTPUT -p tcp -j SHADOWSOCKSR
(上面的命令要切换到root用户去执行的,因为我发现有的普通用户是没有iptables命令的)
为了方便大家复制粘贴,我在下面简单的说一下这几条的命令的大致含义
就是把你本机所有产生的流量转发给1080端口去处理,而上面的大多数的命令是忽略局域网产生的流量,就是不转发局域网产生的流量(具体链什么含义去看http://www.linuxidc.com/Linux/2016-09/134832.htm这篇文章,很详细)
删除上面的命令是
iptables -t nat -F
其实你现在的全局代理就可以用了,在命令行里输入
ss-redir -c shadowsocks.json
这样你的全局代理就生效了
但是这些命令输入完之后,重启后就会失效,而且还需要启动ss-redir服务,所以我们这里做一个脚本
脚本的功能是:
1.运行这个脚本会执行iptables这些命令
2.启动ss-redir这个服务
3.按回车后,关闭ss-redir 这个服务,并删除所用iptables的规则
脚本如下:
#!/bin/bash
iptables -t nat -N SHADOWSOCKSR
iptables -t nat -A SHADOWSOCKSR -d 0.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 10.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 100.64.0.0/10 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 127.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 169.254.0.0/16 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 172.16.0.0/12 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 192.168.0.0/16 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 224.0.0.0/4 -j RETURN
iptables -t nat -A SHADOWSOCKSR -d 240.0.0.0/4 -j RETURN
iptables -t nat -A SHADOWSOCKSR -p tcp -j REDIRECT --to-ports 1080
iptables -t nat -I PREROUTING -p tcp -j SHADOWSOCKSR
iptables -t nat -A OUTPUT -p tcp -j SHADOWSOCKSR
ss-redir -c /home/wshuo/shadowsocks.json &
read -p "按回车关闭代理"
killall ss-redir
iptables -t nat -F
echo "已经退出代理"
exit 0
(这个脚本要在 root 用户下执行,因为iptables的命令是root下的)
把这个脚本保存为 dl.sh 文件
这样你只需输入./dl.sh
就能启动全局代理,而你按一下回车就退出全局代理 了,很方便.