国内的国情确定了我们可浏览的网站,由于我们是开发者需要翻看很多国外技术网站,查看这些技术网站就需要到科学的技术。这里我们就介绍下 hosts、ssh、lantern、shadowsocks、outline 的搭建和使用
hosts
hosts(the static table lookup for host name 主机名查询静态表)用于补充或取代网络中DNS的功能。它储存的是计算机网络中各节点信息,负责将主机名映射到相应的IP地址,合理利用可提高域名的解析速度。在以前通过该技术可以实现FQ目的,现在已不再适用,因为自2018年8月24号起,长城开始启用基于SNI检测和TCP连接重置等手段进行了封锁
ssh
使用ssh端口映射也可达到FQ的目的。ssh端口映射、shadowsocks和outline这三种方式,都需要你有台境外服务器!这里推荐两个服务器提供商 vultr 和 搬瓦工,它们都支持微信和支付宝付款,两者的区别在于:
我自己就是使用的vultr,并且官网的UI设计的比较不错!我搭建的VPS服务器镜像地区是日本,系统是Ubuntu 19.10 x 64(搭建镜像时尽量选择离你比较近的地区,同时记得要开启IP6协议哦)。如何搭建VPS服务请参考https://www.stackcc.com/2019/07/25/vultrdas/ 和 https://github.com/Alvin9999/new-pac/wiki/%E8%87%AA%E5%BB%BAss%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%95%99%E7%A8%8B 太简单这里不赘述
VPS服务搭建好后,输入如下指令回车,并输入VPS服务器的密码
1 | ssh -D127.0.0.1:9000 root@remote_host |
- -D 动态转发,远程主机通过SOCKS协议连接到你要访问的网站,有加密作用
- 127.0.0.1:9000 是本地的IP和端口(端口随便定义,一般选用 1024-65535 之间的并且尚未使用的端口号)
- root 远程主机用户名(一般默认的都是这个,即我们刚搭建的VPS服务器镜像)
- remote_host 远程主机的IP地址
连接成功后,我们打开 “系统偏好设置 - 网络 - 当前正在使用的网络(例如:WIFI)- 高级(右下角)- 代理 - SOCKS代理 - SOCKS代理服务器处填写上127.0.0.1:9000(端口写你自己定义的) - 好 - 应用”
此时你再查看下自己的IP地址是不是变成VPS服务的了!访问一些被墙的网站也访问通了!终端内退出服务器的话,ssh连接就会断开
想了解更多ssh转发知识请参考:
https://www.ssh.com/ssh/
https://man.linuxde.net/ssh
https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html
https://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html
lantern
lantern(蓝灯)免费的全平台兼容的FQ软件,每月500M,每月月初自动重置
shadowsocks
Shadowsocks是一种基于socks5协议的代理工具。客户端下载列表如下:
VPS服务搭建这里直接跳过,不懂的请参考ssh端口映射的那一步。通过本地的终端ssh连接到远程服务器上
1 | ssh root@remote_host |
安装组件
1 | apt-get update |
安装谷歌BBR加速器
1 | wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh |
创建Shadowsocks服务配置文件
1 | # 路径和名称可随意定义 |
在shadowsocks.json文件内添加如下内容(回车后英文状态下按 i
键进入编辑模式,编辑后按 esc
退出编辑模式, 输入 :wq
保存退出vim)
1 | { |
server:换成你服务器的IP
port_password:多用户使用时开放的端口及其密码
method:加密协议
fast_open:是否开启加速器
开启Shadowsocks服务
1 | ssserver -c /etc/shadowsocks.json -d start |
此时启动会报 undefined symbol: EVP_CIPHER_CTX_cleanup
错误,该问题主要openssl.py版本升级后造成的。只需要把openssl.py文件内的 CIPHER_CTX_cleanup
改成 CIPHER_CTX_reset
就可解决
1 | # 如果终端里的 openssl.py 路径跟这里不一致 |
现在再使用 ssserver -c /etc/shadowsocks.json -d start
命令开启Shadowsocks服务即可完成!
客户端配置
现在服务器端已经配置完毕,紧接着就是配置客户端。Shadowsocks客户端的设置及其使用非常简单。在客户端中“添加服务器”,正确填写服务器的地址、端口、密码和加密方式,然后就可以连接服务端了
Outline
Outline 是 Jigsaw 团队开发的,而 Jigsaw 又是谷歌母公司 alphabet 旗下的,开源口号好像是为全球媒体工作者提供帮助什么的,具体的没记清楚。反正跟 shadowscoks 是同类型的工具,都是用来帮助我们科学上网的。软件核心部分依赖的还是 shadowscoks,只不过在此基础上重新包装开发而已。选择它的目地,主要是国内各应用商城内依然可下载 Outline App。使用 Outline 服务需要服务端和客户端两个软件配合使用,即
- 服务端:Outline Manager
- 客户端:Outline
第一步跟配置 Shadowsocks 一样,都是先在 Vultr 建服务器,然后使用 ssh 再登陆上去
1 | ssh root@remote_host |
部署方案
ssh 成功登陆 VPS 实例后,请分别执行下述指令
1 | apt update |
上述指令执行完成后,使用 systemctl status docker
进行检测
出现下述信息,说明 Docker 部署已成功
1 | docker.service - Docker Application Container Engine |
VPS 实例端服务器 Docker 部署完成后,我们到 Outline 官网下载并安装 Outline Manager.app。打开 app 点击界面右下脚的“随时随地安装 outline”选项,然后复制第一段提示你安装 shadowsocks 服务的代码,粘贴到 VPS 实例服务器内进行安装,即下述代码
1 | bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)" |
在 VPS 实例服务器内执行完指令,终端会给出已 “apiUrl” 开通的密钥,复制该密钥粘贴到 Outline Manager.app 内(就是你复制服务器端安装 shadowsocks 的那块)
1 | {"apiUrl":"https://***.28.*1.**9:***69/*********mfPAusF9w", |
连接到服务器后在终端执行安装 outline 服务的命令
1 | sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)" |
执行成功后会有下述提示
上图绿色字符串 apiUrl 部分是 Outline Manager.app 所需要的密钥,把该字符串粘贴到该 app 内即可
注意:
- Management port 32135, for TCP
- Access key port 60302, for TCP and UDP
这两句话的意思是开启防火墙的话,需要我们开启 32135 的 TCP、60302 的 TCP 和 60302 UDP 端口
除了 32135 和 60302 端口外,我们还需要开启 ssh 连接服务器的 22 端口
这三个端口是我们手动开启 Firewall 防火墙的关键
实际操作
回到 vultr 服务器管理界面
进到该实例管理界面,依次点击 Settings -> + -> Add Firewall Group -> Manage Firewall Group
分别在 IPv4 Rules 和 IPv6 Rules 添加下述规则
- Protocol:SSH / Port(or range):22
- Protocol:TCP / Port(or range):32135
- Protocol:TCP / Port(or range):60302
- Protocol:UDP / Port(or range):32135
最后点 Linked Instances 把这些规则连接到实例上,在绑定实例时注意查看IP是否是我们刚创建的实例IP
然后我们回到该实例管理界面,依次点击 Settings -> Firewall
至此防火墙配置完成
重新使用 ssh 命令连接到该实例,安装谷歌BBR加速器
1 | wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh |
重启 VPS,检测 BBR 是否开启
1 | lsmod | grep bbr |
出现 tcp_bbr 即说明 BBR 已经启动
配置 outline
完成 Outline Manager.app 服务端管理软件的配置后,我们再下载 Outline.app 作为平常使用, 打开该 app 在该界面内选择“添加新密钥”,然后把新创建的密钥共享给 outline.app 使用。注意使用的主要是以 ss 开头的字符串哦!操作还有迷糊的地方,可点击该文章 “Outline 的部署和使用” 看图文进行操作!
使用总结
长城防火墙封锁比较严重时或者不想付费的使用 lantern。不严重使用 shadowsocks 或者 outline。shadowsocks 配置稍复杂些,严查期间封锁 shadowsocks 也要比 outline 严重。短时间使用那就选 ssh 端口映射。
同时要提醒大家的是:
科学上网别信谣、别传谣、别造谣、别看不该看的东西、让我们做个守法的好公民!