自宅に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ツール一覧はこちら