📌

Raspberry PiにDNSを設定した。

2023/09/26に公開

Nugetサーバを構築するにあたってどうしてもサブドメインが欲しかったので。
ホスト側でDNSを建てるとコンテナ内でホスト名を名前解決しようとしたときにループバックアドレスになって接続出来ない問題があったのでDockerで起動するように変更

ルータの設定(1)

RaspberryPiにDHCPで固定IPを振るように変更

dnsmasq.conf

no-resolv
server=127.0.0.1
server=8.8.8.8
server=8.8.4.4

ローカルに振られたDNSリクエストを解決できない場合はGoogleDNSに飛ばすように設定

address=/.<ローカルのドメイン>.lan/<固定したIP>

Windowsが.localはmDNSで解決しようとするので.lanを使用

Dockerfile

Dockerfile
FROM alpine:latest

RUN apk add --no-cache dnsmasq

COPY dnsmasq.conf /etc/dnsmasq.conf

CMD ["dnsmasq", "-k"]

composeに組み込む予定なのでExposeはここでは無し

docker build -t dnsmasq .

docker-compose.yml

docker-compose.yml
services:
  dnsmasq:
    image: dnsmasq
    restart: unless-stopped
    environment:
      - TZ=Asia/Tokyo
    ports:
      - "53:53/tcp"
      - "53:53/udp"
    volumes:
      - ./dnsmasq/dnsmasq.conf:/etc/dnsmasq.conf

止まったらローカルネットワーク内の全てのマシンに影響が出ちゃうのでrestart: unless-stopped

ローカルサービスの終了とコンテナの起動

sudo systemctl stop dnsmasq
docker compose up -d

ルータの設定(2)

固定IPにDNSが向くように変更

Discussion