Xray

2022年10月8日 (土) 03:34時点における三男wiki>一反もめんによる版

 Xrayは主に中国のネット検閲システムであるGFW(以下、「金盾」と言う)を回避するために利用されている検閲回避ツールである。更新が止まったV2Rayのソースコードを元にProject Xにより管理されている。

 サーバー側にツールを配置後、クライアント側から接続することによりVPNのように通信を行う。VPNとの違いはディープ・パケット・インスペクション(以下、「DPI」と言う)の回避を目的とした通信プロトコルのサポートを行っている点である。

導入

 以下に導入方法を記す。

全プロトコル共通

 全てのプロトコルで必要なものは以下の2つ。

・VPSインスタンス(最小構成で良い)

・静的IP


IPを固定したらSSHでインスタンスに接続。


ルートユーザーになる。

sudo su


インスタンスのタイムゾーンを日本時間に設定。

timedatectl set-timezone Asia/Tokyo


Xrayをインストール

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

VMess

 Shadowsocksに似ているが暗号化方式の選択を重視せず、VMessの暗号化方式はクライアントによって指定される。暗号化に時間依存のキーを使用するなど難読性が高い。


Xrayの設定ファイルを作成。

vi /usr/local/etc/xray/config.json


VMessの設定は以下の通り。

"port"は使用するポート番号で任意の値に変更可。インスタンスの設定で要開放。

"id"はUUIDを示し、"********-****-****-****-************"を必ず一意の値に変更する。

{
  "log":{
    "loglevel": "warning",
    "access": "/var/log/xray/access.log",
    "error": "/var/log/xray/error.log"
  },
  "inbounds": [{
    "port": 10086,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "********-****-****-****-************",
          "level": 1,
          "alterId": 64
        }
      ]
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  },{
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
  }],
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "blocked"
      }
    ]
  }
}


環境変数の値を設定。

vi /etc/systemd/system/xray.service


[Service]の末尾に以下追記。

Environment=XRAY_VMESS_AEAD_FORCED=false


Xrayを再起動。

systemctl start xray


クライアントソフトウェアに以下の値を入力し接続を確認してみよう。

・Address ・・・・・・インスタンスのグローバルIPアドレス

・Port ・・・・・・・設定ファイルに記述したポート番号

・id ・・・・・・・・設定ファイルに記述したUUID

・alterId ・・・・・・設定ファイルのalterId

・security ・・・・・"chacha20-poly1305"を選択

・Network ・・・・・・tcp

・head type ・・・・・none


Shadowsocks

 Shadowsocksは、SOCKS5サーバーをsslocalとssserverに分割してインターネットトラフィックを難読化し、DPIの回避を行う。


Xrayの設定ファイルを作成。

vi /usr/local/etc/xray/config.json


Shadowsocksの設定は以下の通り。

"port"は使用するポート番号で任意の値に変更可。インスタンスの設定で要開放。

"password"は接続用パスワードを示し、"18Bohmomen"を必ず一意の値に変更する。通常はクライアントソフトウェアに保存して使うため長めの強力な物が良い。

{
  "log":{
    "loglevel": "warning",
    "access": "/var/log/xray/access.log",
    "error": "/var/log/xray/error.log"
  },
  "inbounds": [{
    "listen": "0.0.0.0",
    "port": 8488,
    "protocol": "shadowsocks",
    "settings": {
        "method": "chacha20-ietf-poly1305",
        "password": "18Bohmomen"
    },
    "streamSettings": {
        "network": "tcp"
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  },{
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
  }],
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "blocked"
      }
    ]
  }
}


Xrayを再起動。

systemctl start xray


クライアントソフトウェアに以下の値を入力し接続を確認してみよう。

・Address ・・・・・・インスタンスのグローバルIPアドレス

・Port ・・・・・・・設定ファイルに記述したポート番号

・password ・・・・・設定ファイルに記述した接続用パスワード

・security ・・・・・"chacha20-ietf-poly1305"を選択


クライアント

・Windows ・・・・・v2rayN

・Android ・・・・・V2RayNG

・iOS ・・・・・・・Shadowrocket

・Linux ・・・・・・Qv2ray