2018年11月11日

UbuntuServer18.10 DNS/DHCPサーバ(dnsmasq)構築

小規模ネットワーク向けDNS/DHCPサーバソフトウェアとして、dnsmasqをインストールする。


インストール


インストール。
sudo apt install dnsmasq

インストールが完了すると自動起動するが、
failed to create listening socket for port 53: アドレスは既に使用中です
と言われコケる。
これはsystemd-resolvedがすでに53ポートを使用しているためにポートの競合が起きているため。
どっちにしろdnsmasqの設定が終わるまでは起動してないほうが都合がいいので、とりあえずこのままにして設定に進む。


DHCP設定


DHCP側の設定をしていく。
sudo vi /etc/dnsmasq.conf
【dnsmasq.conf】ファイル内
# 配布するIPアドレス範囲、リース期間を指定
dhcp-range=192.168.XXX.XXX,192.168.YYY.YYY,12h
# サブネットマスク
dhcp-option=option:netmask,255.255.255.0
# デフォルトゲートウェイ
dhcp-option=option:router,192.168.XXX.XXX
# DNSサーバ(後ほどDNSサーバも設定するので、サーバ自身のアドレスを設定しておく。)
dhcp-option=option:dns-server,192.168.XXX.XXX
# NTPサーバ
dhcp-option=option:ntp-server,192.168.XXX.XXX
DHCPだけでもすごい量の設定が出来るようになってるけど、とりあえず最低限の設定だけ。


DNS設定


DNS側の設定をしていく。
sudo vi /etc/dnsmasq.conf
【dnsmasq.conf】ファイル内
# ドメイン名のあるもののみ上位サーバに問い合わせる
domain-needed
# プライベートIPは上位サーバに問い合わせない
bogus-priv
# 上位DNSサーバ記述用ファイル(後で作製)
resolv-file=/etc/dnsmasq.resolv.conf
# resolv.confを上から順に処理
strict-order
# ローカルアドレス
local=/ローカルアドレス/
# 自動ドメイン付加
expand-hosts
# ドメイン設定
domain=ドメイン
# DNSキャッシュサイズ
cache-size=1024
こっちもすごい量の設定が出来るっぽいがとりあえず最低限に。

resolv-fileに設定した/etc/dnsmasq.resolv.confファイルを作成する
sudo vi /etc/dnsmasq.resolv.conf
【dnsmasq.conf】ファイル内
nameserver 8.8.8.8
nameserver 8.8.4.4


systemd-resolved停止


インストール時にエラーの出たsystemd-resolvedを停止する。
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved.service

/etc/resolv.confがシンボリックリンクになっているため、いったん削除し作成し直す。
sudo rm /etc/resolv.conf
sudo vi /etc/resolv.conf
【resolv.conf】ファイル内
nameserver 127.0.0.1



ルータのDHCP機能を停止


使用しているルータでDHCP機能を使用している場合、停止しておく。


DNSサーバの設定変更


サーバ内のDNS参照先を変更する。
sudo vi /etc/netplan/50-cloud-init.yaml
【50-cloud-init.yaml】ファイル内
nameserversの設定を自分自身を見るよう修正。
nameservers:
    addresses:
    - 127.0.0.1


ファイアウォール設定変更


DNSで使用するポート(53)とDHCPが使用するポート(67:68)をファイアウォールに登録する。
sudo ufw limit from 192.168.XXX.XXX/24 to any port 53 # DNSが使用するポート
sudo ufw allow 67:68/udp # DHCPが使用するポート
sudo systemctl reload ufw


動作確認 for ローカル


ローカル(当サーバ上)でdnsmasqを起動し動作確認する。
# dnsmasqを起動
sudo systemctl start dnsmasq
#名前解決出来ることを確認
dig www.google.com
#IPアドレスが引っ張ってこれているのを確認
;; ANSWER SECTION:
www.google.com. 29 IN A www.google.comのIPアドレス
# かかった時間を確認
;; Query time: 76 msec
# もう一度実行
dig www.google.com
# かかった時間が前回より少なくなっていることを確認(cacheが効いているか)
;; Query time: 0 msec



動作確認 for Windows


スタートメニュー→ネットワーク→アダプターの設定の変更→ローカルエリア接続をダブルクリック。
プロパティ→インターネットプロトコル バージョン4 (TCP/IPv4) を選択し、プロパティボタン押下。
全般タブの中で『IP アドレスを自動的に取得する』『NDS サーバを自動的に取得する』が選ばれていることを確認する。

コマンドプロンプトからdnsmasqのDHCPに設定したIPアドレス範囲でアドレスが割り当てられているか確認する。
ipconfig
接続固有の DNS サフィックス . . . :
リンクローカル IPv6 アドレス. . . . : XXXX::XXXX:XXXX:XXXX:XXXX
IPv4 アドレス . . . . . . . . . . : XXXX.XXXX.XXXX.XXXX
サブネット マスク . . . . . . . . : XXX.XXX.XXX.XXX
デフォルト ゲートウェイ . . . . . : XXX.XXX.XXX.XXX

また、DNSの解決が出来るか確認する。
nslookuo www.google.com
サーバー: dnsmasqをインストールしたサーバ名
Address: dnsmasqをインストールしたサーバのIPアドレス

権限のない回答:
名前:
www.google.com
Addresses: www.google.comのIPアドレス



終わり


サーバの/etc/hostsファイル内に家のネットワークにつながってるIT機器を登録しまくると捗ります。
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/184882055
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック