科学上网
大部分情况下,中国网民都无需绕过“网络防火墙”(GFW
)浏览墙外内容。但是对于国外的先进技术,我们需要科学上网来获取。
服务器
国外服务器的购买。这里我选择的是Vultr,对比了很多国外的服务器,这个蛮靠谱的,vultr服务目前是全英文,按时收费,
完整的中文介绍入门和购买流程;个人提醒:
- 选择便宜的主机
- 选择
USA
的主机 - 创建的时候尽量不要开启防火墙
- 尽量使用
ubuntu14.06
系统
可能会遇到的问题:
ssh
连接不上,但是可以ping
通。解决方法,这其实没得救了,刚开始生成的主机一般22
端口是开放的,但是过几分钟就关闭了,我们需要趁着这几分钟把ssh的默认端口改成其他的4422
等,这样才好使- 服务器安全,尽量不要用
root
来登入官方推荐配置
通过以上的步骤,我们完成了一台服务器的简单使用。
shadowsocks
shadowsocks
客户端启动后会在本地开启一个代理,可以理解为一个数据的出入口。用户想通过shadowsocks
访问墙外网站的请求都要经过这个本地代理。
安装shadowsocks
;安装参考;
1 | apt-get update |
可能会遇到的问题:
- 先执行
sudo apt-get update
- 提示安装
pip
的版本过低,需要更新pip install --upgrade pip
- 缺失
setuptools
,执行pip install setuptools
perl: warning: Falling back to the standard locale ("C").”
等提示错误解决方法; 可以执行export LC_ALL=C
;或者参考修改LC_ALL- 如果是16.0以上的ubunutu,还有提示代码错误,需要修改pip文件的源代码,可以自行查看解决方法,参考方法
客户端配合使用:需要区分客户端类型,支持安卓、iOS、mac、window、linux
github仓库组里面有对应的客户端;也可以查看列表各类型客户端;选择自己需要的。
安卓 outline
最开始以为没有对应的安卓apk,所以使用了outline来辅助,这需要在自己的服务器上执行一行代码,安装了一个docker镜像,输出一段代码,这块可能会遇到内核版本问题,需要去github上查看对应的issue;关于docker的问题;
docker的issue
所以还是考虑使用官方给的安装包比较靠谱A shadowsocks client for Android;点击进入releases页面,选择自己的安卓apk包即可;比较常见的就是shadowsocks--universal-4.7.3.apk
;
使用bbr加速
Google BBR是一个TCP加速优化工具,
安装BBR
Ubuntu开启BBR的前提是内核必须等于高于4.9,所以想要使用这个牛逼的玩意儿,需要先看看你的内核是否是4.9或者以上。使用bbr加速完整指南
查看命令:1
uname -a
如果是4.9或者以上,那么恭喜你,升级内核这一步你就可以跳过了,如果在4.9以下,那就需要更新一下内核了;很遗憾我们选择的ubuntu14.04官方默认搭载的镜像,内核是3.13的,所以我必须要做一波内核升级了。
升级过程中其实比较简单,先确定你的系统是32位还是64位的,可以用下面的命令查看;
查看命令:getconf LONG_BIT
;确定系统之后,需要下载必要的升级程序包
http://kernel.ubuntu.com/~kernel-ppa/mainline/
这个网站可以找到最新的程序包,根据自己的需要使用wget命令来下载到服务器;1
2
3
4
5
6
7
8
9
10
11## 下载内核
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9-rc8/linux-image-4.9.0-040900rc8-generic_4.9.0-040900rc8.201612051443_amd64.deb
## 安装内核
dpkg -i linux-image-4.9.0*.deb
## 更新grub引导装入程序。
sudo update-grub
## 重启机器
reboot
重启之后继续查看,执行命令uname -a
,确保你实际上是在运行你更新之后的内核。
开启BBR
修改系统变量:1
2echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
重点,执行以上命令,如果显示拒绝访问可以尝试使用如下命令1
2sudo bash -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
sudo bash -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
保存生效:
sysctl -p
执行:
sysctl net.ipv4.tcp_available_congestion_control
如果返回结果:net.ipv4.tcp_available_congestion_control = bbr cubic reno
; 那么恭喜你BBR开启成功了!
也可以执行:
lsmod | grep bbr
来检测 BBR
是否真的开启成功……
使用docker快速搭建
由于众所周知的原因,服务器的IP
或者端口port
总会难免game over
的。所以啊,如果每次都要重新创建服务器,然后走这一套流程,香菇蓝瘦,所以最近的docker
可以很好的帮助我们来完成这个,我们自己建立一个镜像,每次运行这个镜像就可以了。
- 安装docker
- 拉去unbuntu14.04镜像
- 执行上面的安装shadowsocks教程里面的命令
- 使用docker commit、docker login、docker tag、docker push等命令进行容器的生成和上传。
利用shadowsocks-libev
shadowsocks是有好几种语言来实现的不同版本的,上文使用了Python版本【可以认为是最先推出的版本,后来大神被请去喝茶之后就删除了github上Python版本shadowsocks的相关内容,不过github上有了新的一批社区高手开始支持各个语言的版本开发,其中c语言版本就属于迭代比较快速的版本】,这里介绍另外一个版本纯C语言的版本shadowsocks-libev
,
步骤
来自github的wiki;
- 购买服务器,这里使用了高版本ubuntu 19.04
获取源码shadowsocks-libev
1
2
3git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd shadowsocks-libev
git submodule update --init --recursive安装shadowsocks-libev [不同版本系统操作不一致]
1
2sudo apt update
sudo apt install shadowsocks-libev编译源码deb
Build deb package from source
1
2
3
4mkdir -p ~/build-area/
cp ./scripts/build_deb.sh ~/build-area/
cd ~/build-area
./build_deb.sh配置服务和服务启动
1
2
3
4
5
6
7
8
9# Edit the configuration file
sudo vim /etc/shadowsocks-libev/config.json
# Edit the default configuration for debian
sudo vim /etc/default/shadowsocks-libev
# Start the service
sudo /etc/init.d/shadowsocks-libev start # for sysvinit, or
sudo systemctl start shadowsocks-libev # for systemd [本次使用启动命令]同样可以BBR加速, 因为shadowsocks-libev的对于系统的版本要求越高越好,所以这个使用bbr还可以避免重新安装内核的操作,更加简化。
极简使用 简单实践
那么我们个人想要科学上网,可以:
寻找一些TTMM的供应商,购买服务;
自己搭建代理服务完成科学上网【以Shadowsocks为例】;
以第二个为例,选择Vultr服务,搭建Shadowsocks代理,具体步骤:
购买服务器:https://www.vultr.com/zh/products/cloud-compute/ [韩国]
- ssh的操作性高,官方console反应迟钝:cat ~/.ssh/id_rsa.pub 把公钥提交一下,方便后续登录
- ssh是linux远程登录的安全协议,是 C/S 模式的架构,配置文件分为:
- 服务器端配置文件 [/etc/ssh/sshd_config]
- 客户端配置文件默认配置文件[/etc/ssh/ssh_config]
- 用户配置文件[~/.ssh/config]
- 确认服务器可用性:https://www.toolsdaquan.com/ipcheck/
- 访问服务器:ssh 或者 官方提供的console
- 修改root的密码:sudo passwd root
- 修改ssh的port:11235,重启:sudo service ssh restart
- 通过ssh链接该服务器
开始部署Shadowsocks服务,以C语音的libev版本为例, https://github.com/shadowsocks/shadowsocks-libev#debian--ubuntu
- 因为高版本Ubuntu已经有snap了,所以直接安装:sudo snap install shadowsocks-libev
- 配置shadowsock:在/snap/shadowsocks-libev/目录下新增配置文件:config.json,参考:https://github.com/shadowsocks/shadowsocks/wiki/Configuration-via-Config-File
1
2
3
4
5
6
7
8
9
10vim /snap/shadowsocks-libev/config.json
// 内容如下
{
"server":"0.0.0.0",
"server_port": 58132,
"password":"1123581321CWJ!",
"timeout":5000,
"method":"chacha20-ietf-poly1305",
"fast_open": false
}
启动服务:
1
2
3
4
5
6# 1. 后台守护程序运行,脱离终端控制台(ss-pid文件会自动创建)
/snap/bin/shadowsocks-libev.ss-server -c /snap/shadowsocks-libev/config.json -f /snap/bin/ss-pid
# 2. 后台运行,但不脱离终端控制台
/snap/bin/shadowsocks-libev.ss-server -c /snap/shadowsocks-libev/config.json &
# 3. 前台运行 shadowsocks 服务
/snap/bin/shadowsocks-libev.ss-server -c /snap/shadowsocks-libev/config.json关闭服务:
1
2
3
4# 此命令可查看正在运行的 shadowsocks 服务的进程ID,进程名叫 ss-server
netstat -lptn
# 关闭 shadowsocks 服务,xxxx 请改用你上面命令查到的进程id
kill -9 xxxx客户端连接:
加个速:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#修改系统变量:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
# 重点,执行以上命令,如果显示拒绝访问可以尝试使用如下命令
# sudo bash -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
# sudo bash -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
# 保存生效:
sysctl -p
# 执行:
sysctl net.ipv4.tcp_available_congestion_control
#检测 BBR 是否真的开启成功
lsmod | grep bbr开机自启动处理:
开机自启动处理:
写脚本:vim ss_setup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#!/bin/sh
### BEGIN INIT INFO
# Provides: ss_setup.sh
# Required-Start: mountkernfs
# Required-Stop:
# X-Start-Before: checkroot
# Default-Start: S
# Default-Stop:
# X-Interactive: true
# Short-Description: 使用shadowsocks
# Description: 启动shadowsocks
### END INIT INFO
# 开启shadowsocks服务
/snap/bin/shadowsocks-libev.ss-server -c /snap/shadowsocks-libev/config.json -f /snap/bin/ss-pid
exit 0拷贝:cp ss_setup.sh /etc/init.d/
- 权限修改:chmod 755 /etc/init.d/ss_setup.sh
- 设置启动顺序:
- cd /etc/init.d/
- update-rc.d ss_setup.sh defaults 95