<?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>Homelab on 怠惰技術ブログ</title>
    <link>/tags/homelab/</link>
    <description>Recent content in Homelab on 怠惰技術ブログ</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>ja</language>
    <lastBuildDate>Mon, 06 Apr 2026 07:00:00 +0900</lastBuildDate>
    <atom:link href="/tags/homelab/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AdGuard HomeをProxmox LXCに立ててTailscale経由でDNSブロックする</title>
      <link>/posts/2026-04-06-tailscale-proxmox-adguard/</link>
      <pubDate>Mon, 06 Apr 2026 07:00:00 +0900</pubDate>
      <guid>/posts/2026-04-06-tailscale-proxmox-adguard/</guid>
      <description>&lt;h2 id=&#34;概要&#34;&gt;概要&lt;/h2&gt;
&lt;p&gt;はてな匿名ダイアリーとウーバーイーツをインフラレベルで封鎖したかった。
AdGuard HomeをProxmox LXCに立てて、Tailscale経由でDNSブロックする構成を作った。&lt;/p&gt;
&lt;h2 id=&#34;環境&#34;&gt;環境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Proxmox VE&lt;/li&gt;
&lt;li&gt;Tailscale導入済み&lt;/li&gt;
&lt;li&gt;AdGuard Home v0.108.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;手順&#34;&gt;手順&lt;/h2&gt;
&lt;h3 id=&#34;1-adguard-home-lxcをスクリプト一発で作成&#34;&gt;1. AdGuard Home LXCをスクリプト一発で作成&lt;/h3&gt;
&lt;p&gt;Proxmoxのノードシェルで以下を実行する。&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;bash -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/adguard.sh&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/community-scripts/ProxmoxVE&#34;&gt;community-scripts/ProxmoxVE&lt;/a&gt;が提供するスクリプト。
LXCのコンテナ作成からAdGuard Homeのインストールまで全自動でやってくれる。&lt;/p&gt;
&lt;p&gt;デフォルト構成はDebian 13、CPU 1コア、RAM 512MB、HDD 2GB。DNS用途なら十分。&lt;/p&gt;
&lt;h3 id=&#34;2-lxcにtunデバイスを追加する&#34;&gt;2. LXCにTUNデバイスを追加する&lt;/h3&gt;
&lt;p&gt;TailscaleはWireGuardベースのVPNで、動作に&lt;code&gt;/dev/net/tun&lt;/code&gt;が必要。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/dev/net/tun&lt;/code&gt;はLinuxの仮想ネットワークデバイス（TUNデバイス）。通常のネットワークデバイス（eth0等）は物理NICに紐づいているが、TUNはソフトウェアで作った仮想NIC。&lt;/p&gt;
&lt;p&gt;Tailscaleは以下の流れで通信を処理する。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;通信をTailscaleプロセスが横取り&lt;/li&gt;
&lt;li&gt;WireGuardで暗号化&lt;/li&gt;
&lt;li&gt;暗号化したパケットを相手に送る&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;この「横取り」の実装に&lt;code&gt;/dev/net/tun&lt;/code&gt;を使う。TUNデバイスを通してカーネルのネットワークスタックとTailscaleプロセスがやり取りする仕組みになっている。&lt;/p&gt;
&lt;p&gt;unprivileged LXCはセキュリティ上の理由でホストのデバイスに触れないようになっているため、明示的に&lt;code&gt;/dev/net/tun&lt;/code&gt;をコンテナに見せてあげる必要がある。&lt;/p&gt;
&lt;p&gt;Proxmoxのノードシェルで以下を実行してTUNを有効化する。&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;pct stop &lt;span style=&#34;color:#ae81ff&#34;&gt;106&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;lxc.cgroup2.devices.allow: c 10:200 rwm&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/pve/lxc/106.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/pve/lxc/106.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pct start &lt;span style=&#34;color:#ae81ff&#34;&gt;106&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;106&lt;/code&gt;の部分は自分のLXCのIDに置き換える。IDは&lt;code&gt;pct list&lt;/code&gt;で確認できる。&lt;/p&gt;
&lt;h3 id=&#34;3-lxcにtailscaleを入れる&#34;&gt;3. LXCにTailscaleを入れる&lt;/h3&gt;
&lt;p&gt;LXCのシェルに入って以下を実行する。&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;curl -fsSL https://tailscale.com/install.sh | sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tailscale up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;認証URLが表示されるのでブラウザで開いてログインする。
認証後、TailscaleのMachines画面からAdGuard HomeのTailscale IPを確認しておく。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
