Linux Ubuntu18.04 安裝配置 clash

DrunkCat90發表於2021-12-16

我最近一段時間在搭建用於構建 Docker 映象的開發測試環境,這個環境是一臺執行於 Windows 筆記本上的虛擬機器,其作業系統為 Ubuntu 18.04 。構建場景中經常要去 Github 獲取程式碼,由於大家都明白的原因,我經常會構建失敗。故而打算部署一款隧道軟體,來加速虛擬機器的網路。clash 已經在我的 Mac 環境中執行了很久,一直很穩定,故而選擇在 Ubuntu 環境中部署它。

clash - A rule-based tunnel in Go.

安裝部署

clash 是一款用 Go 語言開發的軟體,所以我可以直接下載預編譯的版本進行部署。

下載地址:https://github.com/Dreamacro/clash/releases/download/v1.8.0/clash-linux-amd64-v1.8.0.gz

軟體的作者提供了多種架構下預編譯的二進位制檔案,大家一定要注意區分。我當前下載的版本,適合在 x86_64 架構的 Linux 作業系統中執行。

下載完成後,需要解壓,並賦予執行許可權。

wget https://github.com/Dreamacro/clash/releases/download/v1.8.0/clash-linux-amd64-v1.8.0.gz
gzip -d clash-linux-amd64-v1.8.0.gz
chmod +x clash-linux-amd64-v1.8.0
mv clash-linux-amd64-v1.8.0 /usr/local/bin/clash

Go 語言開發的程式,其打包出的二進位制檔案不需要其他依賴,可以直接執行。

clash -v

得到如下返回時,意味著 clash 已經可用了。

Clash v1.8.0 linux amd64 with go1.17.3 Mon Nov  8 13:26:00 UTC 2021

配置檔案

clash 執行需要依賴於一份 YAML 配置檔案,預設讀取 $HOME/.config/clash/config.yaml 。當沒有這份檔案的時候,clash 會使用預設配置生成一份,所以我們可以直接執行一下 clash ,來獲取模版。

root@ubuntuserver:~# clash
INFO[0000] Can't find config, create a initial config file
INFO[0000] Can't find MMDB, start download
INFO[0000] Mixed(http+socks) proxy listening at: 127.0.0.1:7890

Control + C 退出後,就可以獲取預設配置檔案了。

root@ubuntuserver:~# ls $HOME/.config/clash/config.yaml
/root/.config/clash/config.yaml

接下來修改這份配置檔案,追加我的代理的配置。

代理大家各不相同,我使用的是 Just My socks 提供的 ssv2y

最終配置如下:

mixed-port: 7890
proxies:
  - name: "ss1"
    type: ss
    server: server1_of_ss
    port: 443
    cipher: aes-256-gcm
    password: "password"
  - name: "ss2"
    type: ss
    server: server2_of_ss
    port: 443
    cipher: aes-256-gcm
    password: "password"
  - name: "v2y"
    type: vmess
    server: server3_of_ss
    port: 443
    uuid: uuid
    alterId: 0
    cipher: auto
proxy-groups:
  - name: "auto"
    type: url-test
    proxies:
      - ss1
      - ss2
      - v2y
    url: 'http://www.gstatic.com/generate_204'
    interval: 300
rules:
  - DOMAIN-SUFFIX,google.com,auto
  - DOMAIN-KEYWORD,google,auto
  - DOMAIN,google.com,auto
  - DOMAIN-SUFFIX,github.com,auto
  - DOMAIN-KEYWORD,github,auto
  - DOMAIN,github.com,auto
  - IP-CIDR,127.0.0.0/8,DIRECT
  - GEOIP,CN,DIRECT
  - DST-PORT,80,DIRECT
  - SRC-PORT,7777,DIRECT
  - MATCH,auto

執行服務

我希望每次啟動 Ubuntu 虛擬機器, clash 都可以自動啟動,所以我決定將它託管給 systemd來管理。

生成 systemd 配置檔案:

cat > /etc/systemd/system/clash.service << EOF
[Unit]
Description=Clash - A rule-based tunnel in Go
Documentation=https://github.com/Dreamacro/clash/wiki
[Service]
OOMScoreAdjust=-1000
ExecStart=/usr/local/bin/clash -f /root/.config/clash/config.yaml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF

配置開機自啟,並啟動 clash 服務:

systemctl enable clash
systemctl start clash

為 Linux 配置代理

clash 執行起來之後,會在 http://127.0.0.1:7890 這個地址監聽 HTTP_PROXY 服務,接下來需要為 Linux 配置代理,使所有的 http 請求,都經由這個代理服務進出。設定很簡單,Linux 有專門的環境變數 http_proxy https_proxy 進行相關配置,為了使每次開啟終端都可以使環境變數生效,特意做了如下配置:

echo -e "export http_proxy=http://127.0.0.1:7890\nexport https_proxy=http://127.0.0.1:7890" >> ~/.bashrc

重新開啟一個終端,即可使配置生效。

至此,clash 在 Linux 上的配置都已經完成了。

驗證效果

我所使用的 Ubuntu Server 18.04 是不帶圖形化介面的作業系統。所以我用了一個命令列瀏覽器 w3m 來驗證我的 clash 是否工作正常。

w3m www.google.com

得到如下返回,說明我的目標已經達成。

image-20211216003552095

相關文章