13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IPv6 IPoE と IPv4 PPPoE 併用でポートを開放する

Posted at

あらすじ

IPv4 と IPv6 のインターネットが混在する世界。
この v4 → v6 転換期で混沌を極めたネットワークの中でポートを開けるまでのお話
(ほぼ個人的な設定備忘録)

環境

契約しているのはSo-net光プラスマンション東日本
v6プラス(MAP-E)対応!!
これはPPPoEより比較的混雑してなくて速い!
当時ワイ「はぇ~~~~速いんだ!じゃあこれで!」
...
詳細や歴史的背景は後述しますが、この環境では任意のポート開放はできません。
まぁこの記事を読んでるってことは知ってますよね。

v6プラス接続環境においての開放可能なポートの調査

ちなみにv6プラスで自分で開放できるポートは以下アルゴリズムで求めることが可能です。
でも、ググると自分のIPv6アドレスから開放可能なポートを調べてくれる便利なサイトがあるから
わざわざ計算しなくても良いよ。

AAAA : BBBB : CCCC : DDDD : EEEE : FFFF : GGGG : HHHH
っていうIPv6アドレスの場合、4ブロック目の部分の頭文字2文字を使う。ここでは「DD」のこと。

X=1~F、Y=0~Fとすると開放可能なポートは以下の範囲になります。
0xXDD0 ~ 0xYDDF

開放可能ポート(HEX)
1DD0 ~ 1DDF
2DD0 ~ 2DDF
...
EDD0 ~ EDDF
FDD0 ~ FDDF

def print_openable_port(v6_address):
    address_block = v6_address.split(':')
    block4        = address_block[3][0:2]
    
    for X in range(1,15):
        lower = int("{0:x}{1}0".format(X, block4), 16)
        upper = int("{0:x}{1}f".format(X, block4), 16)
        print("{0} ~ {1}".format(lower, upper))

要件

IPoE接続による恩恵は最大限受けて、任意のポート開放を行いたい

実現する方法

考えられる方法は以下のいずれかだと思います。

  1. ルータ2台で実現する
  2. YAMAHAルータ RTX830 で実現する

ルータ2台で実現する(おすすめ)

家庭用ルータを2台使ってゴリ押す方法です。必要機材は以下3点です。

  • v6プラス対応ルータ1台 (L3SW-A)
  • v6プラス非対応(もちろん対応でもいい)ルータ1台(L3SW-B)
  • スイッチングハブ1台 (L2SW)

以下を構成します。

image.png

  1. L3SW-AはIPoE(VNE経由)でインターネットへ接続します。
  2. L3DW-BはPPPoE(ISP経由)でインターネットへ接続します。
  3. IPアドレスの払い出しがおかしくなるので、ここではDHCP機能はL3SW-Aに任せ、L3SW-Bでは無効にしておきます。
    開けたいポート設定はL3SW-Bに対して行います。

ネットワークの設定は以上です。これ以降配線を変える必要はないです。
ゲートウェイの切り替え時はクライアントで決定してあげるだけです。

特に指定しないと、デフォルトゲートウェイはIPアドレスを振ってくれたルータに設定されると思いますが、
意図通りにならないかもしれないので、手動で設定しておきます。

IPoE接続でインターネットに出たい場合は、
デフォルトゲートウェイを192.168.100.1に設定します。

任意のポートを開放したいクライアントは、PPPoE接続でインターネットに出る必要があるので、
デフォルトゲートウェイを192.168.100.2に設定すれば良いです。

メリット

  • 安い。理解しやすい。

デメリット

  • クライアントのデフォルトゲートウェイを静的に決めるのが手間。
  • 1クライアントに対して特定のポートだけPPPoEでそのほかはIPoEで、とはできない。
  • ダサい。足が遅そう。

RTX830 で実現する

業務用ルータを使う。最終手段。
フィルター型ルーティングにより、開放するポートの接続のみPPPoEで行うようにします。
以下を構成します。
image.png

手順は次の通りです。

1.接続優先度をIPoE接続、PPPoE接続の順にしておきます。
以下ページの②までの手順を参考にIPoE接続とPPPoE接続を併用するためのフィルター設定をします。
これによりIPoE接続優先のPPPoEとの同時接続を行います。
【RTX830】IPoE v6プラス+IPv4 PPPoEを併用してVPNする話。|STK|note

ヒント
上記ページのフィルター番号で接続設定をしておくことをオススメします。
後述する拠点間VPNも行う場合、GUI上で2つのプロバイダー接続を行うと、
自動で設定されるフィルター番号のバッティングが発生するおそれがあります。

image.png

2.PPPoEで、フィルター型ルーティング設定を行う。
image.png

image.png

image.png

3.NATディスクリプター設定を行う
image.png

image.png

デメリット

  • 高すぎる。私が入手したときは2台で6.8万円しました。(2023年2月現在)

メリット

  • ルータが1台で済む。
  • 特定のポートに対してのみゲートウェイを変えるということができるので、複雑な設定が可能となる(YoutubeはIPoE、P2PゲームはPPPoEなど)
  • かっこいい。良い匂いがしそう。

雑談~~~~~~

v4とv6が混在している日本の環境

現在のインターネットでは、IPv4 と IPv6 という、2種類の異なる方式のIPが利用されています。
IPv4を使って構築されているIPv4インターネットと、IPv6を使って構築されているIPv6インターネットという、
互いに異なる方式の2種類のインターネットが存在しています。
日本ではユーザが新規申し込みを行って提供されるサービスは、
NTT東西がIPv6を使って構築した通信網であるNGN網です。(2019~)

NGN網は、IPv6 インターネットとは切り離された閉域網になっています。
これは日本電信電話株式会社等に関する法律(NTT法)による制限により、NTT東西はユーザに対して直接インターネット接続サービスを提供できないので、
フレッツ網はIPv6インターネットとは直接やり取りができないような設計になっています。

IPv4 PPPoE によるv4インターネット接続

ん?提供されるフレッツ網はIPv6閉域網なのにIPv4インターネットにはどうやって行くんだって話なんですけど、
そこでPPPoEという技術により、上記フレッツ網をトンネリングしてISPと接続し、その後ろにあるIPv4インターネットに接続します。

IPv6 IPoE によるv6インターネット接続

IPv6 IPoE はISPがIPv6による通信データを直接扱わないという特徴があります。
NTT東西と契約してIPv6 IPoEによるインターネット接続を提供するのは、
VNEです。ISPは、VNEからIPv6 IPoEインターネット接続サービスの卸提供を受けて
自社のユーザに対してこれを自社のサービスとして提供します。

誰のせいでポートを共有するハメになっているのか

1分で描いた図が以下です。
IPv6トンネルの割当にMAP-Eという仕組みが使われており、ベースにNATが使われているらしい。
結果、ポートの共有も行われるハメになった。と。
image.png

v6プラスって何

v6プラスは、VNEであるJPNEが提供する、IPv6 IPoEによるインターネット接続サービスにプラスして、
IPv4インターネットへの接続サービスも使えるというサービスです。
v6プラスでIPv4パケットを運ぶIPv6トンネルには、MAP-Eという方式が採用されていて、
JPNEはそのパケットをBorder Relayという機器を通すことでIPv4インターネットへ接続できます。

RTX830 2台による拠点間VPNも IPoE と PPPoE併用環境でできる....ってコト?!

できます。
L2TP / IPSec によるVPN接続にはudpでポート500, 1701, 4500 を開放する必要があるけど、
もちろんこれもv6プラスだと開放できないと思うので、これらをフィルターしてあげればOK。

【RTX830】IPoE v6プラス+IPv4 PPPoEを併用してVPNする話。|STK|note

フィルター型ルーティングの適用タイミングっていつ

最初、フィルター設定をPPPoEゲートウェイに設定したところで、PPPoEゲートウェイに接続優先度的に到達するのか...???
初期に到達するのはIPoEだから、そこにフィルター設定を設けるべきなのでは...
とか思ってたけど全然適用タイミングが違った。

公式リファレンスに記述がありました。そのまま引用します。
NATディスクリプター機能 概要

NATディスクリプター機能が動作するタイミングは、パケットをインターフェースへ送信するときと、インターフェースから受信するときです。
インターフェースの種類は問わず、LAN、PP、TUNNELインターフェースで動作します。
PP Anonymousインターフェースでも動作しますが、相手ごとにポリシーを変えることはできないので、使い方は限られます。
フィルタリングやルーティングとの位置関係は下図のようになっています。
特に、フィルタリングとNATディスクリプターの位置関係が重要です。
インターフェースへ送信するパケットは、先にフィルタリングの処理を受けてから、NATディスクリプターの処理を受けます。
逆に、受信するパケットは、NATディスクリプターの処理を先に受けます。
image.png

つまりout方向にパケットを送信するときは、送信先インタフェースの決定前にフィルターは一括で確認している。
逆にin方向では先にパケットのルーティングを決定してからフィルタを適用する。

参考

NATディスクリプター機能 概要
【RTX830】IPoE v6プラス+IPv4 PPPoEを併用してVPNする話。|STK|note
【設定記録】ヤマハルーターのRTX830 ポート開放設定|リスク・マネジメント委員会@一般社員|note

13
15
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
13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?