まずIPv4環境下でのサーバ公開ですが、IPv4では一契約ごとに一つのIPアドレスを割り当てる形を取っており、基本的には
ルータを配置してそこにグローバルIPアドレスを割り当てます。
そのルータにスマートフォンやPC、サーバを繋いで利用するのですが、そこで問題になるのが
ルータへ来たパケットをどの端末に送ればよいのかです。
そこで登場するのが
NATと
ポートフォワーディングです。
NATはLAN内からWANへデータを送信する時に行われる変換で、ローカルIPアドレスとグローバルIPアドレスを相互に変換して特定の端末との通信が可能となります。
しかしながら、この機能が使えるのは
LAN内からWANへ飛んだパケットに対してのみであり、WANからLANへの通信を正しくサーバへ伝える場合はNATは使えません。そこで
ポートフォワーディング(ポート転送)の出番です。
ポートフォワーディングの詳しい話は
こちらの記事を参照していだだくとして、IPアドレスとポートを紐付けておくことでWANからの通信が正しくサーバへ届けられるようになります。
つまり、
IPv4でサーバを運用するにはポートフォワーディングが重要になってくるわけですね。
現在多くのルータではNATではなくNAPT(IPアドレスに加えてポートも変換する)が採用されています。
ではIPv6でもそのままポートフォワーディングで...と考えたくなりますが、IPv6では
端末一つ一つに異なるグローバルIPアドレスが割り当てられるためポートフォワーディングが必要ありません。
なのでインターネットに繋ぐだけでもう既にサーバは公開されています。
実際にはフィルタやファイアウォールで防がれることになりますが、ルータさえ対応していればフィルタの設定を行うだけで公開できちゃうんですね。
なんだ簡単じゃないかー、と思ったらお次はIPv4環境向けにサーバを公開する必要が出てきます。
IPv6が普及しだしたとは言え、まだ大半のネット環境はIPv4で、IPv6とIPv4は互換性が無いため不特定多数にサーバを公開する場合はIPv4でも公開しないといけないんです。
ここで問題になるのが、
IPv4 over IPv6 (IPv6環境下でIPv4通信を行う技術) です。
IPv4 over IPv6にはDS-Lite, MAP-Eなどいくつかの種類がありますが、基本的に
どれもポート開放を自由に行うことができません。
MAP-EはIPv6 IPアドレスに応じた一部のポートの開放が可能ですが、例えば80番などの特定のポートは開放できません。
また、DS-Liteでは仕組み上どのポートも開放できません。
じゃあどうするんだよ!っていうのが後回しになりましたが今回の記事の趣旨です。