探索Ubuntu: 从SS+dragonite开始
注意:本文已经过时,点击查看文章更新(2022)

dragonite(快龙)的作者可能是个神奇宝贝的死忠粉……
什么是dragonite
Dragonite 是一个基于 UDP 的可靠传输协议,能针对高丢包与不稳定的网络极大提高传输速度。本项目有一系列基于 Dragonite 协议的应用,例如 TCP 双边加速流量转发工具与加密 SOCKS5 代理。
说明
由于工作需要,开始正式学习使用Linux,所以【 探索Ubuntu: XXX 】系列会一直更新下去~
现在,从一台全新的Ubuntu 17.04开始吧!
操作概览
- 安装SS服务,并成功连上远程服务器
- 安装JAVA运行环境(JRE)
- 安装Dragonite,加速SS(Ubuntu / MacOS / Windows)
- 自定义alias
安装shadowsocks
服务器端
安装
(sudo) apt-get install python-pip
(sudo) pip install shadowsocks
创建配置文件
(sudo) touch ~/ss_config
(sudo) vi ~/ss_config
按下 i 进入编辑模式,输入
{
"server":"0.0.0.0", // 这里不要填了服务器IP地址,否则使用dragonite时会出现问题
"server_port":10800,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"mypassword",
"timeout":300,
"method":"rc4-md5", // 这种加密方式最弱,如果需要安全的加密方式,建议填入 "aes-256-cfb"
"fast_open": true
}
按 :wq! 保存,并退出。
开启服务
(sudo) ssserver -c ~/ss_config # 前台开启
ctrl + c # 前台停止服务
(sudo) ssserver -c ~/ss_config -d start # 后台开启
(sudo) ssserver -c ~/ss_config -d stop # 后台停止
客户端 (Linux on Ubuntu / Unix on MacOS)
安装
(sudo) apt-get install python-pip
(sudo) pip install shadowsocks
创建配置文件
(sudo) touch ~/ss_config
(sudo) vi ~/ss_config
按下 i 进入编辑模式,输入
{
"server": "远程服务器的IP地址",
"server_port": 10800,
"local_port": 1080,
"password": "mypassword",
"timeout": 300,
"method": "rc4-md5",
"fast_open": true
}
按 :wq! 保存,并退出。
开启服务
(sudo) sslocal -c ~/ss_config # 前台开启
ctrl + c # 前台停止服务
(sudo) sslocal -c ~/ss_config -d start # 后台开启
(sudo) sslocal -c ~/ss_config -d stop # 后台停止
不出意外的话,你现在能够正确的连接到你远程服务端的SS。
如果你希望全局(所有程序)走SS流量的话,可以通过 [系统设置]-[网络]-[网络代理] 更改你的设置

别忘了点 【应用到整个系统】哟~!
如果你只希望让Chrome走SS的话,需要进入Chrome商店下载SwitchyOmega的代理插件,配置和这个类似。
Windows客户端
Win7客户端:百度云盘 提取码:7ghm
Win10客户端:百度云盘 提取码: nqba
Windows下的客户端拥有GUI,参数和服务器上以上所配置的参数并无二致,这里就不再赘述。
请确保你能正确地连接到远程服务器后,再继续下面的内容。
打开 Google 试试吧!
配置JRE环境
dragonite 需要JAVA环境,鉴于网络上已经有很多Windows下安装JAVA环境的优秀分享,这里着重讲下Ubuntu下的JAVA环境安装(也是相当简单了……)。
通过页面 https://java.com/zh_CN/download/linux_manual.jsp 下载合适的JRE压缩包,这里,我下载的是jre-8u151-linux-x64.tar.gz这个文件。
解压tar包
tar -zvxf jre-8u151-linux-x64.tar.gz
你得到了一个叫做 jre1.8.0_151 的文件夹,移动它到/usr/java
mkdir /usr/java
mv jre1.8.0_151/ /usr/java/
写入系统变量
cd /etc
sudo vi profile
按 i 进入编辑模式,在文档的最后面添加
export JAVA_HOME=/usr/java
export PATH=$JAVA_HOME/jre1.8.0_151/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/jre1.8.0_151/lib/
按下 esc :wq! 保存文件,如果无法保存,请检查你是否使用了超级管理员(sudo)
更新文件,使其立刻生效
source /etc/profile
查看JAVA版本
java -version

若出现以上的版本提示,说明JAVA环境配置成功
安装Dragonite
下载 Dragonite-forwarder Release
解压tar文件
tar -zvxf dragonite-forwarder-0.3.3.tar
你得到了一个 dragonite-forwarder-0.3.3/ 文件夹
cd dragonite-forwarder-0.3.3/bin
服务器端
安装screen
(sudo) apt-get install screen
确保你在 dragonite-forwarder-0.3.3/bin/ 目录下执行以下操作
screen -S forwarder
./dragonite-forwarder -s -f 10800 # -f 参数填入刚刚在 服务器端 配置的 SS 的远程端口号
如果你成功了,你会看到类似下面的提示
19:09:26(-07) INFO Dragonite Forwarder Version: v0.3.3
19:09:26(-07) INFO SDK Version: v0.3.3
19:09:26(-07) INFO Mux Version: v0.3.0
19:09:26(-07) INFO Checking for updates...
19:09:27(-07) INFO You are already using the latest version.
19:09:27(-07) INFO Using commandline arguments
按下 ctrl + a, 松开, 按 d. 就能正确地离开当前屏幕
你可以随时通过
screen -d -r forwarder
回到forwarder屏幕
你还可以使用下面的命令,查看当前所有使用中的屏幕
screen -ls
客户端 (Linux on Ubuntu / Unix on MacOS)
确保你在 dragonite-forwarder-0.3.3/bin/ 目录下执行以下操作
连接到远程dragonite服务
./dragonite-forwarder -a 1.2.3.4 -f 10800 -d 10 -u 5
# -f 10800 : 远程服务端口 的 本地端口 的映射 两者保持一致
# -d 10 : 10M填入10, 100M填入100, 如果你不清楚,默认10就好了
如果能够正确连接到远程Dragonite,将会有下面的类似提示
19:23:48(-07) INFO Dragonite Forwarder Version: v0.3.3
19:23:48(-07) INFO SDK Version: v0.3.3
19:23:48(-07) INFO Mux Version: v0.3.0
19:23:48(-07) INFO Checking for updates...
19:23:49(-07) INFO You are already using the latest version.
19:23:49(-07) INFO Using commandline arguments
19:23:49(-07) INFO Server welcome message: Welcome to 1234
19:23:49(-07) INFO Connection established with 1.2.3.4:5233
还记得ss_config这个文件吗?
它是sslocal的配置文件,现在我们要稍微修改一下它,让它通过Dragonite来传输我们的代理数据
vi ~/ss_config
按下 i 进入编辑模式,修改
{
"server": "127.0.0.1",
"server_port": 10800,
"local_port": 1080,
"password": "mypassword",
"timeout": 300,
"method": "rc4-md5",
"fast_open": true
}
按 :wq! 保存,并退出。
Windows SS客户端 配置和这个类似
Dragonite-forwarder for Windows客户端
进入 dragonite-forwarder-0.3.3/bin/ 目录,双击打开 args.txt 文件,填入
-a 1.2.3.4 -f 10800 -d 10 -u 5
保存,双击 dragonite-forwarder.bat
成功后会看到类似下面的信息
19:23:48(-07) INFO Dragonite Forwarder Version: v0.3.3
19:23:48(-07) INFO SDK Version: v0.3.3
19:23:48(-07) INFO Mux Version: v0.3.0
19:23:48(-07) INFO Checking for updates...
19:23:49(-07) INFO You are already using the latest version.
19:23:49(-07) INFO Using commandline arguments
19:23:49(-07) INFO Server welcome message: Welcome to 1234
19:23:49(-07) INFO Connection established with 1.2.3.4:5233
最后一步
停止当前运行的sslocal服务,重新运行新配置下的sslocal服务
(sudo) sslocal -c ss_config -d start
现在,打开 Google 试试吧!
程序“昵称”
看到这里,你一定会觉得很麻烦。
为啥每次都要干这么多事呢,还有这些参数乱七八糟的,一不留神就记混了。
所以引入了alias,妈妈再也不用担心我忘记命令啦~
创建bash文件
cd dragonite-forwarder-0.3.3/bin/
touch run.sh
vi run.sh
按下 i 进入编辑模式,输入
# 注意,这里填入的是绝对路径
sslocal -c /home/evink/ss_config -d stop
sslocal -c /home/evink/ss_config -d start
/home/evink/dragonite-forwarder-0.3.3/bin/dragonite-forwarder -a evink.me -f 10010 -d 50 -u 5
按下 :wq! 保存文件并且退出vim
使其变为可执行文件
sudo chmod 777 run.sh
现在,你可以使用 ./run.sh 来一键运行Dragonite和ShadowSocks了
更进一步
虽然run.sh很方便,但是每次都要进入目录,然后
./run.sh
还是觉得不爽,这个时候,我们就可以使用alias啦!
vi ~/.bashrc
在文档的最后追加
alias dragon='sh ~/dragonite-forwarder-0.3.3/bin/run.sh'
按下 esc :wq! 保存!
大功告成
使用source让它立刻生效
source ~/.bashrc
现在试试吧,直接在终端中输入 dragon, 一键开启 SS+Dragonite
2022年更新
- 对于ubuntu18.04以上的用户来说,需要关闭系统的端口防火以使外部流量进入
$ sudo ufw disable
或者将目标端口加入
$ sudo ufw allow $your_target_port
-
使用
chacha20-ietf-poly1305 /aes-256-gcm 进行加密 -
使用随机密码
$ openssl rand -base64 16
-
不要使用
fast_open ,或将它的值设为false -
如果愿意,使用 Trojan-Go 代替 ss (需要自备域名)
$ source <(curl -sL https://git.io/trojan-install)