闲言少叙,直奔主题。
0. 服务器
首先,你得先准备个服务器。本文不讨论如何制备科学上网服务器。
如果你用 Mac 或者 iPhone,想玩 Clubhouse,可以考虑买个现成,比如链接里这个(其实只要你有 AnyConnect,任何系统都可以用)。
1. 客户端
接下来,下载客户端。
我用的是 shadowsocks-qt5,先在 https://github.com/shadowsocks/shadowsocks-qt5/releases 这个页面下载打包好的 AppImage 文件。
右键点击文件,在“权限”选项卡里勾选“允许文件作为程序执行”,然后双击运行,配置服务器信息。配置完成,点击“连接”,顺利的话,就会显示连接成功。
在命令行里输入 gnome-session-properties
,会启动如下图所示的“启动应用程序首选项”,把刚才下载的 AppImage 路径添加进来,这样每次启动 ss 客户端都会自动启动了。
2. 生成 pac
安装genpac
pip install genpac
Ubuntu 20.04 默认 python版本是 3,所以可以使用 pip3 替代上面的 pip。
使用在线的 gfwlist
genpac --pac-proxy "SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" --gfwlist-url=https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt --output="autoproxy.pac"
使用离线的 gfwlist
如果你的机器没有完成配置,暂时无法访问到 gfwlist,也可以先想办法下载到这个文件,然后离线生成。
genpac --pac-proxy "SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" --gfwlist-local=你的路径/gfwlist.txt --output="autoproxy.pac"
3. 配置服务器
Ubuntu 安装时就集成了 Apache2,并且默认也会启动它,所以直接把刚才生成的 pac 文件放在 /var/www/html/
目录下,就能通过 http://localhost/autoproxy.pac 访问到。
不过我不喜欢用 apache,一般都会用 nginx 或者 openresty 取代之。好在默认情况下,nginx 的 web 服务目录也是 /var/www/html
,所以只要卸载 apache 然后重新安装 nginx 即可。另外因为这个服务只为使用 pac 文件,所以可以不用换源。
sudo apt remove apache2
sudo apt update
# 安装 openresty 需要的系统依赖
sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates
# 添加 key
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
# 添加 openresty 官方源
echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"
| sudo tee /etc/apt/sources.list.d/openresty.list
# 在更新一次,然后安装
sudo apt update
sudo apt install openresty
sudo service openresty start
然后访问 http://localhost/autoproxy.pac,如果能打开,就说明配置成功。
4. 启动全局配置
如果,打开“设置”,找到“网络”,打开“网络代理”,选择“自动”,然后填入上面说的 pac 地址即可。
5. 在其它应用里完成配置
比如,打开 Firefox,在“首选项”里找到“网络设置”,然后选择“使用系统代理设置”即可。
6. 已知问题
- 【已解决】
虽然完成系统设置,Firefox 也能正常科学上网,但是“设置”> “在线账户”> “谷歌”却无法正常打开登录页面。此为 gnome 问题,升级到 Fedora 34(Gnome 4)之后,问题解决。
参考文章:
在 macOS/iOS 设备上使用科学上网有更简单的方法,扫码可得(其实只需要你有 AnyConnect,并不限制系统平台):
欢迎吐槽,共同进步