简介
本文将要总结关于科学上网的概念、方法及工具。目的是用于看了后,知道科学上网的概念以及如何使用合适的工具去实现自己科学上网的需求。
基本上都是靠谱稳定的服务。看个人爱好了.
科学上网介绍:
1:什么是科学上网
2:为何要科学上网
3:科学上网的相关技术和工具
什么是科学上网:
科学上网 =翻墙 =利用技术手段,能够访问在中国被GFW禁止/过滤掉无法访问的网站/网络
注:GFW=Great Firewall (of China)=防火长城=中国国家防火墙=简称:墙
为何要科学上网:
为什么会有科学上网呢?那是因为中国政府禁止了一些国外的内容,让普通的网民无法访问,所以才要翻过这个墙,去科学上网。
但是国家为何要禁止国外内容呢?主要是因为国外有些内容,让咱中国政府不太高兴,所以政府不想和不希望你能看到那些内容。
到底有哪些内容不想让你看到呢?那此处暂时就不详细说了,?,以防止被和谐。毕竟此处只关心为了学习技术而翻墙,不涉及政治。
科学上网的目的
此处所要谈论的科学上网的主要目的则是:
通过技术手段,可以访问国外的和政治无关的,主要是涉及到计算机技术开发相关的内容,比如google,Wikipedia,stackoverflow等等技术资源,用于技术学习等目的。
至于科学上网之后,看到了国家不希望你看到的内容,不在此教程讨论范围内。
科学上网的相关技术和工具:
用于实现科学上网的相关的技术和工具很多。
下面来简单总结一下各种技术和相关工具:
各种客户端
之前听说或用过的有:
无界 :偶尔用过,效果不够稳定
自由门 :偶尔用过,效果不够稳定
Chrome插件-红杏 :试过,不太好用
蓝灯 :据说还行,没用过
GoAgent :用过很长时段时间,最终由于无法保证长期稳定使用而放弃
VPN技术
VPN是一套技术的总称,可以理解为,加了密的专用的网络/专线 ,从技术上保证不会被和谐掉。
而把VPN的技术用于科学上网,有很多家可以通过收费服务,你可以找到合适的VPN服务提供商,购买对应的服务。
常见的有:
Astrill:好像用的人比较多,但是使用效果一般
ExpressVPN
多态
VPN技术的优缺点
优点:相对安全性还不错
缺点:
开启了VPN -> 所有网络请求都要走VPN -> 对于国内网站,本来无需翻墙,就浪费了流量,且访问速度不理想
关闭了VPN -> 所有的都不走VPN -> 有些需要翻墙的就没办法
总之:没法自动根据所要访问网站而决定是否翻墙 -> 即省流量又保证访问国内站点时速度快
多态
没用过
查了下,据说支持自动模式识别是否需要翻墙,号称不限速
费用:20元/月或50元/月
据说不是特别稳定
不能自定义代理规则
对于普通人:其实无所谓
对于开发者:还是有点影响的
工信部禁止未经批准的无资质企业和个人运营VPN
但是查到了:
1月30日,国新办新闻发布会上,工信部总工程师张峰再次回应了关于去年出台的VPN相关政策是否会影响用户跨境访问互联网的问题。他强调,相关政策旨在维护公平有序的市场,规范对象是未经批准的无资质企业和个人,不会对国内外企业和广大用户正常跨境访问互联网、合法依规开展各类经营活动造成影响。
张峰表示,工信部于2017年1月发布《关于清理规范互联网网络接入服务市场的通知》,是为了更好地维护公平有序的市场。该《通知》主要的规范对象是未经电信主管部门批准,也没有国际通信业务经营资质,同时又租用了国际专线或者VPN违规开展跨境业务经营活动的企业和个人。
对于此举是否影响现有的各类用来科学上网的VPN,包括多态,大家自行理解。
Shadowsocks技术
之前用过上述多很多办法,但是均由于速度不够好或不是足够稳定等原因而放弃。
然后后来才遇到Shadowsocks。目前已使用几年,速度和稳定性效果都很好。且(对应客户端支持)自动模式,可以自动判断访问某个网站是否要翻墙,在速度和流量之间得到了平衡。
所以遂推荐用Shadowsocks。
后面的内容主要就是详细介绍Shadowsocks的技术和用法。Shadowsocks 下载 和 Shadowsocks 配置 请移步:Shadowsocks 下载与配置
此处对于Shadowsocks的技术和使用之前需要了解的概念,进行基本的介绍。
Shadowsocks是什么:
Shadowsocks 是一套技术和相关工具的总称,常被简称为ss
而这套技术,至少包含这些大的部分:
Shadowsocks技术本身
Shadowsocks的服务端
Python的shadowsocks
shadowsocks-server
shadowsocks-libev
libQtShadowsocks
shadowsocks-go
等等
Shadowsocks的客户端
Shadowsocks window 客户端
Shadowsocks ios 客户端
Shadowsocks mac 客户端
Shadowsocks android 客户端
等等
Shadowsocks在技术上可以简单总结为:
一套基于Socks5 代理方式的网络加密传输数据包的技术
= 用socks5技术加密的技术
Shadowsocks官网
Shadowsocks这套技术,有个自己官网:
Shadowsocks – A secure socks5 proxy
http://shadowsocks.org/en/index.html
shadowsocks.org:
利用Shadowsocks的方式:
而把Shadowsocks技术用于科学上网,则多种方案/方式可选择:
服务器+客户端模式
服务器 :首先需要有个ss的服务器
服务器本身自己能够访问国外的网络
当然,同时该服务器上运行了ss的服务
即:服务器+ss服务,则一般有两种方式:
去买Shadowsocks第三方服务商提供的服务器
或者是自己买了VPS服务器后自己搭建出来的Shadowsocks服务器
客户端 :然后需要对应客户端,才能用起来Shadowsocks的服务,才能科学上网
不同的平台下,需要安装不同的客户端
且要支持对应的ss服务器所设置的加密方式
尤其是部分ss服务器采用最新的更复杂的加密方式,还要求客户端是最新版才支持,否则无法使用
之后就会详细介绍,如何购买ss的服务或自己搭建ss服务器,以及如何在Mac/Windows/iOS/Android等不同平台中使用ss实现科学上网。
路由器模式
还有一种,不需要客户端的、更一劳永逸的、但更复杂的、也更方便的方案:路由器模式
首先我们知道,我们一般上网都是通过连接了路由器提供的网络而才能去上网的。
而如果通过设置,去实现了,在路由器内部本身就通过ss实现了科学上网,则意味着:
其他使用此路由器提供的网络的人,不论是电脑(Window/Mac)还是手机端(iOS/Android),都无需额外设置,本身就可以达到科学上网的效果了。
总的说就是:用路由器实现ss科学上网,其他连接此网络的设备,无需任何操作即可一劳永逸的直接科学上网了
Shadowsocks的服务器
想要用Shadowsocks的客户端+服务器模式
去科学上网的话,需要先有ss服务器。
拥有ss服务器的方式有两种:
从(比如https://portal.shadowsocks.nl/等)第三方ss服务商那里购买了ss服务
自己搭建了ss服务器
下面就来解释具体如何操作。
购买第三方Shadowsocks服务
能够去用ss去实现科学上网,最简单和省心的方式就是:去购买第三方提供的ss服务
购买第三方ss服务的含义
对于所谓的,你去购买了第三方的ss服务,主要指的是:
你花了 (相对不算多的)钱 ?
从第三方 提供了ss服务的公司的手上
买了 ss服务
你得到了 对应的账号和密码和其他服务器的等配置信息
包括:
服务器允许你使用的流量
服务器的密码
服务器的IP地址/域名
往往同时提供多个地址的服务器,对应多个不同的IP地址/或域名
其他一些配置信息
如此,你就可以去使用任何的ss的客户端 ,添加了上述的服务器的IP、密码等信息,利用ss技术去科学上网 了。
为何要购买别人提供的ss服务而不是自己折腾(搭建自己的ss服务器)?
和自己搭建ss服务相对,原因很简单:花合适的钱,享受相对不错的服务,即:省心
省心
省了让你操心自己折腾时的各种麻烦的心
-> 买别人服务,别人直接给你账号密码端口等配置信息,直接拿来主义,设置好即可使用
速度快
一般而言,购买的别人的ss服务器的速度都还是很不错的,往往要比自己买的服务器的速度更好
且往往提供多个服务器,选择余地也多
稳定
省了担心自己买的服务器万一哪天被和谐掉的心
自己的被和谐了,就只能重新换IP或域名,或重新买主机,就很麻烦
-> 别人的服务器即使被和谐了,也可以很快的提供其他更多更好的服务器从而可以继续使用ss
ss的服务的提供商有很多,包括国内的和国外的。
其中我自己一直在用的,且觉得效果不错的是:
最新地址 :
portal.shadowsocks.nl 简介
portal.shadowsocks.nl 背后对应的公司是:Cat Networks Hong Kong Limited
shadowsocks 的官网地址由于你懂的
原因更换多次,请使用最新地址
portal.shadowsocks.nl的自己的声明
正因为此,所以才会看到,最新的网站portal.shadowsocks.nl中,官网挂出了声明,专门提醒这一点:
To all visitors:
We can only provide support for customers purchased service on our site. If you have not purchase our service yet, please go to the purchase section for more information.
我们仅能为在本站购买服务的客户服务,如果您在其他类似站点购买服务,我们无法为您提供支持。shadow-socks.org 和 shadowsocksvpn.com 等网站与我们没有任何关系 ,敬请知悉,谢谢。
Thank you.
所以看到此文的人,搞清楚portal.shadowsocks.nl只是一家提供了ss服务的公司的网站即可。
这家shadowsocks的服务总结
优点:
节点多
之前就有遍布世界各地的多个节点,比如 香港
,日本
,美国
,俄罗斯
,英国
等节点
后又陆续新增一些节点
我们很高兴地宣布,香港 HK5 节点已加入所有(入门版、高级版和旗舰版)服务计划,流量倍率为 1。
荷兰 NL1 节点已上线,拥有中国电信大带宽,倍率仅为 0.1,欢迎使用。
NL1 in The Netherlands is now live. With high throughput capacity and lower rate only at 0.1. Please enjoy.
服务稳定
目前用了好几年了,除了国内某些特殊时期(其他家服务也被停了),一般都可以稳定上网
缺点:
流量用完时,没有及时有效的通知,导致不知何故被停,后来上了网站上才看到是流量超了
详见:【已解决】shadowsocks突然无法使用后来发现是流量用完了
主页地址更换后,没有(比如通过邮件)及时有效的通知
对应的,portal.shadowsocks.nl的最新的注册+登录+购买的地址是:
https://portal.shadowsocks.nl
购买 https://portal.shadowsocks.nl 的ss服务的过程
下面的内容是基于旧域名 shadowsocks.to
下面的购买步骤的截图和地址都是基于旧地址 shadowsocks.to
登录地址:Client Area – Shadowsocks.com Portal
会进入:
套餐说明:
对于个人:买Starter基本够用了
流量:每月50G,足够一般的使用了
人数:限制只能一个人用
但是可以用在自己多个终端设备上
比如桌面端的Mac和iOS或Android的手机上
对于多个人/小公司:可以选购Premium
流量:也是50G,多人共享
人数:最多同时有5个人使用
其实只是理论上限制任意一个时刻,不能超过5个人
所以平时偶尔及时稍微多点人,比如6个,7个之类的用,估计也没啥影响,也是可以继续用的
此处购买的是Premium的套餐:
Premium
CN2 server in Singapore and Hong Kong
Exact servers list prevail upon activation.
50GB Monthly traffic soft limit No Abuse, No BitTorrent/P2P/Keep occupying bandwidth/etc.
Abused accounts will be terminated without refund.
One account is available for up to 5 endpoint device.
Non-jailbroked iOS users will have to purchase third-party clients.
点击对应套餐后,进入:
然后进入结账页面:
然后去用支付宝支付:
然后用支付宝去扫描支付即可。
支付成功后,会自动跳转回到商户页面:
贴上此处支付后支付宝的交易信息:
然后回到shadowsocks.to中,进去:
可以从:服务
-> 我的服务
:
中找到已购买的服务:
点击后,进入服务详情页:
然后可以看到对应的信息:
(1)购买的服务的基本描述
(2)ss的配置信息
shadowsocks.nl中ss的配置说明
对此处的ss的配置信息解释一下:
服务端口:ss的客户端中用到的配置端口号
登录密码:ss的客户端中用到的配置密码
加密方式:ss的客户端中用到的配置加密方式
流量信息:
每月流量:每月共有多少流量供你使用
本月使用:当前用了多少
本月剩余:还剩多少
配置文件:
可以点击下载 出现弹框,可以下载Windows和Mac的ss客户端的配置文件
服务器列表
会列出各个可用的服务器
主要包括了:
节点服务器地址:就是服务器的IP或域名 -> ss的客户端中用到的配置服务器地址
流量费率:不同的服务器
这个费率是后来才支持的功能
估计是为了平衡不同服务器的压力而设计的
二维码:ss可以通过利用自带的扫描功能,扫描此二维码而自动添加该服务器的配置
加密方式
shadowsocks.nl中:
现在采用最新的加密方式:chacha20-ietf-poly1305
之前旧的加密方式是(最常见,但是不是足够复杂和安全的):aes-256-cfb
之所以换加密方式是因为:前不久国家的20-1 大
期间查的严,各种ss和VPN都被干掉了,所以才升级为更安全的加密方式
配置文件
点击配置文件 的下载 ,可以弹出对应下载不同配置的页面:
流量费率
之前没有流量费率这一说的。最新加入了流量费率。
官网的解释是:
流量费率已更新,请在大流量操作时选用费率更低的节点。
流量计费公式:计算流量 = 实际使用流量 x 流量费率。
例如,客户 A 使用流量费率 1.5 的节点 2GB,又使用流量费率 0.4 的节点 10GB,则总计使用流量 = 2×1.5+10×0.4 = 7GB。
请善用此功能,将您的每月流量最大效率化。
换句话说:
对于此处流量费率比较低的几个服务器:
美国1/美国2/香港 都是0.2,而本身购买的服务器的流量是50G,如果平时:
美国1/美国2/香港 这三个服务器都是可以稳定上网翻墙的话
且你自己一直都是用这三个服务器(之一)去翻墙上网的话
相当于你购买了50G /0.2=250G的流量了。
二维码
点击对应的按钮,可以出现二维码,而其他客户端(比如Mac中的ShadowsocksX-NG,Android手机中的影梭等)可以去扫码添加此ss服务器的配置信息,实现快速添加配置的效果。
具体的操作过程,详见后面的详细解释。
自己搭建Shadowsocks服务器:
除了前面提到的,购买第三方的ss的服务之外,如果自己有能力,有精力,喜欢折腾,或者被逼无奈(之前就遇到20+1大时所有vpn和ss都被和谐了,所以逼的自己建ss服务器),则可以自己去搭建ss服务器。
自己搭建ss服务器的优缺点
自己搭建ss的服务器:
优点:
自己可以任意配置
账号可以给多人使用
流量一般不是问题
缺点:
需要自己折腾
自己需要了解基本的技术才能去搭建
万一被和谐了,VPS服务器的IP可能被封
CentOS中搭建自己的ss服务器
此处以Linux的CentOS中为例,介绍如何搭建自己的ss服务器。
具体实现方式,有多种,但多数都是Python的shadowsocks相关的包或库,然后简单设置一下即可。
准备工作
准备一台可以访问国外网站的VPS主机
在自己搭建ss服务器之前,首先要求你自己有一台可以访问国外网站的服务器,典型的是去(比如
Linode 、
Vultr 、
DigitalOcean 等)主机提供商购买一个VPS主机,这样可以远程通过SSH工具登录主机,然后再去安装ss服务。
比如我此处就是用自己之前从Linode买的VPS,接着在上面折腾,安装ss服务,变成提供了ss服务器。
最好用Python 2的版本
为了兼容性,此处最好Python是2.x的版本,比如此处的是2.7.5:
[ root@crifan ~]
Python 2.7.5
Copy
Python包管理工具:pip
如果没有python的包管理工具,比如pip
,则最好先去安装:
yum -y install python-setuptools && easy_install pip && pip install --upgrade pip
Copy
方式1: 用Python的shadowsocks实现ss服务
用pip去安装shadowsocks
pip install shadowsocks
Copy
配置shadowsocks
去添加配置文件/etc/shadowsocks.json
。
内容可以参考下面的shadowsocks-libev
的配置文件/etc/shadowsocks-libev/config.json
启用shadowsocks
启动shadowsocks:
ssserver -c /etc/shadowsocks.json -d start
Copy
停止shadowsocks:
ssserver -c /etc/shadowsocks.json -d stop
Copy
方式2: 用shadowsocks-libev实现ss服务
安装shadowsocks-libev
cd /etc/yum.repos.d/
curl -O https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo
yum install -y shadowsocks-libev
Copy
配置shadowsocks-libev
新建配置文件(如果不存在的话):
/etc/shadowsocks-libev/config.json
然后配置对应的参数:
server
:当前自己的服务器的地址
server_port
:ss服务的端口
一般要大于1024,小于65536
可以随意取值,只要不和其他端口冲突即可
password
:ss客户端使用ss时要使用的密码
比如一个复杂但安全的,包含数字和大小写字母的密码:Ci20s5a6y96F
method
:加密方式
以前常见的方式是:aes-256-cfb
最新更加复杂但更安全的是:chacha20-ietf-poly1305
但是注意需要ss客户端要支持该加密方式才能正常使用ss服务
timeout
:超时时间,单位:秒
mode
:ss服务的模式
比如:tcp_and_udp
,即支持tcp也支持udp
举例,比如我此处的设置是:
{
"server" : "0.0.0.0" ,
"server_port" : 21500 ,
"password" : "Ci20s5a6y96F" ,
"method" : "aes-256-cfb" ,
"timeout" : 300 ,
"mode" : "tcp_and_udp"
}
Copy
启动shadowsocks-libev
启动:systemctl restart shadowsocks-libev
想要以后每次重启(Linux的CentOS)服务器时都可以自动启动此ss服务,则可以去:
设置开机启动:systemctl enable shadowsocks-libev
其他相关命令:
查看状态:systemctl status shadowsocks-libev
查看日志:journalctl -u shadowsocks-libev
重启:systemctl restart shadowsocks-libev
如何确认ss是否正在正常运行
有多种手段查看ss是否正常运行:
systemctl status shadowsocks-libev
比如用 systemctl status shadowsocks-libev
去查看状态是否正常:
[ root@crifan yum.repos.d]
[ 0m shadowsocks-libev.service – Shadowsocks-libev Default Server Service
Loaded: loaded ( /usr/lib/systemd/system/shadowsocks-libev.service; disabled; vendor preset: disabled)
Active: active ( running) since Mon 2017-10-23 20:32:02 CST; 25s ago
Docs: man:shadowsocks-libev( 8)
Main PID: 20915 ( ss-server)
CGroup: /system.slice/shadowsocks-libev.service
20915 /usr/bin/ss-server -c /etc/shadowsocks-libev/config.json -u
Oct 23 20:32:02 crifan.com systemd[ 1] : Started Shadowsocks-libev Default Server Service.
Oct 23 20:32:02 crifan.com systemd[ 1] : Starting Shadowsocks-libev Default Server Service…
Oct 23 20:32:02 crifan.com ss-server[ 20915] : 2017-10-23 20:32:02 INFO: UDP relay enabled
Oct 23 20:32:02 crifan.com ss-server[ 20915] : 2017-10-23 20:32:02 INFO: initializing ciphers… aes-256-cfb
Oct 23 20:32:02 crifan.com ss-server[ 20915] : 2017-10-23 20:32:02 INFO: tcp server listening at 0.0.0.0:21500
Oct 23 20:32:02 crifan.com ss-server[ 20915] : 2017-10-23 20:32:02 INFO: udp server listening at 0.0.0.0:21500
Copy
journalctl -u shadowsocks-libev
可以查看对应的log输出是否正常,比如:
[ root@crifan yum.repos.d]
— Logs begin at Thu 2017-10-12 03:56:54 CST, end at Mon 2017-10-23 20:39:17 CST. —
Oct 23 20:32:02 crifan.com systemd[ 1] : Started Shadowsocks-libev Default Server Service.
Oct 23 20:32:02 crifan.com systemd[ 1] : Starting Shadowsocks-libev Default Server Service…
Oct 23 20:32:02 crifan.com ss-server[ 20915] : 2017-10-23 20:32:02 INFO: UDP relay enabled
Oct 23 20:32:02 crifan.com ss-server[ 20915] : 2017-10-23 20:32:02 INFO: initializing ciphers… aes-256-cfb
Oct 23 20:32:02 crifan.com ss-server[ 20915] : 2017-10-23 20:32:02 INFO: tcp server listening at 0.0.0.0:21500
Oct 23 20:32:02 crifan.com ss-server[ 20915] : 2017-10-23 20:32:02 INFO: udp server listening at 0.0.0.0:21500
Copy
netstat -autn
通过命令:netstat -autn
或:netstat -lnp
,去查看ss的端口是否正常:
[ root@crifan yum.repos.d]
Active Internet connections ( servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21500 0.0.0.0:* LISTEN
.. .
tcp 0 0 45.79.205.194:443 222.188.39.139:52004 ESTABLISHED
.. .
tcp 0 1 45.79.205.194:80 61.147.173.53:45254 LAST_ACK
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 0.0.0.0:21500 0.0.0.0:*
Copy
其中的21500
就是上面设置的ss的端口,对应着tcp
和udp
的服务,表示都在正常运行。
ps ax |grep ss-server
也可以用ps ax |grep ss-server
去看看当前已经通过ss-server启用了哪些ss的服务
用shadowsocks-libev实现多账号/多用户
上述创建的ss服务,只有一个(账号)密码,只能供一个人用,或者说,如果多个人使用,则使用的是同一个(账号)密码,显得很不方便和不安全。
如果想要多个用户每人有不同的账号(密码),则可以:用shadowsocks-libev实现多账号/多用户
新建另外一个配置文件,比如:
/etc/shadowsocks-libev/config2.json
内容和之前一致,只是端口号server_port
和密码password
改了一下即可:
{
"server" : "0.0.0.0" ,
"server_port" : 21501 ,
"password" : "passowrd2" ,
"method" : "aes-256-cfb" ,
"timeout" : 300 ,
"mode" : "tcp_and_udp"
}
Copy
注意: 端口号不要和系统中其他服务的端口号冲突了。
另外再去用:
setsid ss-server -c /etc/shadowsocks-libev/config2.json -u
Copy
启用新端口对应的ss服务。
说明+坑+注意事项
此处把一些常见的坑/注意事项/说明解释,整理如下:
Shadowsocks官网
官网也有介绍如何安装ss服务端
官网也有介绍如何ss的配置的
官网也有关于ss的配置信息的介绍的,包括:
建议设置一个复杂但安全的密码
为了使得自己的ss的相对更加安全,建议设置一个相对比较复杂的密码
去生成一个比较复杂的密码,就类似于:ci20s5a6y96f
FirewallD is not running
在启用ss服务期间,在检查是否可能是由于防火墙的问题而导致ss服务没有正常运行时,可能会遇到:
FirewallD is not running
-> 其表示:防火墙并没有运行
-> 对应着(和我此处类似的Linode的)CentOS中的防火墙,默认是关闭的
-> 所以不是防火墙的问题。