201906更新:原作者已经删除了SS相关说明,不再维护。 新的链接:https://github.com/teddysun/shadowsocks_install/tree/master   本教程只用于学习交流,不应该用于从事非法活动,包括但不限于盈利、非法政治活动等一切国家法律法规禁止的事情。 转载自:https://www.cnblogs.com/tianhei/p/7428622.html,并进行了勘误。 参考资料:centos 7 中没有iptables 和service iptables save 指令使用失败问题解决方案 参考资料:CentOS7 Firewall常用命令汇总,开放端口及查看已开放的端口(有些命令漏了空格) 参考资料:SSR高阶协议与混淆的使用 新增资料:https://shadowsocks.be/9.html 新增资料:SSR中文站

一、shadowsocks简介(以下来自wiki百科)

shadowsocks是一种基于Socks5代理方式的网络数据加密传输包,并采用Apache许可证、GPL、MIT许可证等多种自由软件许可协议开放源代码。shadowsocks分为服务器端和客户端,在使用之前,需要先将服务器端部署到服务器上面,然后通过客户端连接并创建本地代理。目前包使用Python、C、C++、C#、Go语言等编程语言开发。 运行原理: Shadowsocks的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。在服务器端部署完成后,用户需要按照指定的密码、加密方式和端口使用客户端软件与其连接。在成功连接到服务器后,客户端会在用户的电脑上构建一个本地Socks5代理。浏览网络时,网络流量会被分到本地socks5代理,客户端将其加密之后发送到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网。

二、搭建教程

1、环境介绍

阿里云服务器ECS(香港): 配置:cpu 1核心、内存 1GB、出网带宽 1Mbps。 系统:centos7

2、服务器端搭建

1)使用root用户,分别执行以下3条命令
$ wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh 
$ chmod +x shadowsocks-all.sh 
$ ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log
执行后,会提示输入源码语言,密码、端口、及加密方式等。(笔者这里端口使用8989;源码选择的是go语言;加密方式我这里选择aes-256-cfb;) 最终会显示以下效果,说明部署已完成:
Congratulations, your_shadowsocks_version install completed! 
Your Server IP        :11.11.11.11 
Your Server Port      :8989 
Your Password         :123456 
Your Encryption Method:aes-256-cfb 
Welcome to visit:https://teddysun.com/486.html Enjoy it
2)把8989端口设置为开放状态 CentOS7默认使用firewall防火墙,因此这里不再使用iptables配置端口 查询所有开启的端口,是否包含刚才使用的8989端口,如果有就可以不必开放端口
 firewall-cmd --zone=public --list-ports
永久开放8989端口号:
firewall-cmd --permanent --zone=public --add-port=8989/tcp
重新载入:
firewall-cmd --reload
3)开放云服务器端口(如果是阿里云服务器请继续看) 阿里云有安全组配置,需要进入阿里云管理界面找到安全组配置,把8989端口开放。否则外网依然无法方位该端口。 至此,服务器部署完成! 4)卸载方法:使用root用户,执行以下命令即可
$ ./shadowsocks-all.sh uninstall

3、客户端使用

1)windows客户端

首先搜索shadowsocks-windows,打开后编辑服务器进行如下配置。 服务器IP、服务器端口、服密码、加密方式、代理端口保持1080默认即可,其余配置保持默认 配置好后,在电脑右下角找到ss,勾选系统代理、代理模式选择PAC模式、是否开机启动。 至此,代理配置成功!请用多个浏览器进行访问测试吧! Chrome浏览器无法访问请参考:https://www.inhowe.cn/index.php/2019/01/06/ss%EF%BC%88shadowsocks%EF%BC%89%E6%90%AD%E5%A5%BD%E4%BA%86%E4%BD%86chrome%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E5%A4%96%E7%BD%91/

2)iphone代理配置

a.下载: APP Store中下载SuperRocket需要8元进行购买)。 20190414更新:该应用已经被封,另一款可用应用为Detour。 要想保持应用稳定,建议使用美区AppleID购买应用 b.使用: 打开App后, 点击右上角 + 号: 输入并核对服务器IP、端口、密码、加密方式,其余保持默认值 点击“save configuration”后进入choos页面,点击你刚刚创建的那个名字abcd即可。回到首页,找到你创建的代理并打开。 配置成功!经测试google、YouTube等网站打开很快,1080p视频毫无压力。 c.混淆配置: 在确认可以正常访问外网后,你可以尝试使用混淆配置,这可以让你的访问记录更具有私密性。
  • 如果你所在地区封锁不是很严重,推荐使用的协议:auth_aes128_md5auth_aes128_sha1。混淆值:plain
  • 地方封锁严重的,如校园网、企业网,推荐使用的协议:auth_aes128_md5auth_aes128_sha1。混淆值:http_simple与tls1.2_ticket_auth

3)ubuntu系统代理配置(未测试)

a.安装shadowsocks
$ sudo apt install shadowsocks
b.找到config.json,并编辑代理配置
$ cd /etc/shadowsocks/
$ sudo vim config.json
{
    "server":"x.x.x.x",    //ss服务器的ip
    "server_port":8989, //ss服务器的端口,笔者这里配置的是8989
     "local_address": "127.0.0.1",
    "local_port":1080,  //本机端口:可以换成别的
    "password":"123456", //ss服务器密码
    "timeout":300,
    "method":"aes-256-cfb" //ss服务器配置的加密方式
}
c.启动shadowsocks,启动后控制台不要关闭
$ sslocal -c config.json
d.配置代理。 右上角-系统设置-网络-网络代理-手动。 Socks主机:127.0.0.1    端口:1080 最后点击“应用到整个系统”,至此,配置完成。 e.让终端也走代理的方法: 在~/.bashrc文件中增加以下两句,表示bash终端中的http和https的请求也通过socks5协议进行代理转发。
export http_proxy="socks5://127.0.0.1:1080" 
export https_proxy="socks5://127.0.0.1:1080"