使用 Shadowsocks 自建翻墙服务器,实现全平台 100% 翻墙无障碍Lhp免费翻墙网
2016 年 9 月 11 日更新:Lhp免费翻墙网
本文过于复杂,只适合有技术基础、爱折腾的人阅读,较为简短的版本请阅读淘宝小胡子哥的博文:《Shadowsocks 原理简介及安装指南》Lhp免费翻墙网
另外,结合我一年多的科学上网经验,近日我撰写了一篇更全面便捷的科学上网指南,欢迎阅读:《懒人福音:包学包会的简易科学上网指南》Lhp免费翻墙网
众所周知,中国为了“国家安全”和“国家网络安全”等目的,建设了“强大的” GFW(中国防火长城),以禁止中国大陆网民访问国外的“敏感网站”和“可能敏感网站”……Lhp免费翻墙网
在与 GFW 斗争的十几年间,勤劳勇敢的中国劳动人民发现、发明了许许多多“翻墙”软件,包括但不限于自由门、GoAgent、Shadowsocks、cow、Lantern……Lhp免费翻墙网
Shadowsocks 简介
其中,Shadowsocks (下面简称 SS)算是比较出名的一个。下面摘录维基百科,简单介绍一下 SS:Lhp免费翻墙网
Shadowsocks (中文名稱:影梭)是使用 Python 等语言开发的、基于 Apache 许可证开源的代理软件。Shadowsocks 使用 socks5 代理,用于保护网络流量。在中国大陆被广泛用于突破防火长城(GFW),以瀏覽被封鎖的內容。Lhp免费翻墙网
Shadowsocks 分为服务器端和客户端。在使用之前,需要先将服务器端部署在支持 Python 的服务器上面,然后通过客户端连接并建立本地代理。此外用户也可以选择购买基于 Shadowsocks 的商业服务,以获得更加稳定可靠的服务,或者免去自行部署的麻烦。Lhp免费翻墙网
目前开发者已宣布停止维护。Lhp免费翻墙网
值得提及的是:Lhp免费翻墙网
- SS 的作者是 Clowwindy,中国人,貌似就职于知乎;
- 2015 年被警察请去喝咖啡,被要求删除在 Github 开源的 Shadowsocks 及其衍生项目。现在 SS 已无开发者进行维护;
- 很多人以为 Shadowsocks 在 Github 的项目真的被删了……其实并没有,作者只是把 SS 项目的默认分支设置为了一个叫 rm 的分支,显示被删信息。如果你“足够聪明”,切换到 master 分支后,就可以看到了。另外,项目版本发布页面内的源码包也都还在:https://github.com/shadowsocks/shadowsocks/releases
我的翻墙经历
自由门(FreeGate)
我一开始接触翻墙,用的是自由门,这个软件完全免费,但速度和稳定性都很差,绝对看不了视频。自由门之所以被封得厉害,是因为它其实就是用来宣传敏感政治言论的,甚至还有 FLG 的东西(一种很神奇的功,十几年前很流行,你懂的)……一打开软件就会默认弹出一个浏览器窗口,网页内全是敏感信息……当时第一次用,真有被吓到 Orz……Lhp免费翻墙网
后来,自由门就真的扛不住了,速度越来越慢……Lhp免费翻墙网
GoAgent
随即接触到 GoAgent,它是利用 Google 为 Google 应用开发者提供的每月 1G 免费 App 流量来实现免费翻墙的。Lhp免费翻墙网
首先,你要登录 Google 注册开发者账号,才能一步步配置 GoAgent,步骤繁琐不说,问题是:Google 在中国大陆本来就被墙了的,要翻墙后才能打开 Google……这就陷入了一个死循环。Lhp免费翻墙网
所以出现过这么一幕:我开着自由门,打开了 Google,一步步配置 GoAgent……Lhp免费翻墙网
GoAgent 还有一个缺点是:它需要配合浏览器代理插件使用,并且只能实现浏览器翻墙,无法让其他电脑软件也同时翻墙。Lhp免费翻墙网
Shadowsocks
SS 有几个特点:Lhp免费翻墙网
-
Shadowsocks 使用自行设计的协议进行加密通信。加密算法有 AES、Blowfish、IDEA、RC4 等,除建立 TCP 连接外无需握手,每次请求只转发一个连接,因此使用起来网速较快,在移动设备上也比较省电。Lhp免费翻墙网
-
所有的流量都经过算法加密,允许自行选择算法,所以比较安全。 Shadowsocks 通过异步 I/O 和事件驱动程序运行,响应速度快。Lhp免费翻墙网
-
客户端覆盖多个主流操作系统和平台,包括 Windows、OS X、Android 和 iOS 系统和路由器(OpenWrt)等。Lhp免费翻墙网
-
专为移动设备和无线网络优化。Lhp免费翻墙网
——摘录自维基百科Lhp免费翻墙网
Lhp免费翻墙网
Lhp免费翻墙网
其实我对浏览国外网站的需求并不大,如果我不是从事互联网技术行业,如果没有遇到 Shadowsocks,我可能永远都不会打开 CNN 的网站。于我而言,SS 足够稳定、快速、高效,涵盖各大主流平台、100% 翻墙无障碍,这就足够了。Lhp免费翻墙网
说到底,下面这几类人的翻墙需求会比较大:Lhp免费翻墙网
- 喜欢浏览国外网站或使用相应服务,如 Google 全套办公套件、Facebook、Twitter、Instagram……
- 从事技术行业(其实 GFW 并没有封锁大部分技术网站和社区,只是在 GFW 内浏览技术网站的话,会慢得不像话,但大部分情况下还是可以打开的。国外技术资源下载速度也是奇慢。然而,如此低效率,怎么做开发?当然要翻墙!)
- 你懂的……我就不说了
Lhp免费翻墙网
题外话
去年闹得沸沸扬扬的 XcodeGhost 事件,很大一部分责任应该归咎于国内网络环境和 GFW。正是因为国内网络环境下载国外开发资源太慢,才衍生了各大网盘的资源中转和传播服务。国内 iOS 开发者为了提高工作效率,下载了存放在百度云网盘的 Xcode 开发套件,而不是从苹果官方渠道—— Mac App Store 下载。而不巧的是,这个 Xcode 开发套件是被第三方不怀好意者重编译投毒的,这些使用该 Xcode 开发套件的 iOS 开发者都中招了……其中不乏国内大公司的 iOS 开发者。Lhp免费翻墙网
Lhp免费翻墙网
下面以 Shadowsocks 为例,讲解翻墙方法
Shadowsocks 翻墙教程
概览
SS 的初始版本是使用 Python 语言开发的,而后通过开源社区的贡献,又有了很多不同语言、环境、平台下的实现:有 C#、Java、JavaScript、Go 等语言实现的,还适配了 Windows、OS X、Linux、Android、iOS、OpenWRT(主流路由器固件之一)等主流平台……所以 SS 完全是一个多语言、多环境、跨平台的开源项目。Lhp免费翻墙网
官网 下载页面 可以下载到所有平台的不同版本。Lhp免费翻墙网
Shadowsocks 翻墙方式汇总
- 懒人必备:愿意付钱,懒得自己搭建 SS 服务器的话,可以购买第三方的 Shadowsocks 翻墙服务。我用过这个:Shadowsocks.com,稳定性很不错。其中香港那台服务器,在中国电信宽带下,Ping 值能稳定在 12ms。用起来特别爽快!
- 穷逼必备:也有免费的 SS 翻墙服务,只不过为了控制服务质量,提供商会在一定时间内更换账号密码,需要使用者修改密码后重新登陆才能使用。如果一周就翻墙那么几次的话,可以考虑:iShadowsocks.com
- 不折腾会死星人看这里:我就是我,是颜色不一样的烟火。SS 翻墙服务器搭建方法见下文。
自行搭建 Shadowsocks 翻墙服务器
说明:本博文不讲解 Linux 系统基本使用方法,不涉及 CentOS 7 操作系统在生产环境下的安全性问题。有需要的话,请自行查阅资料。Lhp免费翻墙网
Linux 版本的 SS 分为服务端和客户端两个功能,前者是对外提供翻墙服务的,后者是接受服务的。Lhp免费翻墙网
具体步骤
步骤 1~5 为 SS 服务端部分的操作,步骤 6~8 为 SS 客户端部分的操作。Lhp免费翻墙网
- SSH 登录到位于墙外的服务器
- 安装 Shadowsocks
- 优化 Shadowsocks 性能
- 配置 Shadowsocks 配置文件
- 启动并永久运行 Shadowsocks 服务端
- 配置 Shadowsocks CentOS 7 客户端(Linux)
- 配置 Shadowsocks Windows 客户端(Windows)
- 配置 Shadowsocks Android 客户端(Android)
1. SSH 登录到位于墙外的服务器
SSH 使用方法参照之前的博文《在阿里云 CentOS 7 系统上部署 Ghost 博客》中的步骤 1。Lhp免费翻墙网
2. 安装 Shadowsocks
说明:以下命令均在最高权限用户 root 下运行。Lhp免费翻墙网
apt-get install python-pip pip install shadowsocks
yum install python-setuptools && easy_install pip pip install shadowsocks
3. 优化 Shadowsocks 性能
按照 SS 官方 Wiki,有如下优化策略:Lhp免费翻墙网
- 创建 local.conf 配置文件:
vim /etc/sysctl.d/local.conf
- 按键盘
i ,输入以下内容:
# max open files fs.file-max = 51200 # max read buffer net.core.rmem_max = 67108864 # max write buffer net.core.wmem_max = 67108864 # default read buffer net.core.rmem_default = 65536 # default write buffer net.core.wmem_default = 65536 # max processor input queue net.core.netdev_max_backlog = 4096 # max backlog net.core.somaxconn = 4096 # resist SYN flood attacks net.ipv4.tcp_syncookies = 1 # reuse timewait sockets when safe net.ipv4.tcp_tw_reuse = 1 # turn off fast timewait sockets recycling net.ipv4.tcp_tw_recycle = 0 # short FIN timeout net.ipv4.tcp_fin_timeout = 30 # short keepalive time net.ipv4.tcp_keepalive_time = 1200 # outbound port range net.ipv4.ip_local_port_range = 10000 65000 # max SYN backlog net.ipv4.tcp_max_syn_backlog = 4096 # max timewait sockets held by system simultaneously net.ipv4.tcp_max_tw_buckets = 5000 # turn on TCP Fast Open on both client and server side net.ipv4.tcp_fastopen = 3 # TCP receive buffer net.ipv4.tcp_rmem = 4096 87380 67108864 # TCP write buffer net.ipv4.tcp_wmem = 4096 65536 67108864 # turn on path MTU discovery net.ipv4.tcp_mtu_probing = 1 # for high-latency network net.ipv4.tcp_congestion_control = hybla # for low-latency network, use cubic instead # net.ipv4.tcp_congestion_control = cubic
4. 配置 Shadowsocks 配置文件
建议把 SS 的配置文件放置在当前用户主目录下的 ss 文件夹内,对于 root 用户而言,则是:/root/ss 目录。其余用户一般则是:/home/用户名 目录。Lhp免费翻墙网
下面我们以 root 用户为例:Lhp免费翻墙网
{ "server": "my_server_ip", // 这里输入本机的 IP 地址 "server_port": 8388, // 为了安全,可修改为大于 1024 的数字 "local_address": "127.0.0.1", "local_port": 1080, // 为了安全,可修改为大于 1024 的数字 "password": "mypassword", // 设置一个密码 "timeout": 300, "method": "aes-256-cfb", "fast_open": false }
5. 启动并永久运行 Shadowsocks 服务端功能
nohup ssserver -c /root/ss/ssserver.json -d start & Lhp免费翻墙网
说明:ssserver 是 SS 的服务端命令。-c 表示以配置文件的方式运行 SS,/root/ss/ssserver.json 则是步骤 4 中新建的配置文件的路径。-d 表示在后台运行,这样允许用户进行其他操作。start 就是启动。nohup 以及最后的 & 是让 SS 服务端一直运行,并把运行日志输出到当前用户主目录下的 nohup.out 文件中。Lhp免费翻墙网
ssserver -c /root/ss/ssserver.json -d stop Lhp免费翻墙网
说明:无需 nohup 和 & ,把 start 换成 stop Lhp免费翻墙网
6. 配置 Shadowsocks CentOS 7 客户端(Linux)
其实,我去年就购买了第三方的 Shadowsocks 翻墙服务,我的 Windows 10 和 Android 手机早已妥妥地翻墙多时。而这次折腾 Shadowsocks 服务器翻墙,主要是最近几个月,在玩 CentOS 7 服务器。Lhp免费翻墙网
我有两个阿里云 ECS 云服务器,一个位于青岛(墙内),一个位于美国硅谷(墙外)。前者作为折腾的环境,供平时玩 CentOS 7 练手;后者作为生产环境,部署并运行着“前端养成记”这个博客,所以不敢在这上面乱动……Lhp免费翻墙网
青岛的服务器,无论是 wget 、curl 、npm 都极其慢(估计 yum 在阿里云内部提供了镜像,所以很快),所以当时就想:怎么为这个墙内的服务器翻墙呢?毫无疑问,Shadowsocks 随即出现在我的视野里。Lhp免费翻墙网
下面演示 SS 客户端在 CentOS 7 系统上的部署和配置:Lhp免费翻墙网
- SSH 登录到墙内服务器,重复步骤 1、2,为其安装 Shadowsocks:
yum install python-setuptools && easy_install pip pip install shadowsocks
- 配置 Shadowsocks 配置文件:这次依然把配置文件放置在当前用户主目录下的 ss 文件夹内,只不过配置文件命名为
sslocal.json :
编辑配置文件,依然是按 i 进入编辑,按 ESC 退出编辑,按 :wq 保存并退出:Lhp免费翻墙网
{ "server": "my_server_ip", // 这里输入墙外服务器的 IP 地址 "server_port": 8388, // 与 ssserver.json 配置文件设置同样的端口 "local_address": "127.0.0.1", "local_port": 1080, // 为了安全,可修改为大于 1024 的数字 "password": "mypassword", // 填写 ssserver.json 配置文件中设置的密码 "timeout": 300, "method": "aes-256-cfb", "fast_open": false }
- 启动并永久运行 Shadowsocks 客户端功能:
nohup sslocal -c /root/ss/sslocal.json -d start & Lhp免费翻墙网
停止命令: Lhp免费翻墙网
sslocal -c /root/ss/sslocal.json -d stop Lhp免费翻墙网
- 将 Shadowsocks 的 SOCKS5 请求转化为 HTTP 请求
由于 Shadowsocks 使用的是 SOCKS5 协议,必须把 SOCKS5 请求转化为 HTTP 协议请求,墙内服务器的其他软件才能使用该代理。这里使用 Privoxy 软件进行协议请求转换。Lhp免费翻墙网
-
安装 Privoxy: yum install privoxy -y Lhp免费翻墙网
-
编辑 Privoxy 配置文件,将 SOCKS5 协议转化为 HTTP 协议: vim /etc/privoxy/config Lhp免费翻墙网
-
在配置文件中增加这个配置: forward-socks5 / 127.0.0.1:1080 . (这最后面确实有个英文句号,不要遗漏)Lhp免费翻墙网
-
设置 Privoxy 随系统自动启动: systemctl enable privoxy Lhp免费翻墙网
-
启动 Privoxy: systemctl start privoxy Lhp免费翻墙网
-
查看 Privoxy 状态: systemctl status privoxy , 如果有 running 和 active 字样,说明成功运行。Lhp免费翻墙网
使 .bash_profile 设置生效: source .bash_profile Lhp免费翻墙网
此时,墙内服务器当前用户 root 即可实现无缝翻墙!如果想要该服务器其他用户也实现翻墙,可以切换到该用户后,重复上面步骤。Lhp免费翻墙网
7. 配置 Shadowsocks Windows 客户端(Windows)
- 点击下载 Shadowsocks Windows 客户端 最新版
-
解压到任意目录,双击启动 Shadowsocks.exe,随机可以在右下角的系统任务栏看到一个纸飞机的图标,右键纸飞机图标,如图勾选设置: Lhp免费翻墙网
-
点开服务器,选择编辑服务器: Lhp免费翻墙网
-
随即弹出这样的界面,对应 sslocal.json 配置文件,对照相同项目来填写: Lhp免费翻墙网
-
接着右键纸飞机图标,这下图的服务器中,勾选刚刚设置的那个: Lhp免费翻墙网
Shadowsocks 还有一个强大的功能: PAC(代理自动设置)。它可以根据在配置文件中设置的网址,来决定哪些网站流量需要经过墙外服务器进行代理。 PAC 功能,可以保证只为国外网站走翻墙代理,国内网站依然直接连接,从而实现加速国外网站的同时,保持国内网站的连接速度。Lhp免费翻墙网
Shadowsocks 的 PAC 功能是通过 Shadowsocks 软件目录下的 pac.txt 和 user-rule.txt 两个文件同时实现的。前者是 SS 默认自动翻墙的网站列表,后者是用户自己设置的需要翻墙的网站列表。Lhp免费翻墙网
如果觉得某个网站的打开速度很慢,可以手动把它添加到 user-rule.txt 文件中,然后更新 PAC,从此该网站就通过翻墙服务器做代理,实现加速了。Lhp免费翻墙网
下面分享我自己积攒了一年多的 user-rule.txt 文件,主要是跟前端和设计相关的一些网站。你可以将下面的内容复制到自己的 user-rule.txt 文件中(网址前面有 @@ 表示该网站不需要翻墙):Lhp免费翻墙网
部分手机用户无法正常显示,戳我进入>>Lhp免费翻墙网
每次编辑完 user-rule.txt 后,需要右键纸飞机图标,选择“PAC” - “从 GFWList 更新本地 PAC” 后才能立即生效,如图:Lhp免费翻墙网
Lhp免费翻墙网
8. 配置 Shadowsocks Android 客户端(Android)
在各大应用商店搜索“Shadowsocks”或者“影梭”,安装后启动 App。按照 sslocal.json 配置文件相应项目填写配置后,启动软件即可实现 Android 手机翻墙。Lhp免费翻墙网
OS X 用户与 Windows 用户的设置大同小异;iOS 用户可以到 App Store 搜索 Shadowsocks 。Lhp免费翻墙网
Shadowsocks 官网下载页面: https://shadowsocks.org/en/download/clients.htmlLhp免费翻墙网
@@||shimo.im |
||livecoding.tv |
||caniuse.com |
@@||chinesemooc.org |
@@||ninghao.net |
@@||almuten.net |
@@||daocloud.io |
@@||xitu.io |
@@||knewone.com |
||geekuninstaller.com |
@@||duotai.org |
||*.org |
||visualstudio.com |
@@||ithome.com |
||jsfiddle.net |
||go.com |
||cloudfront.net |
||live.com |
||coursera.org |
||fluidui.com |
@@||temp.im |
||uxpin.com |
||slack.com |
||gitkraken.com |
||*.io |
||api.rubygems.org |
||rubygems.org |
||bintray.com |
||ruby-lang.org |
||dockerpool.com |
||chocolatey.org |
||apex.sh |
||sublimetext.com |
||leafletjs.com |
||vimeo.com |
||appicontemplate.com |
||vivaldi.com |
||sourceforge.net |
@@||packagist.phpcomposer.com |
@@||phpcomposer.com |
||amazonaws.com |
||atlassian.com |
||*.jp |
||packagist.org |
||shadowsocks.com |
||flinto.com |
||nodesource.com |
||laravel.com |
||midwesternmac.com |
||hashicorp.com |
||strikingly.com |
||iobit.com |
||git.io |
||libsass.org |
||*.edu |
||laracasts.com |
||ansible.com |
||outofmemory.cn |
||behance.net |
||madoko.net |
||nvie.com |
@@||williamlong.info |
||*.info |
||telerik.com |
||firebaseio-demo.com |
||firebase.com |
||windows.com |
||msdn.com |
||soundcloud.com |
||codecademy.com |
||githubusercontent.com |
||raw.githubusercontent.com |
||gist.githubusercontent.com |
||rhocdn.net |
||yahoo.com |
||gogoro.com |
||genymotion.com |
||blackdove.com |
||inspirizone.com |
||heroku.com |
||teehanlax.com |
||browserpopcorn.xyz |
||calltoidea.com |
||semantic-ui.com |
||*.ch |
||itppub.net |
||leanpub.com |
||*.eu |
||*.tk |
||freenode.net |
||*.im |
||*.in |
||btcc.com |
||adobe.com |
||docker.com |
||cscces.net |
||lynda.com |
||domain.com |
||*.toys |
||*.info |
||*.club |
||*.online |
||*.biz |
||*.xyz |
||*.mobi |
||*.news |
||*.rocks |
||godaddy.com |
||*.asia |
||*.is |
||100daysui.com |
||fastly.net |
||flickr.com |
||*.st |
||*.us |
||blankdots.com |
@@||mindstore.io |
@@||epinv.com |
||fonts.googleapis.com |
@@||127.0.0.1 |
@@||localhost |
||transifex.com |
||*.graphics |
||buffer.com |
||*.ly |
||smashingmagazine.com |
||cloudfront.net |
||gitbook.com |
||squarespace.com |
||creativelive.com |
||bishengjs.com |
||*.it |
||*.design |
||iguamu.com |
||goagentx.com |
||*.es |
||*.at |
||*.io |
||thomsoon.com |
||inoreader.com |
||lookcast.com |
||eafind.com |
||planeart.cn |
||itcast.cn |
||icloud.com |
||css-spinners.com |
||desandro.com |
||maiyadi.com |
||amazon.com |
||vagrantup.com |
||line25.com |
||avc.com |
||nytimes.com |
||theeffectiveengineer.com |
||businessinsider.com |
||reidhoffman |
||mashable.com |
||ghostchina.com |
||framer.link |
||framerjs.com |
||vocabninja.com |
||zeptojs.com |
||speakerdeck.com |
||greensock.com |
||jsbin.com |
||skype.com |
||xbox.com |
||microsoft.com |
||sass-lang.com |
||medium.com |
||itunes.apple.com |
||initializr.com |
||html5boilerplate.com |
||tumblr.com |
||sassmeister.com |
||videojs.com |
||gitlab.com |
||dribbble.com |
||npmjs.com |
||pinterest.com |
||slack.com |
||github.com |
Lhp免费翻墙网
Lhp免费翻墙网
来自https://www.loyalsoldier.me/fuck-the-gfw-with-my-own-shadowsocks-server/Lhp免费翻墙网
Lhp免费翻墙网
Lhp免费翻墙网
|