「Xray」の版間の差分

6,578 バイト追加 、 2023年9月27日 (水)
20版 をインポートしました
三男wiki>一反もめん
編集の要約なし
(20版 をインポートしました)
 
(3人の利用者による、間の8版が非表示)
3行目: 3行目:


 サーバー側にツールを配置後、クライアント側から接続することにより[[VPN]]のように通信を行う。VPNとの違いはディープ・パケット・インスペクション(以下、「DPI」と言う)の回避を目的とした通信プロトコルのサポートを行っている点である。
 サーバー側にツールを配置後、クライアント側から接続することにより[[VPN]]のように通信を行う。VPNとの違いはディープ・パケット・インスペクション(以下、「DPI」と言う)の回避を目的とした通信プロトコルのサポートを行っている点である。
 2022年10月、金盾のアップグレードに合わせ、VMESSやVLESS+XTLSを始めとするXrayでサポートしているプロトコルが繋がりにくくなっているため、金盾回避を目的とする場合は[[sing-box]]を導入し、shadow-tlsプロトコルを使用することを推奨する。


== 導入 ==
== 導入 ==
29行目: 31行目:
Xrayをインストール
Xrayをインストール
<pre><nowiki>bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install</nowiki></pre>
<pre><nowiki>bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install</nowiki></pre>
=== Trojan ===
 トロイの木馬。ギリシャ神話のトロイア戦争に登場する木馬に由来し、巧妙に相手を陥れる罠のようにファイヤーウォールからパケットを隠す。紛らわしいがマルウェアのトロイの木馬(Trojan)とは無関係。
 偽装Webサーバーを使い、そのサイトのSSL証明書で通信を暗号化し、パケットを偽装する。検閲者からは一見偽装サイトからパケットを受信しているように見える。
 共通事項に加えて以下が必要。
・インスタンスでWebホスティング(NginxやApacheを使用)
・ドメイン
・SSL証明書
 WebホスティングとSSL証明書の取得方法は、インターネット上に情報が多数あるため割愛する。
Xrayの設定ファイルを作成。
<pre><nowiki>vi /usr/local/etc/xray/config.json</nowiki></pre>
Trojanの設定は以下の通り。
"password"は接続用パスワードを示し、値を必ず一意の値に変更する。
"serverName"は偽装サイトのドメイン名。
"certificateFile"はSSL証明書のパス。
"keyFile"はSSL秘密鍵のパス。
<syntaxhighlight lang="json">
{
  "log":{
    "loglevel": "warning",
    "access": "/var/log/xray/access.log",
    "error": "/var/log/xray/error.log"
  },
  "inbounds": [{
    "port": 443,
    "protocol": "trojan",
    "settings": {
      "clients": [
        {
          "password": "gIljL7ERTJgZC2Kkv2iZvtkQ4MZMdhoTeQOszoAth30=",
          "flow": "xtls-rprx-direct"
        }
      ],
      "fallbacks": [
          {
              "alpn": "http/1.1",
              "dest": 80
          },
          {
              "alpn": "h2",
              "dest": 81
          }
      ]
    },
    "streamSettings": {
        "network": "tcp",
        "security": "xtls",
        "xtlsSettings": {
            "serverName": "abeshinzo.net",
            "alpn": ["http/1.1", "h2"],
            "certificates": [
                {
                    "certificateFile": "/usr/local/etc/xray/abeshinzo.net.pem",
                    "keyFile": "/usr/local/etc/xray/abeshinzo.net.key"
                }
            ]
        }
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  },{
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
  }]
}
</syntaxhighlight>
Xrayを再起動。
<pre><nowiki>systemctl restart xray</nowiki></pre>
クライアントソフトウェアに以下の値を入力し接続を確認してみよう。
・Address ・・・・・・・・インスタンスのドメイン名
・Port ・・・・・・・・・・設定ファイルに記述したポート番号(443)
・Password ・・・・・・・・設定ファイルに記述したパスワード
・flow ・・・・・・・・・・xtls-rpx-direct
・Network ・・・・・・・・tcp
・head type ・・・・・・・none
・tls ・・・・・・・・・・xtls
Q. 繋がらない
A. "systemctl status xray"で確認してみよう。
   証明書と秘密鍵のパーミッションが原因の可能性が高い。


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


"id"はUUIDを示し、"********-****-****-****-************"を必ず一意の値に変更する。
"id"はUUIDを示し、"********-****-****-****-************"を必ず一意の値に変更する。uuidgenコマンドで生成すると良い。
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
181行目: 298行目:




=== クライアント ===
== クライアント ==
(執筆中)WindowsやLinux等デスクトップOSではクライアントソフトウェアの他にv2ray-coreが必要。
=== Windows ===
==== v2rayN ====
 オープンソースのWindows用V2Rayクライアント。Xray coreとv2fly coreをサポートしている。


・Windows ・・・・・v2rayN https://github.com/2dust/v2rayN


・Android ・・・・・V2RayNG https://play.google.com/store/apps/details?id=com.v2ray.ang
 GitHub https://github.com/2dust/v2rayN


・iOS ・・・・・・・Shadowrocket https://apps.apple.com/jp/app/shadowrocket/id932747118


 有料だがiOSアプリで各プロトコルを網羅しているクライアントソフトウェアはこれくらい。
 GitHubの[https://github.com/2dust/v2rayN/releases rereases]よりv2rayN-Core.zipをダウンロードし、任意のディレクトリに解凍。


・Linux ・・・・・・Qv2ray https://github.com/Qv2ray/Qv2ray
 v2rayN.exeを実行するとクライアントが起動する。




=== 複数プロトコルのサポート ===
=== Android ===
==== V2RayNG ====
 オープンソースのAndroid用V2Rayクライアント。最新版ではXray coreをサポートしている。
 
 
 PlayStore https://play.google.com/store/apps/details?id=com.v2ray.ang
 
 GitHub https://github.com/2dust/v2rayNG
 
 
=== iOS・iPad OS ===
==== Shadowrocket ====
 香港のSHADOW LAUNCH TECHNOLOGYが提供するプロプライエタリな有料V2Rayクライアント。iOS・iPad OSで更新が続いていて、VLESS+XTLSをサポートしているクライアントソフトウェアはこれくらい。
 
 
 AppStore https://apps.apple.com/jp/app/shadowrocket/id932747118
 
 
=== Linux ===
==== Qv2ray ====
 オープンソースのLinux用GUI V2Rayクライアント。2021年で更新が止まってしまっているためShadowsocks-2022はサポートされていない。
 
 
 GitHub https://github.com/Qv2ray/Qv2ray
 
 
 GitHubの[https://github.com/2dust/v2rayN/releases rereases]より、Qv2ray-v2.7.0-linux-x64.AppImageをダウンロード。
 
 また、別途[https://github.com/v2fly/v2ray-core/releases/tag/v4.31.0 V2Ray-core]を入手し、任意のディレクトリ(Homeディレクトリ等)に解凍。
 
 Qv2ray-v2.7.0-linux-x64.AppImageのパーミッションを設定し、起動後「設定→カーネル設定→V2Ray コアのパス」にて先程配置したディレクトリを指定する。
 
 
== 複数プロトコルのサポート ==
 Xrayの設定ファイル<nowiki>(/usr/local/etc/xray/config.json)</nowiki>の"inbounds"に以下の様に記述すると、同一インスタンスにて複数プロトコルを使い分ける事ができる。
 Xrayの設定ファイル<nowiki>(/usr/local/etc/xray/config.json)</nowiki>の"inbounds"に以下の様に記述すると、同一インスタンスにて複数プロトコルを使い分ける事ができる。


 ポート番号はそれぞれ異なる番号にしたようが良い。
 ポート番号はそれぞれ異なる番号にしたほうが良い。


 例:Shadowsocks-2022とVmess
 例:Shadowsocks-2022とVmess
225行目: 375行目:
</syntaxhighlight>
</syntaxhighlight>


=== X-UI ===
 X-UIは上記Xray各種プロトコルに対応し、ブラウザから一元管理するGUIパネル
 元は中国語だが英語に翻訳しているバージョンがあるのでここではそのインストール方法を記述する


=== おまけ(広告ブロック) ===
 対応プロトコルは vmess, vless, trojan, shadowsocks, dokodemo-door, socks, http
 
<pre><nowiki>bash <(curl -Ls https://raw.githubusercontent.com/NidukaAkalanka/x-ui-english/master/install.sh)</nowiki></pre>
 
 GitHub https://github.com/NidukaAkalanka/x-ui-english
 
== WireGuardとの比較 ==
 Xrayはネットワークプロキシであるのに対し、[[VPN#WireGuardサーバーのセットアップ|WireGuard]]はVPNである。VPNと違う点は、外部から識別可能なトンネリングを行わずにhttpsのようにTCPプロトコルでデータの送受信を行う点である。XrayでVPNのようにクライアントのすべてのトラフィックをリルートする場合、クライアントソフトウェアが必要であるが、WireGuardはカーネルに組み込むことができるため、Xrayのクライアントを実行するユーザー空間よりもクライアント側のソフトウェアセキュリティが強化される。
 
 結論はこれらを何に使用するかによって決まり、インターネットサービスプロバイダやファイヤーウォールを欺くにはXray、通信の暗号化や拠点間通信、IPアドレスの秘匿化が目的(ISPやFWにVPNを使っていることが知られても良い)場合はWireGuardに軍配が上がる。Xrayは現在の日本において限定的な用途しか存在しないのかもしれない。
 
 
== おまけ(広告ブロック) ==
 サーバー側で使用するDNSにAdGuard DNSを指定し、広告をクライアント側に送信しないようにする。セキュアな通信環境を入手する目的でXrayを導入する場合、パブリックDNSを使用するリスクは自己責任で判断する。
 サーバー側で使用するDNSにAdGuard DNSを指定し、広告をクライアント側に送信しないようにする。セキュアな通信環境を入手する目的でXrayを導入する場合、パブリックDNSを使用するリスクは自己責任で判断する。


 各ディストリビューションで設定が異なるため一例を記載する。
 各ディストリビューションで設定が異なるため一例を記載する。


==== Ubuntu 20.04 LTS ====
=== Ubuntu 20.04 LTS ===




248行目: 414行目:
systemd-resolvedを再起動。
systemd-resolvedを再起動。
<pre><nowiki>systemctl restart systemd-resolved</nowiki></pre>
<pre><nowiki>systemctl restart systemd-resolved</nowiki></pre>
==関連項目==
{{ツール・ソフトウェア・アプリ}}
{{デフォルトソート:えつくすれい}}