はじめに
この記事は中国語からの翻訳です。不自然な点がありましたらご容赦ください。
そろそろうちのネットワーク環境について書いてもいい頃かなと思い、まずは最も基本的なスイッチの設定から紹介していこうと思います(
今回の記事で扱うのは、日本のNTT系光回線「フレッツ光」のみです。
おうちのネットワークが今年から何かと問題続きで、さすがに我慢できずに構成を見直しました:
- 現在、メインルーター兼アクセスポイントとしてNetgear WAX202(MT7621チップ搭載)を使用していますが、性能が低く、さらにオープンソースドライバの影響もあってか、Wi-Fi の速度は300〜400Mbps程度が限界です(Wi-Fi 6対応にもかかわらず)
- Netgear WAX202 には WAN ポートが1つ、LAN ポートが3つありますが、実際の運用ではポート数が不足し、追加のスイッチを接続する必要があります。
- PPPoE(インターネット接続プロトコル)は、接続数が多すぎるためか、WAN インターフェースが頻繁に切断されることがあります。これはPPPoEだけでなくIPv6通信も同時に切断される状況で、ONU(光回線終端装置)を再起動しても改善せず、ルーター本体の再起動が必要になってしまいます。
- ルーターを再起動すると、サーバールームのネットも一緒に切れるため、@Pixiv_bot などのサービスも停止してしまいます。
- 友人からNTTの「PON STICK」を譲ってもらいました。小型ONUの提供開始について
- ※この部分の設定方法は非公開ですが、興味があれば「Yahooオークション」などのフリマで「SFP-GE-PON」というキーワードで検索して入手可能です。UART経由でMACアドレスを変更するだけなので、簡単です。
- MTKのWi-Fiドライバを移植したいとも思っていますが、ルーターとAPが一体化しているため、頻繁に再起動できないのが現状です。
ということで、これらの問題を解決するには、処理の一部をMT7621から分散させるため、デバイスを増設するしかないという結論に至りました。
その中で最も重要な役割を担うのが「スイッチ」です。
任〇堂のスイッチではないですけどね
ということで、このシリーズではスイッチの設定から順を追って説明していきます。
現在使用しているスイッチは、昔どこかで手に入れた Mikrotik CRS112-8G-4S です。まあ、最低限の機能は果たせるという感じです。
とはいえ「スイッチの設定」と言いつつ、この記事は設定そのものよりも前提知識の話がほとんどな気もしますが……まあいいでしょう。わからないことはAIに聞けばいい時代ですしね!
正文
考え方
NTTフレッツの独特な設計のため、中国で一般的な「WANポートとLANポートを持つルーター」だけでは構成が完結しない、あるいは最適とは言えない場合があります。
中国では、多くのISPがPPPoEで接続する構成を採用しており(IPv6はPPPoE上でPrefix Delegation(PD)として提供されることが多いです)、
一方、NTTフレッツはPPPoE接続に加え、IPv6 IPoE + IPv4 over IPv6(MAP-EやDS-Liteなど)という接続方式も提供されており、
IPv6に関しては、ONUとPCをLANケーブルで直接接続するだけでインターネット接続が可能な場合があります。
(※ただし、ひかり電話契約時や10Gbps契約などでは、ルーターにPD(Prefix Delegation)でプレフィックスが払い出されるのみのケースもあり、その場合はルーター等で適切にプレフィックスをLAN内に再配布する必要があります)。
この仕様を利用すれば、例えば自宅サーバーがルーターを経由せず、ONU配下のネットワークに直接接続(ブリッジ接続)し、SLAACによってグローバルIPv6アドレスを取得して外部と通信するといった構成も可能です。
そしてもし使用しているスイッチにL3(レイヤー3)ルーティング機能があれば、
LAN内のIPv6トラフィックはスイッチ内部で直接ルーティングが可能となり、ルーターを経由しない分、通信効率が格段に上がります。
個人的には、IPv4トラフィックのみをルーター(のNAT)を経由させ、IPv6トラフィックは可能な限りスイッチ(のL3機能)で処理する構成をおすすめします。
ただし、日本特有の注意点として、「ひかり電話」を契約していない場合、NGN網から割り当てられるIPv6プレフィックスが /64
のみになる、という問題(仕様)があります。
ご存じの通り、/64
のプレフィックスでは追加のサブネット分割ができないため、
その場合はスイッチが NDP-Proxy
(RFC4389のリレー方式)に対応している必要があります。
これにより、IPv6のアドレス配布やゲートウェイの中継が可能になります。
しかしながら、2025年4月現在、私が使用しているMikrotik(CRS112など)はまだNDP-Proxyに対応していません(参照: Feature request: ND Proxy (RFC 4389))。
将来、NDP-ProxyとL3ルーティングの両方に対応した手頃なスイッチ(ジャンク品など)を入手できたら、この記事を更新したいと思います。
ちなみに、ひかり電話契約などで /56
などのプレフィックスが利用できる場合は、LAN内で自由にサブネットを分割できるため、NDP-Proxy
は不要になります。
この構成であれば、ルーターが落ちたとしてもデュアルスタック(IPv4 + IPv6)の通信が完全に切れることはなくなります。
具体的な計画
これらのアイデアが揃ったところで、目標に向けた構想を始めましょう。
いわゆる「逸般家庭」向けネットワークですが、まずは最小限のVLAN構成から始めます: UPLINK:
- 101 フレッツ光 ネクスト マンション・ギガラインタイプ プラン2 ※プロバイダは
iijmio
、PPPoE はIIJ
、IPoE はtransix
(これもIIJ
) - 102 ※マルチ回線がある場合(ポリシールーティングについては別途チュートリアルを予定)
LAN:
- 1001 lan zone
- 1011 iot zone ※とはいえ今のところ IoT 機器は特にないので今回は未設定
- 1021 xxx zone
SERVER LAN:
- 2001 server zone
- 2011 xxx zone
OTHER:
- 888 MGNT 管理用
そして、使用するスイッチ(CRS112-8G-4S)はRJ45ポートが8つ、SFPポートが4つなので、ポートの割り当ては以下のように計画しています:
- lan zone (untagged 1001)
- ether1
- ether2
- ether3
- ether4
- server zone (untagged 2001)
- ether5
- ether6
- trunk only
- ether7
- ether8
- wan flets (untagged 101)
- sfp10 UPLINK
もちろん、ほとんどのポートは hybrid port として設定しています。
「とりあえず動けばOK」という方針ではありますが、インターフェースリストなどでVLANごとにポートをグループ化しておくと、設定ミスの防止に役立ちます。
最後に、以下は現在構想中のネットワークトポロジー図です。
IPv4 の NAT 内部ネットワークについては、用途や運用状況に応じて柔軟にセグメントを分ける予定のため、ここでは詳細な区分は省略しています。
今後さらに構成を拡張する場合は、DMZ ゾーンの導入も検討しています。逸般の誤家庭としては十分すぎる構成かもしれませんね。
— huggy | @h@kuu.moe (@wosign) March 17, 2025
設定ファイルの参考
このスイッチは基本的にL2として使用します。L3(NAT)機能は非常に弱いため、特に設定を追加する必要はありません。
また、管理用ネットワーク(MGNT)の例として172.22.5.1/30
を挙げていますが、この/30
サブネットは利用可能なアドレスが2つしかなく非常に狭いため、実際の状況に合わせて/29
以上に広げる(サブネットマスクを変更する)か、別のネットワークアドレス体系に変更することを検討してください。
最後に余談ですが、Mikrotik製品(RouterOS)は、Cisco IOSライクな設定ではなく、Linuxに近いコマンド体系や設定思想を採用しているため。
初めて触れる方は(あるいはCiscoに慣れている方は)少し戸惑う点があるかもしれません。
/export show-sensitive
# 2025-03-27 14:22:09 by RouterOS 7.18
# software id = SWQP-QPJF
#
# model = CRS112-8G-4S
/interface bridge
add name=bridge
/interface ethernet
set [ find default-name=ether1 ] name=lan-1
set [ find default-name=ether2 ] name=lan-2
set [ find default-name=ether3 ] name=lan-3
set [ find default-name=ether4 ] name=lan-4
set [ find default-name=ether5 ] name=server
set [ find default-name=ether6 ] name=server-6
set [ find default-name=sfp9 ] disabled=yes
set [ find default-name=sfp11 ] disabled=yes
set [ find default-name=sfp12 ] disabled=yes
set [ find default-name=ether7 ] name=trunk-7
set [ find default-name=ether8 ] name=trunk-8
set [ find default-name=sfp10 ] name=wan-flets
/interface vlan
add interface=bridge name=v-888-MGNT vlan-id=888
add interface=bridge name=v-101-wan vlan-id=101
add interface=bridge name=v-1001-lan vlan-id=1001
add interface=bridge name=v-2001-server vlan-id=2001
/port
set 0 name=serial0
/interface bridge port
add bridge=bridge interface=lan-1
add bridge=bridge interface=lan-2
add bridge=bridge interface=lan-3
add bridge=bridge interface=lan-4
add bridge=bridge interface=server-5
add bridge=bridge interface=server-6
add bridge=bridge interface=trunk-7
add bridge=bridge interface=trunk-8
add bridge=bridge disabled=yes interface=sfp9
add bridge=bridge interface=wan-flets
/ip firewall connection tracking
set enabled=no loose-tcp-tracking=no
/ip neighbor discovery-settings
set discover-interface-list=all
/interface ethernet switch egress-vlan-tag
add tagged-ports="switch1-cpu,lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8" vlan-id=888
add tagged-ports="lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8" vlan-id=101
add tagged-ports=lan-1,lan-2,lan-3,lan-4,trunk-7,trunk-8 vlan-id=2001
add tagged-ports=server-5,server-6,trunk-7,trunk-8 vlan-id=1001
/interface ethernet switch ingress-vlan-translation
add customer-vid=0 new-customer-vid=101 ports=wan-flets
add customer-vid=0 new-customer-vid=1001 ports=lan-1,lan-2,lan-3,lan-4
add customer-vid=0 new-customer-vid=2001 ports=server-5,server-6
/interface ethernet switch vlan
add ports="switch1-cpu,lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7-ushio,trunk-8" vlan-id=888
add ports="lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8,wan-flets" vlan-id=101
add ports="lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8" vlan-id=1001
add ports="lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8" vlan-id=2001
/ip address add address=172.22.5.1/30 disabled=yes interface=v-888-MGNT network=172.22.5.0
まとめ
まあ、日本のネットワークって独特な構造をしているからこそ、逆に色々な面白い「遊び方」ができるんですよね。 このシリーズを読み進めてもらえれば、さらにディープな設定(?)も紹介していくつもりです。 ―― もちろん、私が更新を続けていればの話ですが!
終
制作・著作
━━━━━
ⒽⓊⒼⒼⓎ