探索Ubuntu: 从SS+dragonite开始

注意:本文已经过时,点击查看文章更新(2022)

dragonite


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流量的话,可以通过 [系统设置]-[网络]-[网络代理] 更改你的设置

ss-setting

别忘了点 【应用到整个系统】哟~!

如果你只希望让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-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)