科学上网工具Chisel指北

加持良治
·
·
IPFS
本文主要介绍一个新的科学上网工具Chisel的配置和使用,适合有一定技术水平的、不希望使用已经被老大哥研究的比较透彻的SS/SSR进行翻墙的人进行阅读。本人也不是网络或计算机方面的专家,只是因为Chisel的中文资料几乎为0,因此写本文作一简要介绍。本文更像是一个踩雷记录,请读者多多包容。对抗审查,对抗防火长城,需要我们每个人的努力。

Chisel 由Jaime Pillora<dev@jpillora.com>开发,由Go语言写成。单可执行文件,既充当客户端又充当服务器端。它实现了一个快速的TCP over HTTP隧道,加密由SSH实现。其功能和Crowbar很像,但Chisel实现了单TCP连接中可以创建多个逻辑连接,因此性能远高于Crowbar。

Chisel 网络结构示意图

安装

下文所有命令基于Ubuntu 19.04,其余系统版本应该无甚差别。

可以使用源码、Docker或者作者提供的一键脚本进行安装。我们选择偷懒,输入以下命令(默认以root用户执行):

curl https://i.jpillora.com/chisel! | bash

看到进度条跑完,出现“Installed at /usr/local/bin/chisel”时即安装完成。

前面说过,Chisel不区分客户端和服务器端,二者是同一个可执行文件。运行时通过"chisel server/client"选择不同的模式。因此,在本地电脑安装方式也是一样的。如果是Windows的话,可以用内嵌的Linux子系统(WSL)或者作者提供的win客户端进行使用。本文最后会简要介绍如何在windows环境下让该服务在后台运行。

服务器端配置

创建文件'/etc/chisel_user.json',参考格式如下:

{
    "<User1>:<Password1>":[""],
    "<User2>:<Password2>":[""],
}

可以加入更复杂的流量控制,不过对于我们翻墙使用,上述配置已经足够。保存后用以下命令启动服务,其中nohup是为了保证退出远程登陆后该服务还可以正常运行:

nohup chisel server --port <PORT> --authfile <FILEPATH> --socks5 &

也可以利用Systemd将其设置为系统服务。创建/lib/systemd/system/chisel.service内容如下:

[Unit]
Description=Chisel Server
After=network.target
Wants=network.target

[Service]
Type=forking
PIDFile=/var/run/chisel.pid
ExecStart=chisel server --port 8080 --authfile /etc/chisel_user.json --socks5 --pid /var/run/chisel.pid
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target

保存后使用以下命令注册系统服务并运行

systemctl enable chisel.service && systemctl start chisel.service

客户端配置

目前还没有图形化的客户端,全部由命令行完成。Linux/Mac/WSL下输入以下命令开启客户端

chisel client [options] <server> <remote> 

我们需要用到的options有:

--keepalive <time> :根据说明,idle的HTTP连接会被自动关闭,因此需要手动加上一个时间;

--auth [user]:[password] :这个就是用户名和密码,和chisel_user.json里面一样就可以了;

<server>需要填服务器地址,形如123.123.123.123:4567,如果有域名也可以是example.com:1234的形式。

<remote>理解起来稍微有一点困难,它的实际作用是把本地的一个端口和远程的一个端口连接起来,具体可参见Github文档。我们这里使用socks代理(服务器端一定要开启--socks5选项),那么形式就是 [port]:socks,其中port为本地使用的端口,无特殊需要1080即可。

示例如下:

chisel client --keepalive 60s --auth hello:world 123.123.123.123:8080 1081:socks

此外,chisel本身并没有进行系统代理,那么在上网的时候还需要手动配置软件/浏览器的代理设置,将socks5代理设置为127.0.0.1:1081,才能够进行科学上网。

Windows后台运行设置

最后多写一点Windows下的配置。下载Win客户端后实际上可以像上面一样进行命令行操作,不过为了方便自己不用每次都敲命令行,可以创建快捷方式如下:

[FilePath]\chisel_windows_386.exe client [options] <server> <remote>

这解决了每次都输入命令的问题,不过还有一个问题是始终有一个黑框框留在桌面上很麻烦。所以我们可以稍微复杂一点,使用powershell的隐藏窗口的执行方式,快捷方式的目标如下:

powershell -windowstyle hidden -command "[FilePath]\chisel_windows_386.exe client [options] <server> <remote>"

这样一来,快捷方式双击之后,会闪一下黑框,然后隐藏到后台去不惹人心烦了。


Chisel还是一个很不成熟的软件,使用的人少,配套GUI客户端缺失,稳定性也并没有受到过考验。但是在对抗愈来愈高的墙的战斗中,多掌握一种技术手段总是没有错的。希望本文能起到一个抛砖引玉的作用。也希望各位能在评论区多多指正。

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!

加持良治その背中には 遥か未来めざすための 羽根があること