ネットワーク

MAP-E(v6プラス)でポート開放する方法|240ポートの制限と使えるポート番号

「v6プラスにしたらポート開放ができなくなった」という話をよく聞くが、これは半分だけ正しい。MAP-E方式では割り当てられた240個のポートに限ってポート開放ができる

制限の中身と、実際に使えるポート番号の調べ方をまとめる。

なぜ制限があるのか

MAP-Eでは1つのグローバルIPv4アドレスを複数の契約者で共有している。同じIPアドレスを何人かで使う以上、ポート番号も分け合う必要がある。

その結果、1契約あたりに割り当てられるのが240個になる。

DS-Lite方式はそもそもユーザ側にグローバルIPv4アドレスが割り当てられないため、ポート開放は一切できない。この点でMAP-Eのほうが自由度は高い。

使えるポート番号のルール

割り当てられるポートは連続した番号ではなく、16個ずつの連続した範囲が15セットという形で飛び飛びに配置される。合計で240個になる。

どの範囲が割り当てられるかは、契約者のグローバルIPv6アドレスによって決まる。ルールはRFC7597で定義されている。

0〜1023番のWell-knownポートは、どのIPv6アドレスであっても割り当てられない。したがって、以下は使用できない。

ポート 用途
80 HTTP
443 HTTPS
25 SMTP
22 SSH
53 DNS

Webサーバやメールサーバを公開したい場合、MAP-Eでは実現できない。この用途では固定IP契約が必要になる。

IPoEで固定IPv4を使う方法

自分に割り当てられたポートを調べる

グローバルIPv6アドレスから計算できるが、手計算は現実的ではない。MAP-E方式の使用可能ポートを確認できるWebツールが公開されているので、それを使うのが早い。

割り当ての当たり外れはない。どのIPv6アドレスでも240個で、Well-knownポートは含まれない。

ポート開放の設定例

ヤマハルータの場合

外側9980番を、内側の192.168.100.2の同ポートへ転送する例。

nat descriptor masquerade static 1200 1 192.168.100.2 tcp 9980
ip filter 201001 pass * 192.168.100.2 tcp * 9980

NATディスクリプタ番号は、外側アドレスがMAP-Eのものを指定する。GUIの「詳細設定 > NAT > NATディスクリプターの一覧」から確認できる。

外側と内側でポート番号を変えることもできる。内側80番のWebサーバを、外側9090番で公開する場合は次のようになる。

nat descriptor masquerade static 1200 1 192.168.100.2 tcp 9090=80

これで http://グローバルIPv4:9090/ でアクセスできる。内側は80番のままでよいので、サーバ側の設定を変える必要はない。

対応状況の注意点

IPv6が使えていても、v6プラスとは限らない。
「ぷららv6エクスプレス」はOCNバーチャルコネクトで、v6プラスとは別のサービスになる。同じMAP-E方式なので理論上は同じことができるはずだが、ルータの設定画面が異なり、機種によってはポート開放できないことがある。

契約しているサービス名を先に確認すること。

自分の回線がMAP-EかDS-Liteか確認する方法

ポートが枯渇することがある

240個という数字は、ポート開放だけでなく通常の通信でも消費される

NATセッションが大量に張られると240個を使い切り、新規の接続ができなくなる。名前解決がタイムアウトしたり、インターネットに繋がらなくなったりする。

ヤマハルータには「ポートセービングIPマスカレード」という、少ないポートで多くのセッションを扱う機能がある。ただしTCPにのみ適用され、UDPには効かない。UDPを多用する環境(コンテナ環境、大量のDNSクエリなど)では枯渇が起きやすい。

家庭での通常利用ならまず問題にならないが、自宅にサーバやKubernetesクラスタを置いているような環境では現実に起こりうる。

まとめ

やりたいこと MAP-Eで可能か
ゲームのポート開放(ポート指定自由)
NAS・監視カメラの公開(ポート番号を選べる)
Webサーバの公開(80/443) ×
メールサーバの運用 ×
大量のUDPセッションを張る △(枯渇の可能性)

80番や443番が必要なら、固定IP契約に切り替えるのが唯一の解決策になる。

関連記事

-ネットワーク