maril.blue

回線

NURO光のマンションプラン回線が引かれています。下りで最大2.5Gbps出るそうです。個人向けNURO光にはそもそも固定IPプランがありませんし、IPoEでv4はCGNAT配下です。

ONU(HGW)

NURO光では、ZXHN F660PというONU一体型ルータが貸し出されます。ONU単体で貸し出してもらうことはできません。

厄介なことに、我が家のF660Pでは、設定画面中のポートフォワード、DMZ等の項目がグレーアウトしており、特定のポートを狙って開放することが困難です。(ありえない話し❗❗)

そもそもv6にかんするファイアウォール設定が見つからず、v6が守られているかもアヤシイ。

二重ルーター編

こんなデバイスでは心もとないので、ちゃんとしたルータを下に生やします。ですがここで悲しいお知らせ。F660PのLANポートは1000BASE-Tです。つまり1Gbpsしか出ません。実運用で理論値の2.5Gbps出ることはないとは言え、少々微妙な気持ちになります。

敗けたって次はあるということで、NECのIX2215を中古で購入しました。

![[Pasted image 20261018212020.png]]

ネットワーク設計

家庭用デバイスセグメントと、外部公開するサーバーセグメントを切ります。

WAN側

v4については、F660PからDHCPで受けます。 v6についてですが、F660Pは配下のデバイスに/64しか配らないそうです。(ありえない話し❗❗2) 仕方がないのでNDプロキシ構成にします。

interface GigaEthernet0.0
  ip address dhcp
  ip napt enable
  ipv6 enable
  ipv6 nd proxy GigaEthernet2:2.0
  no shutdown
!

LAN側

ポートベースでVLANを切ります。ポート1, 2, 3, 4を家庭用、ポート5, 6, 7, 8をサーバー側に割り当てます。

device GigaEthernet2
  vlan-group 1 port 1 2 3 4
  vlan-group 2 port 5 6 7 8
!

家庭側には、192.168.10.0/24を割り当てます。

interface GigaEthernet2:1.0
  ip address 192.168.10.1/24
  ip dhcp binding home
  no shutdown
!

ポイントとして、家庭側ではそもそもv6を有効にしていません。IX側でACLの設定はしていますが、家庭で使うデバイスでv6を使いたいケースがなかったので無効にしています。

また、家庭側には無線APとしてGL-SFT1200をブリッジ接続し、無線デバイスをここにぶら下げます。

![[Pasted image 20261018212121.png]]

サーバー側には、192.168.20.0/24を割り当てます。

interface GigaEthernet2:2.0
  ip address 192.168.20.1/24
  ip dhcp binding server
  ipv6 enable
  ipv6 nd ra enable
  no shutdown
!

サーバー側ではv6の到達性を確保するため、NDプロキシでRAを受け取ります。

DHCPの設定は以下のとおりです。

ip dhcp profile home
  assignable-range 192.168.10.10 192.168.10.100
  subnet-mask 255.255.255.0
  default-gateway 192.168.10.1
  dns-server 192.168.10.1
  lease-time 86400
!
ip dhcp profile server
  assignable-range 192.168.20.10 192.168.20.100
  subnet-mask 255.255.255.0
  default-gateway 192.168.20.1
  dns-server 192.168.20.1
  lease-time 86400
!

サーバー設定

サーバーマシンとして、かつて使用されていたノートPCのバッテリーを抜いたものを使用しています。

サーバーではWireGuardハブやWebサーバー、Immich、メトリクス用のサービス群などが稼働しており、設定はすべてNixOSで宣言的に管理しています。

https://github.com/marukun712/home-infrastructure

v4トンネル

NURO光では、v4はCGNAT配下です。つまり、今の設定のままでは、v6アドレスが使えない環境でmaril.blueにアクセスすることができません。

そこで、ConoHa VPSの一番安いメモリ512MBプランを契約し、WireGuardでサーバーマシンとトンネルを張ります。

[Unit]
Description=Forward packets from VPS to home server
After=network-online.target wg-quick@wg-relay.service
Wants=network-online.target
Requires=wg-quick@wg-relay.service

[Service]
Type=oneshot
ExecStart=/usr/sbin/sysctl -w net.ipv4.ip_forward=1
ExecStart=/usr/sbin/iptables -t nat -A PREROUTING -i ens3 -j DNAT --to-destination "WireGuard IP"
ExecStart=/usr/sbin/iptables -t nat -A POSTROUTING -o wg-relay -j MASQUERADE
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

maril.blueをVPSのグローバルIPに向けることで、v4のみの環境からでも接続できるようになります。

メトリクス

家のネットワーク状態を監視するため、Grafanaダッシュボードを構築しています。

Grafanaにはサーバーマシン、IX2215の状態に加えて、稼働中のWebサービスを外形監視した状態も表示されています。

IX2215側では、SNMP AgentとsFlow Agentを有効にしています。

snmp-agent ip enable
snmp-agent ip community public
snmp-agent ip community ro public

sflow agent ip 192.168.20.1
sflow collector ip 192.168.20.10

外形監視には、GitHub Actionsベースで動くUpptimeを使用しています。

監視結果はリポジトリにJSONとして保存されるため、そのファイルを取得してInfinity Datasourceに渡してやることで可視化することができます。

https://raw.githubusercontent.com/marukun712/status-page/master/history/summary.json