VRChatのYouTube再生エラーをCloudflare WARP＋Split Tunnelで回避する手順（IPv6 Bot判定対策）

# はじめに

2025年5月現在、VRChat上の動画プレイヤーでYouTubeの動画を再生できないという問題が報告されています。  
これはYouTube側の仕様変更と、VRChatで使用されている `yt-dlp` ライブラリの影響によるものです。  
簡単に言えば、「YouTubeがユーザーのIPv6アドレスをBotと誤判定していること」が原因です。

## 現在主流の対策

### 1. IPv6を無効化する方法

PCのIPv6通信を無効化し、IPv4でYouTubeにアクセスすることでBot判定を回避する方法です。  
YouTube側は、IPv4に対してBot判定の基準を緩めに設定しているようで、Botと誤判定されにくくなります。

**デメリット**：
- LAN内でのIPv6の利用もできなくなる
- VNE（Virtual Network Enabler）による速度低下の可能性
- IPv6への移行の流れに逆行し、インフラへの負荷増加につながる

### 2. Cloudflare WARP（登録不要）を使用する

Cloudflare WARPを利用してIPv6アドレスを変更しつつ、IPv6接続を維持することでBot判定を回避する方法です。

**メリット**：
- Bot判定されたIPv6アドレスを即座に変更可能
- IPv6を無効化する必要がない

**デメリット**：
- 通信がすべてCloudflareを経由するため速度低下の可能性
- IPアドレスが変わるたび、再ログインを求められる場合がある

### 3. 今回紹介する対策

Cloudflare WARPの**スプリットトンネル**機能を活用し、「YouTube関連通信のみCloudflare経由」に設定することで、他の通信への影響を最小限に抑えつつ、Bot判定を回避します。

**特徴**：
- YouTubeから見えるIPv6アドレスを簡単に切り替え可能
- その他の通信は元のIPで行うため、ログインやVRChatの通信エラー問題を回避可能

---

# Cloudflare Zero Trustの準備

### 1. Zero Trustアカウントの作成

Cloudflare Zero Trustの無料アカウントを以下のURLから作成します：  
https://dash.cloudflare.com/sign-up/teams

![サインアップ画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/71a8a41d-5ba1-4de9-85fe-8dc4e05fdb61.png)

### 2. チーム名の設定

任意のチーム名を設定します（後からでも変更可能）。

![チーム名設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/e8fbfd6d-380a-4964-95c1-d67d6983b01c.png)

### 3. プランの選択

今回は「Free」プランで十分です。
選択時に以下の点を確認してください：

- Account Type → **Personal**
- 請求額が `$0.00` であること  

確認したら「Purchase」をクリックします。

---

# WARP Clientの設定

### 1. Zero Trustダッシュボードへアクセス

Cloudflareダッシュボードから左バーにある「Zero Trust」を選択します。  
![Zero Trust選択](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/bcd369fd-b89a-4caa-8bc6-fc7ec51e8a7c.png)

### 2. WARP Client設定画面を開く

「Settings」タブの「WARP Client」を選択します。  
![WARP Client](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/bc07f849-9bc3-475e-a261-048892e32663.png)

---

## WARP Clientのログイン方法を設定

### 1. Device enrollment permissionsの「Manage」を選択  
![Manage](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/7931088d-df6f-44bc-84df-d973de381b3d.png)

### 2. ポリシーを追加  
初期状態ではPolicieが設定されていないので「Add a policy」を選択する。  
![Add policy](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/28e5a53d-16a4-4873-9e4d-f14f8c0fa40d.png)

### 3. ポリシーの内容設定  
- Policy name：`LoginMethods_OneTime`  
- Action：`Allow`  
- Selector：`Login Methods`  
- Value：`One-time PIN`  
![設定内容](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/fd72f5af-e103-43fc-b4b3-3b2e7f267ac6.png)

下にスクロールし右下の「Save」をクリック。

### 4. ポリシーを適用  
Device enrollment permissionsの「Manage」ページに戻ります。  
    ポリシーを追加したことによって「Select existing policies」を選択できるようになっているため、選択します。  
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/17f679fa-8eb8-43d5-8185-6dffda0b6f79.png)  
    Select existing policiesのウィンドウが出てきたら先ほど作成した名前のポリシーにチェックを入れ、「Confirm」選択します。  
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/f8a79983-a6e2-458c-a080-42c2dd2bc1b8.png)  
    Access policiesに先ほど選択したポリシーが追加されていることを確認し、右下の「Save」を選択します。  
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/f9e82a34-37c8-45ba-ac7c-8dff014d1938.png)  
    設定の保存に成功すると右上に**Enrollment policy saved successfully**と表示されます。


---

## YouTube用プロファイルの作成

### 1. Profile settingsの「Create profile」をクリック  
![Create profile](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/66d1d1cd-d0a4-48b3-9b5f-6fc16f1d2282.png)

### 2. 基本情報の設定  
- Name：`YouTubeWARP`  
- プロファイル適用条件
    - Selector：`User email`
    - Operator：`matches`
    - Value：`アカウント作成時のメールアドレスを入力`  
![条件設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/4a81715a-90e3-489f-8240-291c9a5f8a50.png)

### 3. Configure settingsを変更  
- Device tunnel protocol：`MASQUE`  
- Allow updates：`ON`  
![設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/8a2cd97f-2769-4738-b185-83c7ffbf1633.png)

### 4.プロファイルを作成  
ページ下部までスクロールし「Create profile」を選択します。
![Create profile](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/7f244d36-dc11-428f-acad-50f39bf28815.png)

---

## スプリットトンネルの設定

### 1. YouTube用プロファイルの「Configure」を選択  
![設定選択](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/8cbc3271-f8d4-4968-9232-ec0030e05594.png)

### 2. Split Tunnels を「Include IPs and domains」に設定  
**Configure settings**にSplit Tunnelsの設定があるので「Include IPs and domains」に変更します。
即時適用の警告が出るので「Continue and delete」を選択します。  
![スプリットトンネル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/e96cc5c0-f87c-4962-b4b9-f544c1c0e95d.png)

### 3. スプリットトンネルの内容を設定
**Manage Split Tunnels**のページに移動するので必要な情報を入力します。
- Domain：`www.youtube.com`  
- Domain：`*.googlevideo.com`  

![入力例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/f6b09349-7b0b-4024-993a-bb9a6286a6e5.png)

Your Split Tunnel entries (include)に`www.youtube.com`と`*.googlevideo.com`があることを確認します。
![設定確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/f182b409-55b9-41a1-8424-f20399005e38.png)

---

# WARP Clientのインストールと設定

## WARP Clientのインストール  
インストーラーは「Setting」タブの「Resources」ページにあります。
![Resources](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/e5019782-3307-4263-86f1-2c821d24ebfb.png)

Resourcesページに移動すると**Download the WARP client**があるので適したOSの「Download release」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/0b925c76-a30a-4cb1-a526-4fca87cb859f.png)

ダウンロードページに移動したら「Download latest stable release」を選択してインストーラーをダウンロードします。
インストーラを実行し、インストーラーの指示に従ってインストールします。


## WARPの Client初期設定とZero Trustログイン  
### 1. 環境設定を開く
Cloudflare WARPを実行し、タスクトレイの中にあるCloudflare WARPを選択すると以下の画面が表示されます。
![WARP](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/76f6dc0b-c3d2-4ba3-bcc1-fadea4b8a6bc.png)
右下の「歯車マーク」を押して環境設定を選択します。

### 2. Cloudflare Zero Trustにログイン
Cloudflare Zero Trustにログインすることで先程設定した内容を有効化します。
左のタブからアカウントを選択し右下のCloudflare Zero Trustにログインを選択します。
![ログイン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/fc8413f3-fe98-4128-b208-f6cb605cd6cc.png)

チーム名の入力を求められるので**Cloudflare Zero Trustを準備する**の項で設定したチーム名を入力します。
![チーム名の入力](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/7008bcb3-296d-462b-91f1-be574f884dec.png)

ブラウザが開きワンタイムパスワード送信用のメールアドレス入力を求められるのでサインアップする際に使用したメールアドレスを入力して「Send me code」を選択します。
![ワンタイム](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/3b9b044c-4f4a-4f92-9ddb-831605c685aa.png)
入力したメールアドレス宛に、ワンタイムパスワードが届くので「Enter Code」へ入力して「Sign in」を選択します。
ログインに成功すると**Success**というページに遷移し、**Cloudflare WARPを開きますか**というウィンドウが表示されるので「Cloudflare WARPを開く」を選択します。

Cloudflare WARP Clientの表示が以下のようにZero Trustになっていればログイン成功です。
![ZeroTrustWARP](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/09f5d7e5-7cd3-4881-8851-cab0b68ec1ed.png)

### 3. 設定の確認
プロファイルが正しく適用されているか確認します。
WARP Clientの「環境設定」を開き、「詳細タブ」を確認します。
![プロファイル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/ee7f90fb-beb2-4ef6-9bf7-e046750efdf0.png)
設定が適用されている場合はネットワーク設定の表示が**スプリットトンネルを含める**になります。

---

# 動作確認（YouTubeの再生）
Zero Trust WARPを有効化してBot判定を回避できているか確認します。

### 1. Zero Trust WARPを有効化
スライダーを選択して有効化します。
![ZeroTrust有効化](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/e357fa2b-3af4-4fd9-8c19-2c8c805084ef.png)
**接続済み**になっていれば有効化出来ています。

### 2. YouTubeのBot判定を確認
シークレットモードでYouTubeを開き、再生を確認します。
**ログインしてBotでないことを確認してください**と表示されなくなれば成功です。

---

# トラブルシューティング
Zero Trust WARPを有効化しているにもかかわらず、シークレットブラウザでYouTubeが再生できない場合は以下の内容を確認してください。

## WARP経由のIPv6アドレスが再びBot判定された場合
IPv6アドレスを変更してもVRChatで長時間YouTubeを再生するなどBot判定されやすい使い方をすると、変更したIPv6アドレスもBot判定を付けられる場合があります。
以下の手順でZero Trust WARP経由の通信に付与されたIPv6アドレスを再度変更してください。

### 1. WARP Clientの環境設定を開く
WARP Client右下の「歯車マーク」を押して環境設定を選択します。

### 2. 暗号キーをリセット
「接続」タブの「暗号キーをリセット」を選択
![暗号キー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765935/55f30adf-fdaa-496a-aa2a-907ac35384f6.png)


**キーが正常に回されました**というウィンドウが出たら完了です。
「一般」タブにある**パブリックIPアドレス**が変更されます。

VRChatをプレイ中にIPアドレスを変更した場合は、動画プレイヤーの「Re Sync」を行っても再生が開始出来ない場合があります。その際は一度「Re Join」を行ってください。

## WARP経由の通信が通らない

以下を確認してください：
- `/etc/hosts` による干渉設定がないか
- 他のVPNが動作していないか

---