<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Keepalived on 怠惰技術ブログ</title>
    <link>https://techblog.wasutech.dev/tags/keepalived/</link>
    <description>Recent content in Keepalived on 怠惰技術ブログ</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>ja</language>
    <lastBuildDate>Sat, 18 Apr 2026 19:00:00 +0900</lastBuildDate>
    <atom:link href="https://techblog.wasutech.dev/tags/keepalived/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>自宅NWをKeepalivedとdnsmasqで作り直した話</title>
      <link>https://techblog.wasutech.dev/posts/home-nw-redundancy/</link>
      <pubDate>Sat, 18 Apr 2026 19:00:00 +0900</pubDate>
      <guid>https://techblog.wasutech.dev/posts/home-nw-redundancy/</guid>
      <description>&lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;p&gt;自宅のネットワーク構成が辛かった。&lt;/p&gt;
&lt;p&gt;具体的には以下の問題があった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ルータが1台構成で、死んだら自宅NW全滅&lt;/li&gt;
&lt;li&gt;メンテナンスで定期的に落としたいとかあっても、コストが大きい&lt;/li&gt;
&lt;li&gt;DNS/DHCPがルータに同居していて、役割が混在している&lt;/li&gt;
&lt;li&gt;WireGuardで外部接続していたが、外部からの入り方がだるい。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特に「冗長化したい」という気持ちは何年も前からあったが、DNSとDHCPの同期という難問の前に何度も挫折してきた。&lt;/p&gt;
&lt;p&gt;結論からいえば、DNS,DHCPの冗長化は諦めた。&lt;/p&gt;
&lt;p&gt;諦めた上で出口のルータとDNS、DHCPは役割を分けた上で出口のルータとWIFIルータのみ冗長化を実施した。&lt;/p&gt;
&lt;h2 id=&#34;設計方針&#34;&gt;設計方針&lt;/h2&gt;
&lt;p&gt;過去の失敗から学んだ一番の教訓はやはり「DNS/DHCPの冗長化は難しい」ということだ。&lt;/p&gt;
&lt;p&gt;理論上可能ではあるが、私は万年初級自宅インフラエンジニアでいつまで経ってもできる目処が立たない。&lt;/p&gt;
&lt;p&gt;それでいて、生成AIという過ぎた兵器を持ってしても、この問題は解決しなかったので、難しいというよりは不可能とした。&lt;/p&gt;
&lt;p&gt;2台のサーバでDHCPを冗長化しようとすると、リースの同期問題が必ず発生する。同期ツールを使ったりしたが、どうしても同期しきれなかった。&lt;/p&gt;
&lt;p&gt;そこで今回は思い切って諦めた上で役割を分離する方針にした。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ルータ（冗長化） → GWとTailscaleだけ担当
AP             → hostapdのみ
DNS/DHCP       → 専用機1台に集約（冗長化しない）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;DNSとDHCPは単一障害点になるが、自宅ラボであれば許容範囲だと判断した。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;てかどうしようもない。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;構成&#34;&gt;構成&lt;/h2&gt;
&lt;p&gt;使用機材はすべてRaspberry Pi。封印していたタワーからも引っ張り出した。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;ホスト&lt;/th&gt;
          &lt;th&gt;役割&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;ルータA (MASTER)&lt;/td&gt;
          &lt;td&gt;Keepalived + Tailscale&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ルータB (BACKUP)&lt;/td&gt;
          &lt;td&gt;Keepalived + Tailscale&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DNS/DHCP機&lt;/td&gt;
          &lt;td&gt;dnsmasq専用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AP x2&lt;/td&gt;
          &lt;td&gt;WIFI冗長化&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;ネットワークセグメントはひとつ。VIPをデフォルトゲートウェイ兼DNSとして各クライアントに配布する。&lt;/p&gt;
&lt;h2 id=&#34;keepalivedの設定&#34;&gt;Keepalivedの設定&lt;/h2&gt;
&lt;p&gt;まずルータ2台にKeepalivedを入れる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install -y keepalived
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;MASTER側の設定:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vrrp_instance VI_1 {
    state MASTER
    interface lan-if
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass xxxxxxxx
    }
    virtual_ipaddress {
        192.168.xx.1/24
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;BACKUP側は &lt;code&gt;state BACKUP&lt;/code&gt; と &lt;code&gt;priority 90&lt;/code&gt; に変えるだけ。シンプルだ。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ラズパイ6台で作る、絶対に止まらない最強の自宅ネットワーク冗長化計画</title>
      <link>https://techblog.wasutech.dev/posts/new-home-nw/</link>
      <pubDate>Sat, 24 Jan 2026 19:00:00 +0900</pubDate>
      <guid>https://techblog.wasutech.dev/posts/new-home-nw/</guid>
      <description>&lt;h2 id=&#34;はじめに&#34;&gt;はじめに&lt;/h2&gt;
&lt;p&gt;「自宅サーバーを構築したが、1台落ちただけで家族全員のネットが止まった」
そんな苦い経験（特にDNS/DHCP周りでの同期失敗）を経て、今回は&lt;strong&gt;Raspberry Pi 6台（＋α）を駆使した「高可用性（HA）」に特化した自宅ネットワーク&lt;/strong&gt;を再設計します。&lt;/p&gt;
&lt;p&gt;今回のコンセプトは「速度よりも、止まらないこと」。
北欧神話の神々の名を冠した6台のラズパイによる、3層の冗長化レイヤーを構築します。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-ネットワーク全体像&#34;&gt;1. ネットワーク全体像&lt;/h2&gt;
&lt;p&gt;上位ルーターとはWi-Fiで接続し、内部ネットワークは有線L2スイッチを中心に構成します。物理的に役割を分離することで、障害時の原因切り分けを容易にしています。&lt;/p&gt;
&lt;h3 id=&#34;階層化の設計案&#34;&gt;階層化の設計案&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Edge層 (L1)&lt;/strong&gt;: インターネットへの門番。KeepalivedでゲートウェイIPを共有。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core層 (L2)&lt;/strong&gt;: DHCPやDNS、認証など、NWの頭脳となる機能を同期。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service層 (L3)&lt;/strong&gt;: ファイルサーバーなどの実データをレプリケーションして保持。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-サーバー構成表北欧神話の神々&#34;&gt;2. サーバー構成表：北欧神話の神々&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;物理筐体&lt;/th&gt;
          &lt;th&gt;ホスト名&lt;/th&gt;
          &lt;th&gt;役割&lt;/th&gt;
          &lt;th&gt;冗長化の仕組み&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Pi 3 (A)&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Odin&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;主系Gateway / VPN&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Keepalived (VIP: 192.168.1.1)&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Pi 3 (B)&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Frigg&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;副系Gateway / VPN&lt;/td&gt;
          &lt;td&gt;Odinと仮想IPを共有&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Pi 3 (C)&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Huginn&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;DNS / DHCP Primary&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;ISC-DHCP Failover / Gravity Sync&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Pi 3 (D)&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Muninn&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;DNS / DHCP Secondary&lt;/td&gt;
          &lt;td&gt;Huginnとリアルタイム同期&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Pi 3 (E)&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Mjolnir&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;ストレージ (NAS)&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;GlusterFS + Keepalived (VIP: .200)&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Pi 3 (F)&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;Gungnir&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;ストレージ (NAS)&lt;/td&gt;
          &lt;td&gt;Mjolnirとデータレプリケーション&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-過去の失敗を防ぐ守りの技術選定&#34;&gt;3. 過去の失敗を防ぐ「守り」の技術選定&lt;/h2&gt;
&lt;h3 id=&#34;-dnsdhcp仮想ipに頼らない&#34;&gt;① DNS/DHCP：仮想IPに頼らない&lt;/h3&gt;
&lt;p&gt;過去、DNSやDHCPを仮想IP（Keepalived）で制御しようとして失敗した経験から、今回は&lt;strong&gt;プロトコル標準の冗長化&lt;/strong&gt;を採用します。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
