awesometaro

dnsmasqとtailscaleで自宅のネットワーク環境を整える

自宅のサーバでwebページを公開しているが、昨今のセキュリティ情勢を鑑みて静的ページのみを公開している。 しかし、ちょっとしたアプリをつくって、それを自宅のネットワーク内限定でアクセスできるようにしたい。 自宅のネットワークに繋がった状態でwebサーバのIPを直接ブラウザに入力すればwebアプリにアクセスできるが、できればdomainでアクセスしたい。 今回は勉強がてらDNSサーバの構築と外出先から自宅ネットワークにアクセスする方法についてまとめる。

DNSにdnsmasqを利用する

以前の仕事ではDNSにPower DNSを利用していたが、ちょっとめんどくさそうだったので採用を見送り、 dnsmasq を利用する。 Ubuntu系であれば以下のコマンドでインストールできる。

  sudo apt install dnsmasq

/etc/dnsmasq.d/home.conf に以下のように記述する。

  bind-interfaces
  no-dhcp-interface=eth0
  local=/home.arpa/
  cache-size=1000
  no-resolv
  server=1.1.1.1
  server=8.8.8.8

  host-record=hoge.home.arpa,192.168.0.109

以下のコマンドで設定ファイルが正しいかをチェックする

  sudo dnsmasq --test

問題なければserviceをスタートする。

  sudo systemctl restart dnsmasq

自宅のルータのプライマリDNSを作業を行っているサーバのIPに設定する。 サーバのIPが変化しないように、ルータ側でIPアドレスの予約設定を行っておくとよい。

Tailscaleで外出先から自宅ネットワークにアクセスする

tailscaleとは自宅ネットワークに簡単にVPNの導入できるサービスだ。 Claude Codeが流行りはじめたときに、自宅のPCでclaudeを走らせておき、外出先からtailscaleを利用して自宅のPCにアクセスして指示を与える、といった使い方が流行った。

以下のコマンドでtailscaleのインストールができる。

  curl -fsSL https://tailscale.com/install.sh | sh

その後以下のコマンドで起動する。

  sudo tailscale up

dnsmasqを利用している場合、自宅ネットワークのみ公開しているwebアプリに外出先からアクセスするためには更に設定が必要。

  sudo tailscale set --accept-dns=false

先程設定した home.conf を以下のように修正する。

    port=53
    listen-address=127.0.0.1,192.168.0.109

    interface=tailscale0
    bind-dynamic

    no-dhcp-interface=eth0
    no-dhcp-interface=tailscale0

    local=/home.arpa/
    cache-size=1000

    no-resolv
    server=1.1.1.1
    server=8.8.8.8

    host-record=hoge.home.arpa,192.168.0.109

その後dnsmasqを再起動する。

  sudo dnsmasq --test
  sudo systemctl restart dnsmasq

つづいてTailscaleの管理画面で設定する。 tailscaleをインストールしたサーバで以下のコマンドを実行して、tailscaleのIPアドレスを確認する。

  tailscale ip -4

Tailscale DNS管理画面を開き、Namesevers > Add nameserver > Custom nameserverで新しい設定を追加する

  • nameserver: tailscale ip -4 のIP address
  • restrict to domain をON → domainを入力する。今回の場合はhome.arpa

これで外出先から自宅ネットワークでのみ公開しているwebアプリ等にアクセスできる。

Back