以前、MAP-E方式のIPv4 over IPv6をUniFi Dream RouterやUniFi Dream Machineで利用する方法を紹介しましたが、いずれもホームゲートウェイ(HGW)と組み合わせる際にデュアルNATとなっていました。2024年7月リリースのファームウェアNetwork Appklication 8.3でUDR/UDMのNATを無効にできるようになりました。
早速デュアルNATを回避することで速度はよくなるのか、何かトラブルが起こらないのか見てみました。
環境
次の環境で行います。
- HGW: RX-600KI
- Router: UniFi Dream Router(UDR)
- UniFi OS: 4.1.22
- Network Application: 9.0.114
- IPv4 over IPv6: MAP-E
構成図
デュアルNATの構成は次のようになります。
Mermaidコード
flowchart TD subgraph IPv6 IPoE網 G[事業者ルーター] end subgraph "ユーザーLAN(IPv4/IPv6)" A([光コンセント]) B[HGW] subgraph "UDR LAN(IPv4/IPv6)" C[UDR] D[VLAN] E[VLAN] end end G -->|IPv4 over IPv6トンネル| A A --WAN (NAT)--> B B --WAN (NAT)--> C C -->|LAN| D C -->|LAN| E
UDRのNATを無効にした構成は次のようになります。
Mermaidコード
flowchart TD subgraph IPv6 IPoE網 G[事業者ルーター] end subgraph "ユーザーLAN(IPv4/IPv6)" A([光コンセント]) B[HGW] subgraph "UDR LAN(IPv4/IPv6)" C[UDR] D[VLAN] E[VLAN] end end G -->|IPv4 over IPv6トンネル| A A --WAN (NAT)--> B B --WAN (IPv4はLAN側静的ルーティング)--> C C -->|LAN| D C -->|LAN| E
UDRのNATを無効にする
UDRのNATはネットワークごとに有効/無効を選択できます。そこで従来のネットワークとは別にNATを無効にするネットワーク(及びVLAN)を切り、専用のSSIDも作成します。これでWi-Fiを切り替えるだけで動作を検証できます。従来のWi-FiはデュアルNATのままなので、万が一トラブルがあっても元のWi-Fiにつながっている端末に影響出ません。
手順は次の通りです。
- (UDR) NATを切るネットワーク
NoNAT
を用意する - (UDR) NATを切るネットワークにつなげるSSIDを用意する
- (UDR) NATのNAT設定で除外ネットワークへ
NoNAT
を指定する - (HGW) NATを切るネットワークのCIDR/UDRのWAN側IPアドレスを静的ルーティングする
順番に見ていきましょう。
(UDR) NATを切るネットワークNoNAT
を用意する
UDRのWeb UIにアクセスしSettings -> Networks
を開きます。いい感じでネットワークを切ってください。特にこだわるポイントはありません。CIDRは192.168.13.0/24
とします。
(UDR) NATを切るネットワークにつなげるSSIDを用意する
作成したネットワークをさくっと試すならWi-Fiがベストです。私が宅内をWi-Fiで統一している理由の1つです。
Settings -> WiFi
を開き、SSIDを作成します。SSIDはNoNAT
とでもしておきましょう。
[WiFi
設定]
(UDR) NATのNAT設定で除外ネットワークへNoNAT
を指定する
重要なポイント1です。
Settings -> Routing -> NAT
を開き、Global NAT SettingsをAuto
からCustom
に変更、Exclude NetworksにNoNAT
を追加します。もしも全てのネットワークを除外したい場合は、Global NAT SettingsをOff
にしてしまうのも手です。私も安定動作を確認したらOffにする予定です。
(HGW) NATを切るネットワークのCIDR/UDRのWAN側IPアドレスを静的ルーティングする
重要なポイント2です。
接続先がIPv61なら、HGWの静的ルーティング設定をせずとも通信できます。しかし接続先がIPv4な場合、上位のHGWでUDR配下の端末当て通信が正しく中継できません2。NATを無効にしたため、インターネットからの戻り通信宛先がローカルPCアドレスのままになり、HGWはどこに転送すればいいか分からなくなるためです。そこでHGWの静的ルーティングを使って、LAN側のネットワーク宛て通信はUDRのWAN側IPアドレスへ転送するよう設定します。
私のHGWはRX-600KIなので、HGWのWeb UIにアクセスし詳細設定 -> LAN側静的ルーティング設定
を開きます。宛先IPアドレス/マスク長にNoNATネットワークのCIDR192.168.13.0/24
を、次のホストIPアドレスにUDRのWAN側IPアドレス192.168.1.2
を指定します。
これでUDRのNATを無効にしたネットワークができました。
動作試験
さっそく接続してみましょう。NAT無効なSSIDに接続しIPアドレスを確認すると、NAT無効なネットワークのアドレスが割り当てられています。
$ ipconfig Wireless LAN adapter WiFi: Connection-specific DNS Suffix . : IPv6 Address. . . . . . . . . . . : xxxx:xxxx:xxxx:xxxx::xxx IPv6 Address. . . . . . . . . . . : xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx Temporary IPv6 Address. . . . . . : xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxx:xxxx Link-local IPv6 Address . . . . . : fe80::1ecf:2056:38cb:af3c%9 IPv4 Address. . . . . . . . . . . : 192.168.13.184 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : fe80::6222:32ff:feaa:33d9%9 192.168.13.1
速度チェック
有線接続の速度を確認します。
HGWからの有線LAN
参考値として、HGWから有線LANで接続したPCからfast.comで速度を測定します。理論上の最速接続です。
UDRのLANポートに接続したPCからfast.comで速度を測定します。
デュアルNAT | シングルNAT (本記事の構成) |
---|---|
450Mbps![]() |
470Mbps![]() |
無線接続の速度を確認します。UDRのWi-Fiに接続したPCからfast.comで速度を測定します。
デュアルNAT | シングルNAT (本記事の構成) |
---|---|
270Mbps![]() |
320Mbps![]() |
なお、運ゲーなので、実行タイミングによってはWi-Fiでも有線ぐらいにはなります。
通信トラブルの有無
1週程利用していますが、特に通信トラブルはありませんでした。 あと1週間様子を見てから全体に展開予定です。
まとめ
速度差は微々たるもので計測誤差にも感じますが、デュアルNATを回避できるのが大きいです。ただ、構成自体はシンプルですがHGWに追加設定を必要としているのは微妙3なポイントです。
ようやく念願のデュアルNAT回避ができるようになりました。あとはMAP-Eのネイティブ対応ですね。