以前、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のネイティブ対応ですね。



