Share
Embed
おうちネットワーク10G化 ルーター自作編
kashiwa
November 25, 2024
Transcript
19 slides
-
現在の自宅ネットワーク構成図 インターネット(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側)の設定 -
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 など) -
• ルーターとして動作させるためにパケットのフォワーディングを有効にする • 以下のファイルを作り、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 -
実際の設定(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しか出てない...