0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【MAP-E/10G】IPv4(VPS中継)×IPv6(自宅直結)で帯域制限を突破する二刀流Dual Stack構成

0
Last updated at Posted at 2026-08-16

自宅に10G光回線を導入してサーバーを構築したものの、MAP-E(v6プラス等)のポート開放制限を回避するために「ConoHa等のVPSをリバースプロキシ(串)として中継」している構成はよく使われます。

しかし、全通信をVPS経由にすると「VPSのネットワーク帯域や転送量がボトルネックになり、自宅10G回線の速さが死んでしまう」という切実な問題が発生します。

これを解決するのが、「IPv6(自宅10G直結)+ IPv4(VPS中継)」の二刀流(Dual Stack)構成です。


🏗️ 全体アーキテクチャ

                 ┌─── [ IPv6 訪問者 ] ─── (10G直結・爆速) ─────────┐
                 │                                                ▼
[ サイト訪問者 ] ─┤                                          ┌──────────────┐
                 │                                          │  自宅10G鯖    |
                 └─── [ IPv4 訪問者 ] ─── (VPS中継) ───────► │ (Nginx / WP) │
                                                            └──────────────┘
  • IPv6ユーザー: VPSを経由せず、自宅10G回線へダイレクト接続(超低遅延・広帯域)
  • IPv4ユーザー: 従来通りVPSが中継して互換性を100%維持

🛡️ STEP 1: 自宅Nginxのセキュリティ強化(最優先)

DNSでIPv6(AAAAレコード)を全世界に公開する前に、自宅Nginxに防御ルールを入れておきます。

1. レートリミット(429ステータス化)過度な連続アクセスを遮断する際、403(拒否)ではなく429(Too Many Requests)を返すようにします(クローラーの誤BANやインデックス削除事故を防止)

/etc/nginx/nginx.conf の http ブロックに追記・調整:

limit_req_status 429;

# WordPressの管理画面崩れを防ぐため 30r/s 程度を確保
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=30r/s;

2. 攻撃エンドポイントの遮断サイトの個別設定

(/etc/nginx/sites-available/...)で、悪用されやすいエンドポイントを防御します。

# 1. xmlrpc.php の完全遮断
location = /xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
}

# 2. REST API経由のユーザー名偵察を保護
location ~* ^/wp-json/wp/v2/users {
    allow 192.168.1.0/24;      # LAN内
    allow 2001:db8:xxxx::/56;  # 自宅IPv6プレフィックス
    deny all;                  # 外部アクセスは遮断
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php/php83-fpm-main.sock;
}

⚙️ STEP 2: NginxのDual Stack(IPv4 + IPv6)バインド

NginxがVPSからのIPv4通信と、直結のIPv6通信の両方をキャッチできるように listen を記述します。

server {
    # IPv4の受け口
    listen 80;
    listen 443 ssl;
    http2 on;

    # IPv6の受け口(★必須)
    listen [::]:80;
    listen [::]:443 ssl;
    http2 on;

    server_name your-domain.com;
    ...
}

構文チェックを行い再読み込みします。

sudo nginx -t && sudo systemctl reload nginx

🌐 STEP 3: DNS設定(Aレコード + AAAAレコード)

DNS管理画面(Cloudflare/お名前.com等)で、2つのレコードを登録します。

TYPE ホスト名 VALUE 役割
A @ / www 118.27.xxx.xxx (VPSのIPv4) IPv4ユーザーをVPS経由で中継
AAAA @ / www 2001:db8:xxxx::69 (自宅サーバーのIPv6) IPv6ユーザーを自宅10Gへダイレクト接続

※ サーバーの固定グローバルIPv6は
ip -6 addr show scope global | grep -v "deprecated" で確認できます。

🔍 STEP 4: IPv6直結の疎通テスト

外部端末から -6 オプションをつけてアクセスし、ヘッダーとアクセスログを確認します。

# IPv6強制アクセス検証
curl -6 -I https://your-domain.com

Nginxのアクセスログ(/var/log/nginx/...access.log)に、訪問者の生のIPv6アドレス(2404:...等)が直接記録されていれば、VPSを介さず自宅10G回線への直結開通が成功しています。

📘 完全版ガイド・詳細手順はこちら

本家ブログ記事では、以下の詳細な手順を画面キャプチャ・解説付きでまとめています。

  • NTTホームゲートウェイ(XG-100NE)のIPv6パケットフィルタ詳細設定手順
  • Linuxで一時アドレス(temporary)をsysctlで無効化して固定IPv6を抽出するテクニック
  • Cloudflare / UFW ファイアウォールとの多重防衛設計

👉 MAP-Eでも諦めない!10G自宅サーバーをIPv6直結&IPv4-VPS中継で完全公開する方法【DNS/Nginx設定】
🛠️ インフラ構築・Nginx設定に役立つ自作Webツール一覧はこちら

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?