設定 - DNSMasq

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

DNSサーバ(DNSMasq)は、suse.comというドメイン名からIPアドレスを返したり、IPアドレスからドメイン名を返すサーバである。

内部向けDNSサーバは、LANにあるサーバまたはクライアントPCにアクセスする時、IPアドレスではなくsuse.com等のドメイン名を入力してアクセスできるようにするDNSサーバである。


DNSMasqのインストール

DNSサーバを構築するため、DNSMasqをインストールする。

sudo apt install dnsmasq dnsmasq-base libnetfilter-conntrack3 libnfnetlink0



DNSMasqの設定

内部向けDNSサーバを設定する。

sudo vi /etc/dnsmasq.conf


# /etc/dnsmasq.confファイル

# DNSサーバのポート番号の指定
port=53

# ドメイン名および.(ドット)を付加しないクエリの場合、上位のDNSサーバに転送しない
# また、外部のDNSへ問い合わせをする場合は、ホスト名では問い合わせない
domain-needed

# プライベートIPアドレスの逆引きを、上位のDNSサーバに転送しない
bogus-priv

# LANで使用する内部ドメインの指定
#local=/suse.com/

# 任意のIPアドレスに強制的に接続させたいドメインを追加
address=/suse.com/192.168.1.XX

# 名前解決で参照するためのファイルにおいて、デフォルトの/etc/hostsファイルは使用しない
no-hosts

# /etc/hosts-dnsmasqファイルをDNSのレコードとして使用する
addn-hosts=/etc/hosts-dnsmasq

# 名前解決で参照するためのファイルを指定
# ドメイン名のないクエリに対して、自動的にドメイン(domain項目で記述する)を付加する
expand-hosts

# ドメインを付加しないホスト名の問い合わせの場合、自動的にdomain=で指定されたドメイン名を補完する
# 例. ホスト名sleで問い合わせがある時、domain=で指定しているsuse.comを自動的に追加して、sle.suse.comで返す
domain=suse.com

# FQDNとIPアドレスの対応を保存するキャッシュサイズを指定
cache-size=10000


名前解決で参照するためのファイルを作成する。
以下の例に記述しているXXやYY等のIPアドレスを、該当するクライアントPCのIPアドレスに変更すること。

sudo vi /etc/hosts-dnsmasq


# /etc/hosts-dnsmasqファイル

192.168.1.XX   raspi  # 内部向けDNSサーバのIPアドレス
192.168.1.YY   pc1    # クライアントPC 1
192.168.1.ZZ   pc2    # クライアントPC 2


上記の設定により、DNSMasqは、以下に示すように動作する。

  1. クライアントPCからDNSサーバ(dnsmasq)へ問い合わせが来る。
  2. ホスト名のみの場合(例. sle)、/etc/hosts-dnsmasqファイルを参照して、名前解決を行う。
  3. ホスト名 + ドメイン名の場合(例. sle.suse.com)、/etc/hosts-dnsmasqファイルを参照して、名前解決を行う。
  4. ドメイン外の場合(例. google.co.jp)、上位のDNSサーバに問い合わせをフォワードする。



DNSMasqの起動

DNSMasqを起動する。
併せて、ファイアーウォールのポート開放も行う。

sudo systemctl start dnsmasq

sudo firewall-cmd --permanent --add-service=dns
# または
sudo firewall-cmd --zone=internal --permanent --add-service=dns 

sudo firewall-cmd --reload



DNSMasqの停止

DNSMasqを停止する。
併せて、ファイアーウォールのポートも閉じる。

sudo systemctl stop dnsmasq

sudo firewall-cmd --permanent --remove-service=dns
# または
sudo firewall-cmd --zone=internal --permanent --add-service=dns

sudo firewall-cmd --reload



クライアントPCの設定

まず、ドメイン検索の設定を行う。

  • KDEを使用している場合
    1. [KDEシステム設定]を起動して、[接続]を選択する。
    2. [接続]画面左の接続名を選択して、[接続]画面右の[IPv4]タブ - [DNSサーバ:]項目に内部向けDNSサーバのIPアドレスを追加する。
    3. 同様に、[接続]画面右の[IPv4]タブ - [検索ドメイン:]項目に内部向けDNSサーバのドメイン名を入力する。
      例えば、DNSサーバ名がns.suse.comの場合、suse.comと入力する。

  • リゾルバファイルを編集する場合
    /etc/resolv.confファイルにおいて、内部向けDNSサーバのドメイン名を入力する。
    例えば、DNSサーバ名がns.suse.comの場合、suse.comと入力する。
    sudo vi /etc/resolv.conf

    domain suse.com
    または
    search suse.com

    編集後、/etc/resolv.confファイルを更新する。
    sudo netconfig update -f


次に、クライアントPCのネットワークを再起動する。

  • systemctlコマンドを使用する場合
    sudo systemctl restart NetworkManager
  • nmcliコマンドを使用する場合
    NetworkManagerの全てのインターフェイスを停止した後、それらを起動する。
    sudo nmcli networking off && sudo nmcli networking on

  • Linuxを再起動する場合
    sudo shutdown -r now



ドメイン名の正引きおよび逆引きの確認

各クライアントPCの正引きおよび逆引きができるかどうかを確認する。

digコマンドの基本的な使用方法を以下に示す。

# OSに設定されているDNSサーバに問い合わせ
dig <問い合わせをするホスト名>

# @以下で指定したDNSサーバに問い合わせ
dig @<DNSサーバのIPアドレス> <問い合わせをするホスト名>

# IPアドレスからの逆引き
dix -x <IPアドレス>


nslookup ns.suse.com   # 内部向けDNSサーバの正引き
nslookup pc1.suse.com  # クライアントPC 1の正引き
nslookup pc2.suse.com  # クライアントPC 2の正引き
nslookup pc3.suse.com  # クライアントPC 3の正引き

nslookup 192.168.1.XX  # 内部向けDNSサーバの逆引き
nslookup 192.168.1.YY  # クライアントPC 1の逆引き
nslookup 192.168.1.ZZ  # クライアントPC 2の逆引き
nslookup 192.168.1.AA  # クライアントPC 3の逆引き

# 再帰問い合わせが無効の場合(recursion項目がnoの場合)
dig @<該当PCのIPアドレス> <該当PCのドメイン名>
例1. dig @192.168.10.5 ns.suse.net
例2. dig @192.168.10.6 pc01.suse.net