はじめに:UniFiでIPoE
UniFiはいい。コントローラの管理画面ひとつでルータもスイッチもAPもまとめて見られるし、トポロジーも可視化される、クライアントごとのトラフィックも追える。
ただ、日本の回線、特にIPoE(transix)を通そうとすると難しい(最近公式が対応したのでずいぶん状況は良くなった)。
ネットに転がっている情報は、
- 光ネクスト+ひかり電話あり が前提
- しかも「NTTのホームゲートウェイ(HGW)の下にUniFiをぶら下げる」前提の二段ルータ構成
だったりして役に立たない事が多かった。
HGWは挟みたくない。二重NAT・二重DHCPやだ。せっかくUniFiで一元管理しているのに上流にもう一台ブラックボックスが居座るのやだ。UniFiをエッジルータとして回線に直結で使いたい。
この記事は、その「HGWなし・UniFi単体でtransixを通す」をやるために踏んだ手順と、ハマった箇所をまとめたもの。光クロスと光ネクスト、どちらも光電話なし構成で扱う。
前提
- フレッツ光クロス or 光ネクスト
- ひかり電話なし(電話ありはHGW前提なので対象外。法人用途なら電話なし構成のほうが素直)
- ISP: transix系(今回はWAKWAKの個人または法人プラン)
- ルータ: UniFi(UDM-SE。UDM/UDR系でも考え方は同じ)
結論
- transixのプランは動的IPマスト。固定IPはプロトコルが別物(IPIP)でUniFiが非対応。
- 光クロスはIPv6がDHCPv6 + Prefix Delegationで来る → WANは
DHCPv6、LANはPrefix Delegation。 - 光ネクスト(電話なし)はRA(SLAAC)で/64が1個 → IPv6設定は
SLAACでSingle Network。複数VLANにv6を配れない制約あり。 - 自分の回線がどちらかは、推測せずRAをtcpdumpで見て判定する。
- transixのAFTRは一般プランが
gw.transix.jp、WAKWAK法人はgwe.transix.jp。 - 最初の関門:UniFiは古いファームで届くので、先にネットを確保しないとアップデートできず詰む。
動的IPを選べ
transix(WAKWAK含む)には動的IPコースと固定IPコースがある。グローバル固定v4が要るなら固定にしたいところだが、
- 動的IP = DS-Lite方式 → UniFi対応
- 固定IP = transix固定IP(IPIP / RFC2473)方式 → UniFi非対応
IPIPはDS-Liteと違い、YAMAHAやNECなど対応ルータの限られたリストでしか喋れない。UniFiは現状対応してない。固定IPで契約するとUniFi単体ではIPv4がとれず、詰む。
固定IPでどうしてもやるなら、IPIP対応ルータをWAN側に立ててUniFiをその配下に置くことになるので、素直に動的IPを選ぶか、Unifiをやめたほうが良い
DS-Liteのポート数制限に注意
DS-Liteは1つのグローバルIPv4を複数ユーザーで共有するアドレス共有型で、NAT変換はtransix側のAFTRが行う。このため1回線あたり使えるポート数に上限がある。
- 一般(個人)のtransix DS-Lite:1024ポート程度。大人数で使うとゲームやビデオ会議で枯渇する報告が多い。
- WAKWAK法人(動的IP)プラン:12,800ポート使えるようになる。
オフィスで何十人もぶら下げるなら1024では足りない。法人プランを選んだほうがいい。
また、DS-Liteはポート開放(インバウンド)ができない。外部公開サーバや拠点間VPNのサーバ側を建てたいなら固定IPが要るが、前述の通り固定IPはUniFi非対応なので注意。
UniFiは古いファームで届く
UniFiルータの新品は、古いバージョンのOSで出荷されてくることが多い。OSが古いとtransix/DS-Liteまわり(特にAFTRのホスト名指定)の機能が無い。最新版にしないとそもそも設定自体できない。
ところが、アップデートにはインターネットが要る。インターネットを通すには新しいファームが要る。
しかも光クロスはPPPoE非対応(IPoE専用)なので、「とりあえずPPPoEで繋いで更新」も使えない。(光ネクストの場合は、いったんPPPoEで繋いでその後切り替えるという手段が使える)
テザリングで素のDHCP回線を一時的に作る
筆者が上記の状況でハマったときは、スマホのテザリングでWANに普通のDHCP回線を一瞬だけ生やし、その間にアップデートした。UniFiのWANはデフォルトでDHCPクライアントなので、上流が普通にIPv4をくれる回線なら何でもいい。
手元のケースでは下記でいけた。WAN直結できるモバイルルータがあればそれでもいい。
- AndroidをUSB-Ethernetアダプタ経由でルータのWANと接続
- Androidのインターネット共有(最新のAndroidだとLANテザリングが可能)
小技:初期化→再セットアップ中の自動アップデートを使う
一度ネットに出られたら、UDMを初期化して再セットアップし直すと、ウィザード中のWANがデフォルトでDHCPになり、その流れで自動アップデートが走る。手動更新でコケるときはこれが楽だった。
フレッツのIPv6払い出し方式は2種類
ここから本題。光クロスと光ネクストで設定が変わるという話。
フレッツのIPv6 IPoEには、プレフィックスの配り方が2方式ある。
| 方式 | 降り方 | もらえるもの | 主に |
|---|---|---|---|
| RA方式(SLAAC) | RAにPrefix情報が乗る | /64が1個 | 光ネクスト・電話なし |
| DHCPv6-PD方式 | RAでDHCPv6を使えと言われ、PDで委任 | /56など(複数/64に分割可) | 光クロス・電話あり |
「電話なしネクスト=RA /64」「クロス(or電話あり)=DHCPv6-PD」とおおむね対応するが、VNEや契約で例外もあると思うので、次の方法で確かめるのが良い。
回線がどちらか、tcpdumpで判定する
「直結したPCにグローバルIPv6(GUA)が付くか見ればいい」と思うところだが、クロスだと当てにならない。
DHCPv6-PD方式の回線はPCを直結してもGUAが付かない。PCは自分でPDを要求しないから。回線は生きているのに「付かない=開通していない」と誤診する。
なので、RA(Router Advertisement)そのものをキャプチャして中身を見るのが確実。
PC/MacをONUのUNIポートに直結し(USB-Ethernetアダプタ経由でいい)、
# インターフェースを一度落として上げ、RSを送らせてからキャプチャ
sudo ifconfig en7 down && sudo ifconfig en7 up
sudo tcpdump -i en7 -n -vv 'icmp6 && ip6[40] == 134'
ip6[40] == 134 がICMPv6のRouter Advertisement(type 134)。30〜60秒待つ。
読み方:フラグとPrefixオプション
DHCPv6-PD方式(光クロスはこれだった)はこう出る。
ICMP6, router advertisement, length 32
hop limit 64, Flags [managed, other stateful], pref medium, router lifetime 1800s, ...
source link-address option (1), length 8 (1): 48:2e:72:xx:xx:xx
mtu option (5), length 8 (1): 1500
見るところは2つ。
-
Flags [managed, other stateful]… M/Oフラグが立っている。「アドレスはDHCPv6で取れ」の指示。 - Prefix情報オプションが無い … MTUとsource link-addressしかない。SLAAC用のプレフィックスを配っていない。
これで直結PCにGUAが付かなかった理由がわかる。回線は生きていた。
RA方式(SLAAC、光ネクスト電話なし)だと、RAにPrefix情報オプションが乗る。
ICMP6, router advertisement, length 64
hop limit 64, Flags [other stateful], pref medium, router lifetime 1800s, ...
source link-address option (1), length 8 (1): 70:ea:1a:xx:xx:xx
mtu option (5), length 8 (1): 1500
prefix info option (3), length 32 (4): 2409:10:xxxx:xxxx::/64, Flags [onlink, auto], valid time 2592000s, pref. time 604800s
prefix info option に /64 が乗り、auto(Aフラグ)が立っていればSLAACでアドレスが自動生成される=RA方式。
managed(M)フラグが無い。ここでは other stateful(O)だけ立っているが、これは「アドレスはSLAAC、DNS等の付随情報だけDHCPv6(ステートレス)で取る」という意味で、SLAAC判定には影響しない。
判定
- managed/otherフラグ+Prefixオプション無し → DHCPv6-PD方式(パターンA)
- Prefixオプションあり(autoフラグ) → SLAAC方式(パターンB)
- other stateful(O)はどちらでも立ちうる(DNS等をDHCPv6で取るだけ)ので、判定には使わない
ここが確定すれば設定は迷わない。
パターンA:光クロス(電話なし)= DHCPv6-PD
RAがmanaged/otherなら、UniFi側はDHCPv6でプレフィックスを取りに行く。
WAN側(Settings → Internet → WAN → IPv6)
- IPv6 Connection:
DHCPv6 - Prefix Delegation Size: 実際に委任されるサイズに合わせる(クロスは
/56が多い。)
LAN側(Settings → Networks → 各ネットワーク → IPv6)
- IPv6 Interface Type:
Prefix Delegation - Prefix IDをVLANごとに0,1,2...と振ると、委任された/56から各VLANに一意の/64が配られる(複数VLANにグローバルv6を出せる)
IPv4(DS-Lite)
- WANのIPv4接続でDS-Liteを選択
- Gateway Addressの
Autoを外し、AFTRのホスト名を手入力(gw/gweは後述)
適用後にWAN再接続かUDM再起動。配下クライアントにGUA(2xxx:...)が付き、DS-Liteのステータスが緑になればいい。
パターンB:光ネクスト(電話なし)= SLAAC /64
RAにPrefixが乗っていたらこちら。/64が1個しか来ないので考え方が変わる。
WAN側
- IPv6 Connection:
SLAAC/Single Network
LAN側
- IPv6 は
Single Networkで固定される
この Single Network だけ少し説明する。
Single Network = NDプロキシ
/64はIPv6でこれ以上分割できない最小単位。PDが無く/64が1個だけだと、WAN側にある/64をLANにルーティングで分けられない。
そこで使うのがNDプロキシ(proxy NDP)。NDP(Neighbor Discovery Protocol)はIPv6版のARPのようなもので、リンク上の「IPv6↔MAC」をNS/NAで解決する。NDプロキシは、ルータがWANリンク上で「LAN配下端末の代わりにNSへ応答」して、1個の/64をWANとLANにまたがって伸ばす。IPv4のproxy ARPのIPv6版。
UniFiの Single Network がこれで、公式ドキュメントにも「単一の/64をNDP経由で受け取る、単一VLAN向け」とある。
制約:グローバルv6を出せるLANセグメントは1個だけ。
/64が1個しかない以上、複数VLANに同時にグローバルIPv6を配れない。「メインLANだけv6、IoTやゲストはv4のみ」といった割り切りが要る。複数VLANでv6を使いたいなら、PDが降りるクロスや電話あり構成を選ぶしかない。
IPv4(DS-Lite)はパターンAと同じくAFTRを設定。
transixのDS-Lite(AFTR)設定
AFTRのホスト名はプランによって違う。筆者はWAKWAKユーザーなので下記。
- 一般(個人)プラン:
gw.transix.jp - WAKWAK法人(IPoEビジネス):
gwe.transix.jp("e"はenterprise)
AFTRのIPv6アドレスは将来変わりうるので、ベタ書きせずホスト名(FQDN)で登録しておく。
DNSはISP提供(IPv6)のものを使う
gw.transix.jp / gwe.transix.jp はtransix網のDNSでしか名前解決できない。WANのDNSを 8.8.8.8 や 1.1.1.1 に手動固定すると、NXDOMAINでAFTRが引けずトンネルが張れない。
WANのDNSは自動(ISP提供)にしておく。
まとめ
- 動的IPを選ぶ。固定IP(IPIP)はUniFi非対応。
- 届いたらまず最新化。テザリングでもいいので一度ネットに出す。クロスはPPPoEで逃げられない。
- 回線の払い出し方式はtcpdumpでRAを見て判定する。GUAの有無だけで判断しない。
- managed/other+Prefixなし → クロス系(DHCPv6+PD)
- Prefixあり → ネクスト系(SLAAC /64、LANはSingle Network=NDプロキシ、v6は1セグメントのみ)
- AFTRは契約に合わせる。法人WAKWAKは
gwe.transix.jp、DNSは自動。