Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
おうちネットワーク10G化 ルーター自作編
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kashiwa
November 25, 2024
1.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
おうちネットワーク10G化 ルーター自作編
kashiwa
November 25, 2024
More Decks by kashiwa
See All by kashiwa
なぜ今Cursorを薦めるのか
takak2166
0
34
ktr0731/go-mcpでMCPサーバー作ってみた
takak2166
0
370
AIを駆使して1からプログラム作ってみる2025
takak2166
0
50
おうちネットワーク10G化 宅内LAN配線編
takak2166
0
190
おうちネットワーク10G化 宅内LAN配線編
takak2166
0
390
Enablement Bootcamp for Gopherizing 発表会資料
takak2166
0
120
JANOG STAFFやってみた
takak2166
0
100
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Building the Perfect Custom Keyboard
takai
2
850
We Are The Robots
honzajavorek
0
300
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
420
Raft: Consensus for Rubyists
vanstee
141
7.6k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
280
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
440
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
550
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
680
GraphQLとの向き合い方2022年版
quramy
50
15k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Transcript
おうちネットワーク10G化 ~ルーター自作編~ Takayuki Kashiwa
現在の自宅ネットワーク構成図 インターネット(au ひかり) HGW (BL3000HM) サーバー (ESXi) (DeskMeet B660) NAS
(QNAP TS-230) PC PC PCとか インターネット(ビッグ ローブ光(光コラボ)) ルーター (作成中) (R86S) ONU L2SW (QSW-2104-2T) 自室の PC 10GbE 1GbE 2.5GbE (実際は5G)
インターネット(au ひかり) HGW (BL3000HM) サーバー (ESXi) (DeskMeet B660) NAS (QNAP
TS-230) PC PC PCとか ルーター (作成中) (R86S) ONU L2SW (QSW-2104-2T) 自室の PC 10GbE 1GbE 2.5GbE (実際は5G) 今日はここの話 現在の自宅ネットワーク構成図 インターネット(ビッグ ローブ光(光コラボ))
ルーター化するミニPC(R86S)について(前回資料から抜粋) • 2.5GbE-T x3, 10G SFP+ x2 搭載している 変態な ミニPC
• CPU:Intel(R) Celeron(R) N5105, Memory: 16GB, Storage: 64GB eMMC(内蔵) • メルカリで3.8万円で購入 • 追加でSFP+モジュール(RJ45)(8000円くらい)を2つ買った
インターネットの接続方式の話 • インターネットの接続方式については「徹底解説v6プラス」が詳しい ◦ Web版は無料で公開されている → https://www.jpix.ad.jp/files/v6plus-ebook.pdf • 各プロバイダによって接続方式が異なる ◦
2024年現在ではIPv4とIPv6のデュアルスタック構成になっていることがほとんど ◦ ざっくりとPPPoE方式とIPoE方式に分かれる ▪ auひかりやその他電力会社系の光回線だと PPPoE方式、フレッツ光や光コラボでは IPoE方式が採用さ れている(らしい) ▪ IPoE方式だとデュアルスタック構成にするための方式でさらに細分化される • MAP-E, DS-Liteなど • 私が契約しているビッグローブ光(光コラボ)のIPv6オプションはIPv6 IPoEのMAP-E方式 なのでルーターを自作する場合この方式に対応させる必要がある
MAP-Eについて • Mapping of Address and Port using Encapsulation •
IPv6 IPoEでIPv4の通信を実現するための方式の一つ • 通常は1回線につき1つのグローバルIPv4アドレスが付与されるが、MAP-EではIPv4ア ドレス枯渇防止のため複数の回線で1つのグローバルIPv4アドレスを共有している ◦ 回線契約ごとにIPv4で使えるポートの範囲が分かれている(IPv4で通信する場合は決められ たポート番号しか使えない ) MAPドメイン (サービス提供者の IPv6ネットワーク ) MAP BR インターネット MAP CE (HGW) MAP CE (HGW) MAP+NAT MAP+NAT
ミニPC(R86S)をルーター化するためにやったこと • Linux OS(Ubuntu24.04)をインストール • IPアドレスの設定 • カーネルパラメータの設定 • IPIP6トンネルの設定(MAP-Eトンネル)
• NAPTの設定 • ルーティングの設定 • DHCPサーバー(LAN側)の設定
Linux OS(Ubuntu24.04)をインストール (よくある手順なので詳細は割愛) • Ubuntu24.04のISOイメージを公式ページからダウンロードしてrufusでUSBメモリ に焼く • R86SにそのUSBを挿して起動してBIOS開いてUSB Boot •
あとはインストーラ―に沿ってインストール
IPアドレスの設定 • 最近のUbuntuだとnetplan使って設定するのが普通?だけどネットワーク周りの設定を systemd-networkdにまとめたかったのでsystemd-networkdにまとめた • WAN側はDHCPv6でIPv6のアドレスが取得できる ◦ この取得できるIPv6アドレスのプレフィックスによってIPv4アドレスと利用できるポート 番号が決まる ▪
IPv6アドレスのプレフィックスとIPv4のプレフィックスの組み合わせはDHCPv6でアドレス取得した状態で https://api.enabler.ne.jp/6a4a89a8639b7546793041643f5da608/get_rules?callback=v6plus を叩くと確認 できる • IPv6プレフィックスの次のセグメント(4桁)がIPv4のサフィックスになる • 例:2001:db8:1234::5678というアドレスが割り当てられていて、2001:db8::/32がプレフィックスの場 合、1234 の部分がサフィックスになる(16進数なので10進数への変換が必要) ◦ http://ipv4.web.fc2.com/map-e.html がIPv6プレフィックスから計算してくれるので便利 • LAN側は好きなように設定(192.168.10.1/24 など)
http://ipv4.web.fc2.com/map-e.html ← 入力するとここに option peeraddr としてBRのアドレスが表示される (本当は実際に入力した例を出したかったけど 自宅のIPアドレスが丸裸になってしまうのでやめた)
• ルーターとして動作させるためにパケットのフォワーディングを有効にする • 以下のファイルを作り、sudo sysctl -p で適用 カーネルパラメータの設定 # /etc/sysctl.d/20-mape.conf
net.ipv4.ip_forward=1 net.ipv6.conf.default.forwarding=1 net.ipv6.conf.all.forwarding=1
IPIP6トンネルの設定 • LocalにCEのIPv6アドレス、RemoteにBRのIPv6アドレスを指定して トンネルを張る • MAP-Eルールで計算したグローバルIPv4アドレスを設定 • MTUは1460に設定 ◦ IPv6のヘッダー長は固定で
40のため • systemd-networkdで設定(設定値は後述)
NAPTの設定 • LAN側の通信をWAN側のIPv4アドレスでSNAT • 使用できるポート番号が決まっているのでそのポート番号でNAPT するようにする • nftablesを使って設定 ◦ jinja2でtemplate化した
▪ https://gist.github.com/takak2166/ed6f54e85cdb65efe80d0114b58e9afe
ルーティングの設定 • IPv4はIPIP6トンネルをデフォルトゲートに設定 • IPv6はDHCPで降ってきたゲートウェイをデフォルトゲートに設定 ◦ PCからSSHするためにHGW(auひかり側)のネットワークにもつながるようにしていた ため、IPv6のデフォルトゲートが HGWを向いていたことに気付かず結構時間溶かした 😇
• systemd-networkdで設定 こっちをデフォゲにする必要がある
DHCPサーバーの設定(LAN側) • LAN側でDHCPでIPアドレスが割り当てられた方が便利(というか普通の 家庭用ルーターには備わっている)なのでDHCPサーバーとしても動作するように 設定 • systemd-networkdで設定
実際の設定(WAN側・LAN側) # /etc/systemd/network/wan.network [Match] Name=enp4s0d1 [Link] RequiredForOnline=yes [Network] IPv6AcceptRA=yes IPForward=ipv6
DHCPPrefixDelegation=yes DHCP=ipv6 Address=<CEのIPv6アドレス> Tunnel=mape-tnl [DHCPv6] DUIDType=link-layer WithoutRA=solicit # /etc/systemd/network/lan.network [Match] Name=enp4s0 [Network] Address=192.168.10.1/24 DHCPPrefixDelegation=yes IPv6SendRA=yes DHCPServer=yes Address=<DHCPで降ってきたIPアドレス> [DHCPServer] ServerAddress=192.168.10.1/24 EmitDNS=yes DNS=1.1.1.1 [IPv6SendRA] EmitDNS=yes [DHCPPrefixDelegation] UplinkInterface=enp4s0d1 SubnetId=0 Announce=yes RouteMetric=257
実際の設定(MAP-Eトンネル) # /etc/systemd/network/mape-tnl.network [Match] Name=mape-tnl [Link] RequiredForOnline=yes [Network] IPForward=ipv4 BindCarrier=enp4s0d1
DefaultRouteOnDevice=yes DHCP=no IPv6AcceptRA=no LinkLocalAddressing=no Address=<MAP-Eルールで算出したIPv4アドレス> [Route] Destination=0.0.0.0/0 # /etc/systemd/network/mape-tnl.netdev [NetDev] Name=mape-tnl Kind=ip6tnl [Tunnel] Mode=ipip6 Local=<CEのIPv6アドレス> Remote=<BRのIPv6アドレス> DiscoverPathMTU=yes EncapsulationLimit=none
接続テストの結果 > ./speedtest -s 14623 Speedtest by Ookla Server: IPA
CyberLab - Bunkyo (id: 14623) ISP: Biglobe Idle Latency: 7.33 ms (jitter: 0.35ms, low: 7.08ms, high: 8.13ms) Download: 2104.84 Mbps (data used: 2.7 GB) 9.21 ms (jitter: 2.03ms, low: 7.67ms, high: 233.00ms) Upload: 2941.57 Mbps (data used: 4.9 GB) 7.60 ms (jitter: 0.70ms, low: 6.84ms, high: 11.66ms) Packet Loss: 0.0% • https://www.speedtest.ne t/ja/apps/cli を使用 • 10G回線のはずなのに 2~3Gbpsしか出てない...
まとめ • R86SというミニPCにLinuxインストールしてIPv6オプション(MAP-E)対応のルー ターを作成した • ちょっと苦戦したけどLinuxの標準的な機能を使って設定できた • なぜかわからないけど通信速度が微妙だった • 今回ほとんど手動で設定を入れたので自動化にチャレンジしたい