我的科学上网方案

应用实践 | 📅 2020-09-22 | linux docker

声明

本篇文章仅记录我个人操作,大家理解上出了偏差自行负责!

工具&环境

  • Linux
  • Docker
  • Shadowsocks
  • proxychains

为啥用Docker呢?简单、干净……不用管理复杂的依赖,不想要了直接删除,省心!

服务端

下载镜像(可省略)

我们使用: shadowsocks-libev 的镜像(为避免传播嫌疑,请自行到hub.docker.com检索)。

docker pull shadowsocks/shadowsocks-libev

启动

为了方便,我们直接使用命令启动,不使用配置文件,以减少维护配置文件的麻烦。

docker run -d --restart=always -p [服务器端口]:[服务器端口] shadowsocks/shadowsocks-libev ss-server -p [服务器端口] -k [你的密码] -m [你的加密算法]

由于是 docker 启动,所以其中 [服务器端口] 指的是容器端口,需要使用 -p 参数将宿主服务器端口映射到容器端口。

剩下的就不用解释了吧……

客户端

下载镜像(可省略)

我们使用: shadowsocks-libev 的镜像(为避免传播嫌疑,请自行到hub.docker.com检索)。

docker pull shadowsocks/shadowsocks-libev

启动

为了方便,我们直接使用命令启动,不使用配置文件,以减少维护配置文件的麻烦。

docker run -d --restart=always -p [本地监听端口]:[本地监听端口] shadowsocks/shadowsocks-libev ss-local -b [本地监听地址] -l [本地监听端口] -s [服务器地址] -p [服务器端口] -k [你的密码] -m [你的加密算法]

因为是用docker启动,所以原先配置中的 “本地” 概念,实际上是容器的本地,而非你所使用的机器。故而 [本地监听地址] 应选择 “0.0.0.0” 以表示接受各种连接(其默认是 “127.0.0.1”)。当然如果你有多个网卡,也可以自行选择监听的地址。

选择 --restart=always 是为了让这个容器能随 docker 服务自动启动,我的 docker 服务是随系统启动的,由此达到了一种开机启动的效果。

[本地监听端口] 是你开放的socks5服务代理端口,你的软件将通过此代理端口科学上网。一般设置为 1080 ,实际可以随心设置。

其他设置,请根据服务器配置自行修改。

使用

因为我使用的是 Kali Linux 所以系统自带了 proxychains 工具。需要配置配置文件:/etc/proxychains.conf 。将其最后一行默认的 tor 代理换成:

socks5 	127.0.0.1 [本地监听端口]

我的就是:

socks5 127.0.0.1 1080

编辑好后保存就行。

如果哪个命令需要科学上网,则在其前加 proxychains 即可,如:

proxychains curl www.google.com

浏览器设置的话,我使用的是 SwitchyOmega 插件,Chrome 和 FireFox 都有。配置方法我就不介绍了,自行搜索,应该很多的。另外说一下我使用的“代理规则”:

https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt

https://pagure.io/gfwlist/raw/master/f/gfwlist.txt

其他的请自行参悟或者留言提问。

再提一句

上网请遵守当地法律法规,切莫以身试法。