2 min read

改用 v2ray 科學上網

Table of Contents

之前用了一陣子的 shadowsocks-rust,一直都是需要時才利用 sslocal -v --config CONFIG.json 這樣的方式開 VPN 連線,android 手機則繼續使用 outline 客戶端,相安無事好一陣子。但有次手機端的 outline app 更新後出問題,不知怎的就是連不上公司 VPN,公司找了一個替代方案 v2RayTun,試了之後覺得比原本的 outline 體驗好很多(原本 outline 連接比較慢,也偶有連不上的問題),查詢後發現原來 v2ray 是一個開源專案 Project V 下的其中一個工具,Project V 目標是建立一個平臺,讓大家更好更快的科學上網

分享一下我的安裝及設定方式

安裝 v2ray

yay -Ss v2ray

或者直接從 Releases 下載 v2ray 安裝包,安裝後會有兩個指令 v2rayv2ctl,用來啟動和管理 v2ray。

設定 v2ray

vim /etc/v2ray/config.json

主要的設定都放在這個 json,它其實可以吃 json5 格式,所以註解不需要砍掉

{
  "log": {
    "loglevel": "warning"
  },

  "dns": {
    "servers": [
      "8.8.8.8"
    ]
  },

  // 流量入口
  "inbounds": [
    {
      "listen": "172.17.0.1",
      "port": 9050,
      "protocol": "http",
      "tag": "http-in"
    }
  ],

  // 流量出口
  "outbounds": [
    {
      "protocol": "shadowsocks",
      "tag": "ss-out",
      "settings": {
        "servers": [
          {
            "address": "YOUR_SERVER_ADDRESS",
            "port": YOUR_SERVER_PORT,
            "method": "YOUR_METHOD", // 例如: "chacha20"
            "password": "YOUR_PASSWORD"
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "sockopt": {
          "tcpFastOpen": false
        }
      }
    }
  ],

  // 路由設定 (可選)
  // V2Ray 預設會將所有 'inbounds' 的流量轉發到 'outbounds' 列表中的第一個
  // 在這個設定中,'http-in' 的流量會自動流向 'ss-out',所以 'routing' 區塊可以省略
  "routing": {
    "rules": [
      {
        "type": "field",
        "inboundTag": [
          "http-in"
        ],
        "outboundTag": "ss-out"
      }
    ]
  }
}

啟動 v2ray

有兩種方式啟動 v2ray,一種是在命令列中執行 v2ray 命令,另一種是在 systemd 中啟動 v2ray.service,我目前使用 systemd,但兩種都筆記下來:

# 1. 手動
v2ray run -c /etc/v2ray/config.json

# 2. systemd
sudo systemctl start v2ray # 啟動
sudo systemctl enable v2ray # 開機後自動重啟

參考資料