設定 - DNSMasq
ナビゲーションに移動
検索に移動
概要
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は、以下に示すように動作する。
- クライアントPCからDNSサーバ(dnsmasq)へ問い合わせが来る。
- ホスト名のみの場合(例. sle)、/etc/hosts-dnsmasqファイルを参照して、名前解決を行う。
- ホスト名 + ドメイン名の場合(例. sle.suse.com)、/etc/hosts-dnsmasqファイルを参照して、名前解決を行う。
- ドメイン外の場合(例. 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を使用している場合
- [KDEシステム設定]を起動して、[接続]を選択する。
- [接続]画面左の接続名を選択して、[接続]画面右の[IPv4]タブ - [DNSサーバ:]項目に内部向けDNSサーバのIPアドレスを追加する。
- 同様に、[接続]画面右の[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