「Dnsmasq」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→DNS キャッシュの設定: 項目を追加) |
(同期) |
||
1行目: | 1行目: | ||
+ | {{Lowercase title}} |
||
[[Category:Domain Name System]] |
[[Category:Domain Name System]] |
||
[[en:Dnsmasq]] |
[[en:Dnsmasq]] |
||
8行目: | 9行目: | ||
{{Lowercase_title}} |
{{Lowercase_title}} |
||
− | + | [http://www.thekelleys.org.uk/dnsmasq/doc.html dnsmasq] は DNS キャッシュと DHCP サーバーとしてのサービスを提供します。ドメインネームサーバ (DNS) としては DNS クエリをキャッシュすることで以前に訪れたことのあるサイトへの接続速度を向上させることができ、DHCP サーバーとして dnsmasq は LAN 上のコンピュータに内部 IP アドレスとルートを割り当てるのに使えます。サービスのどちらか、または両方として役立てることが可能です。dnsmasq は軽量で設定が簡単です。個人のコンピュータでの利用や、50以下のコンピュータが繋がったネットワークでの使用を想定して作られています。また、[[PXE]] サーバーも含まれています。 |
|
== インストール == |
== インストール == |
||
[[公式リポジトリ]]から {{Pkg|dnsmasq}} を[[pacman|インストール]]してください。 |
[[公式リポジトリ]]から {{Pkg|dnsmasq}} を[[pacman|インストール]]してください。 |
||
+ | |||
+ | == 設定 == |
||
+ | |||
+ | dnsmasq を設定するには {{ic|/etc/dnsmasq.conf}} を編集する必要があります。ファイルにはオプションに関して詳しいコメントが付いています。 |
||
+ | |||
+ | {{Warning|dnsmasq はデフォルトで DNS サーバーを有効にします。DNS サーバーが不要の場合、DNS ポートを {{ic|0}} に設定して明示的に無効化する必要があります: |
||
+ | {{hc|/etc/dnsmasq.conf|2=port=0}} |
||
+ | }} |
||
+ | |||
+ | {{Tip|設定ファイルをチェックしたい場合、次のコマンドを実行してください: {{ic|$ dnsmasq --test}}。}} |
||
== DNS キャッシュの設定 == |
== DNS キャッシュの設定 == |
||
26行目: | 37行目: | ||
この場合は LAN の固定 ip を使用することが推奨されます。 |
この場合は LAN の固定 ip を使用することが推奨されます。 |
||
− | 複数 IP アドレス設定: |
+ | 複数 IP アドレスの設定: |
− | listen-address=127.0.0.1,192.168.1.1 |
+ | listen-address=127.0.0.1,192.168.1.1 |
=== DNS アドレスファイル === |
=== DNS アドレスファイル === |
||
63行目: | 74行目: | ||
}} |
}} |
||
− | それから |
+ | それから {{ic|/etc/dnsmasq.conf}} を新しい resolv ファイルを使用するように編集してください: |
{{hc|/etc/dnsmasq.conf| |
{{hc|/etc/dnsmasq.conf| |
||
83行目: | 94行目: | ||
prepend domain-name-servers 127.0.0.1; |
prepend domain-name-servers 127.0.0.1; |
||
− | + | === NetworkManager === |
|
+ | [[NetworkManager]] には dnsmasq を使って DNS を有効化するプラグインがあります。DNS ルックアップがキャッシュされることにより、解決時間が短くなったり、VPN ホストの DNS ルックアップを該当する VPS の DNS サーバーに転送することができます (複数の VPN に接続する場合に特に有用です)。 |
||
− | [[NetworkManager]] は設定ファイルから ''dnsmasq'' を起動することができます。{{ic|NetworkManager.conf}} の {{ic|[main]}} セクションに {{ic|1=dns=dnsmasq}} オプションを追加し、{{ic|dnsmasq.service}} が [[systemd]] によってロードされないように無効化してください: |
||
+ | |||
+ | {{Pkg|dnsmasq}} がインストールされていること、ただし無効化されていることを確認してください。それから、{{ic|/etc/NetworkManager/NetworkManager.conf}} を編集して {{ic|[main]}} セクションの {{ic|dns}} を変更してください: |
||
{{hc|/etc/NetworkManager/NetworkManager.conf|<nowiki> |
{{hc|/etc/NetworkManager/NetworkManager.conf|<nowiki> |
||
[main] |
[main] |
||
+ | ... |
||
− | plugins=keyfile |
||
dns=dnsmasq |
dns=dnsmasq |
||
</nowiki>}} |
</nowiki>}} |
||
+ | NetworkManager を再起動するかマシンを再起動してください。NetworkManager は自動的に dnsmasq を起動して 127.0.0.1 を {{ic|/etc/resolv.conf}} に追加します。実際の DNS サーバーは {{ic|/run/NetworkManager/resolv.conf}} で確認できます。({{Pkg|bind-tools}} でインストールできる) {{ic|$ dig example.com}} を使って何回か DNS ルックアップを実行してみて dnsmasq が使われていることを確認してください。 |
||
− | {{ic|/etc/NetworkManager/dnsmasq.d/}} にカスタム設定ファイルを作成することで ''dnsmasq'' のためのカスタム設定を作ることができます。例えば、DNS キャッシュの容量を変更するには (RAM に保存されます): |
||
+ | ==== カスタム設定 ==== |
||
− | {{hc|/etc/NetworkManager/dnsmasq.d/cache|2= |
||
− | cache-size=1000 |
||
− | }} |
||
+ | {{ic|/etc/NetworkManager/dnsmasq.d/}} にカスタム設定ファイルを作成することで ''dnsmasq'' のためのカスタム設定を作ることができます。例えば、DNS キャッシュの容量を変更するには (RAM に保存されます): |
||
− | {{ic|NetworkManager}} によって ''dnsmasq'' が起動されると、デフォルトの設定ファイルの代わりにこのディレクトリにある設定ファイルが使われます。 |
||
+ | {{hc|/etc/NetworkManager/dnsmasq.d/cache.conf|2=cache-size=1000}} |
||
− | {{Tip|この方法では特定のドメインで DNS のカスタム設定を有効にすることができます。例えば: {{ic|server=/example1.com/example2.com/xx.xxx.xxx.x}} は {{ic|example1.com, example2.com}} というウェブサイトを見ている時だけ最初の DNS アドレスを {{ic|xx.xxx.xxx.xx}} に変更します。速度や安定性、プライバシーやセキュリティが欠けている特定の DNS ネームサーバを使うときはこの方法をグローバルな DNS 設定にすることを推奨します。}} |
||
==== IPv6 ==== |
==== IPv6 ==== |
||
112行目: | 123行目: | ||
さらに、{{ic|dnsmasq}} は上流の IPv6 DNS を優先させません。残念ながら NetworkManager では優先させることが出来ないようです ([https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/936712 Ubuntu Bug])。NetworkManager の設定で IPv4 の DNS を無効化するのが回避策になります。 |
さらに、{{ic|dnsmasq}} は上流の IPv6 DNS を優先させません。残念ながら NetworkManager では優先させることが出来ないようです ([https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/936712 Ubuntu Bug])。NetworkManager の設定で IPv4 の DNS を無効化するのが回避策になります。 |
||
− | + | ==== 他の方法 ==== |
|
他にも NetworkManager のアプレットを使って設定を手動で入力する方法もあります (通常はアプレットを右クリックします)。設定方法は使用しているフロントエンドの種類によりますが、基本的には、アプレットを右クリックして、プロファイルを編集(または作成)し、DHCP タイプとして 'Automatic (specify addresses)' を選択します。DNS アドレスは次のような形式で入力する必要があります: {{ic|127.0.0.1, DNS-server-one, ...}}。 |
他にも NetworkManager のアプレットを使って設定を手動で入力する方法もあります (通常はアプレットを右クリックします)。設定方法は使用しているフロントエンドの種類によりますが、基本的には、アプレットを右クリックして、プロファイルを編集(または作成)し、DHCP タイプとして 'Automatic (specify addresses)' を選択します。DNS アドレスは次のような形式で入力する必要があります: {{ic|127.0.0.1, DNS-server-one, ...}}。 |
||
+ | |||
+ | === テスト === |
||
+ | |||
+ | ルックアップの速度をテストするには、dnsmasq を起動してから訪れたことのないウェブサイトを選択してください ({{ic|dig}} は {{Pkg|bind-tools}} パッケージに入っています): |
||
+ | |||
+ | $ dig archlinuxjp.org | grep "Query time" |
||
+ | |||
+ | dnsmasq を正しく設定していれば、このコマンドを二回目に実行するとキャッシュされた DNS の IP が使用され、ルックアップの時間が速くなっているはずです: |
||
+ | |||
+ | {{hc|<nowiki>$ dig archlinuxjp.org | grep "Query time"</nowiki>| |
||
+ | ;; Query time: 18 msec |
||
+ | }} |
||
+ | |||
+ | {{hc|<nowiki>$ dig archlinuxjp.org | grep "Query time"</nowiki>| |
||
+ | ;; Query time: 2 msec |
||
+ | }} |
||
== DHCP サーバーの設定 == |
== DHCP サーバーの設定 == |
||
139行目: | 166行目: | ||
</nowiki>}} |
</nowiki>}} |
||
+ | === テスト === |
||
− | == デーモンを起動する == |
||
− | 起動時に dnsmasq をロードするようにするには: |
||
+ | dnsmasq が動いているコンピュータに接続されたコンピュータから、DHCP を使って IP アドレスを自動的に割り当てるように設定し、ネットワークに通常通りにログインしてください。 |
||
− | {{bc|# systemctl enable dnsmasq}} |
||
+ | == TFTP サーバーの設定 == |
||
− | dnsmasq をいますぐ起動するには: |
||
+ | 転送ファイルを保存する TFTP のルートディレクトリ (例: {{ic|/srv/tftp}}) を作成してください。 |
||
− | {{bc|# systemctl start dnsmasq}} |
||
+ | dnsmasq の TFTP セキュアモードを使うには TFTP のルートディレクトリとファイルの所有者を全て {{ic|dnsmasq}} ユーザーに[[Chown|設定]]してください。 |
||
− | dnsmasq が正しく起動したか見るには、システムの journal を確認してください: |
||
− | {{ |
+ | {{ic|dnsmasq.conf}} で TFTP を有効化: |
+ | {{hc|/etc/dnsmasq.conf|<nowiki> |
||
+ | enable-tftp |
||
+ | tftp-root=/srv/tftp |
||
+ | tftp-secure |
||
+ | </nowiki>}} |
||
+ | == PXE の設定 == |
||
− | DHCP クライアントが新しい {{ic|/etc/resolv.conf}} を作れるようにネットワークも再起動する必要があります。 |
||
+ | PXE を使うには DHCP と TFTP サーバーが必要ですが、どちらの機能も dnsmasq によって提供されています. |
||
− | == テスト == |
||
− | === DNS キャッシュ === |
||
+ | {{Tip|dnsmasq を使って既存の DHCP サーバーを使ってネットワークに PXE ブートオプションを追加することもできます: |
||
− | ルックアップの速度をテストするには、dnsmasq を起動してから訪れたことのないウェブサイトを選択してください ({{ic|dig}} は {{Pkg|bind-tools}} パッケージに入っています): |
||
+ | {{hc|/etc/dnsmasq.conf|2= |
||
+ | interface=''enp0s0'' |
||
+ | bind-dynamic |
||
+ | dhcp-range=''192.168.0.1'',proxy}} |
||
+ | }} |
||
+ | # [[#TFTP サーバーの設定|TFTP サーバー]]と [[#DHCP サーバーの設定|DHCP サーバー]]を設定 |
||
− | $ dig archlinux.org | grep "Query time" |
||
+ | # PXE 互換のブートローダー (例: [[Syslinux#Pxelinux|PXELINUX]]) を TFTP のルートにコピーして設定 |
||
+ | # {{ic|/etc/dnsmasq.conf}} で PXE を有効化: |
||
+ | {{Note| |
||
+ | *ファイルのパスは TFTP ルートからの相対パスです。 |
||
+ | *ファイルに {{ic|.0}} 拡張子が付く場合、{{ic|pxe-service}} オプションで拡張子を除外する必要があります。 |
||
+ | }} |
||
+ | ファイルを送信するには: |
||
+ | dhcp-boot=lpxelinux.0 |
||
+ | クライアントアーキテクチャに応じてファイルを送信するには: |
||
+ | pxe-service=x86PC, "PXELINUX (BIOS)", "bios/lpxelinux" |
||
+ | pxe-service=X86-64_EFI, "PXELINUX (EFI)", "efi64/syslinux.efi" |
||
+ | {{Note|{{ic|pxe-service}} が機能しない場合 (特に UEFI を使用するクライアントの場合)、{{ic|dhcp-match}} と {{ic|dhcp-boot}} を組み合わせることができます。dhcp 起動プロトコルで使用する {{ic|client-arch}} の数について詳しくは [https://tools.ietf.org/html/rfc4578#section-2.1 RFC4578] を見てください。}} |
||
− | dnsmasq を正しく設定していれば、このコマンドを二回目に実行するとキャッシュされた DNS の IP が使用され、ルックアップの時間が速くなっているはずです: |
||
+ | dhcp-match=set:efi-x86_64,option:client-arch,7 |
||
+ | dhcp-match=set:efi-x86_64,option:client-arch,9 |
||
+ | dhcp-match=set:efi-x86,option:client-arch,6 |
||
+ | dhcp-match=set:bios,option:client-arch,0 |
||
+ | dhcp-boot=tag:efi-x86_64,"efi64/syslinux.efi" |
||
+ | dhcp-boot=tag:efi-x86,"efi32/syslinux.efi" |
||
+ | dhcp-boot=tag:bios,"bios/lpxelinux.0" |
||
+ | 後はブートローダー次第です。 |
||
− | {{hc|<nowiki>$ dig archlinux.org | grep "Query time"</nowiki>| |
||
− | ;; Query time: 18 msec |
||
− | }} |
||
+ | == デーモンの起動 == |
||
− | {{hc|<nowiki>$ dig archlinux.org | grep "Query time"</nowiki>| |
||
− | ;; Query time: 2 msec |
||
− | }} |
||
+ | {{ic|dnsmasq.service}} を[[起動]]・[[有効化]]してください。 |
||
− | === DHCP サーバー === |
||
+ | dnsmasq が正しく起動したか確認するには、システムの journal をチェック: |
||
− | dnsmasq が動いているコンピュータに接続されたコンピュータから、DHCP を使って IP アドレスを自動的に割り当てるように設定し、ネットワークに通常通りにログインしてください。 |
||
+ | |||
+ | {{bc|$ journalctl -u dnsmasq}} |
||
+ | |||
+ | DHCP クライアントが {{ic|/etc/resolv.conf}} を新しく作成できるようにネットワークの再起動も必要です。 |
||
== Tips and tricks == |
== Tips and tricks == |
||
195行目: | 248行目: | ||
expand-hosts |
expand-hosts |
||
この設定を使わない場合、{{ic|/etc/hosts}} のエントリにドメインを追加する必要があります。 |
この設定を使わない場合、{{ic|/etc/hosts}} のエントリにドメインを追加する必要があります。 |
||
+ | |||
+ | === アドレスの上書き === |
||
+ | |||
+ | キャプティブポータルを使用する場合など、特定の場面では特定のドメインをハードコードされたアドレスセットに解決するのが役に立つ場合があります。{{ic|address}} の設定で解決できます: |
||
+ | |||
+ | address=/example.com/1.2.3.4 |
||
+ | |||
+ | さらに、特殊なワイルドカードを使うことで {{ic|/etc/hosts}} や DHCP が返答がないドメイン名について特定のアドレスを返すようにすることが可能です: |
||
+ | |||
+ | address=/#/1.2.3.4 |
||
+ | |||
+ | === 複数のインスタンスを動作する === |
||
+ | |||
+ | 複数の dnsmasq サーバーをインターフェイスで動作させたい場合: |
||
+ | |||
+ | ==== 固定 ==== |
||
+ | |||
+ | インターフェイスごとに固定のサーバーを使いたい場合、{{ic|interface}} と {{ic|bind-interface}} オプションを使ってください。2番目の dnsmasq が起動するようになります。 |
||
+ | |||
+ | ==== 動的 ==== |
||
+ | |||
+ | インターフェイスを除外して他のインターフェイスにバインドできます: |
||
+ | |||
+ | except-interface=lo |
||
+ | bind-dynamic |
||
+ | |||
+ | {{Note|[[libvirt]] では上記がデフォルトです。}} |
||
+ | |||
+ | == 参照 == |
||
+ | |||
+ | * [http://www.g-loaded.eu/2010/09/18/caching-nameserver-using-dnsmasq/ Caching Nameserver using dnsmasq, and a few other tips and tricks.] |
2016年10月23日 (日) 17:20時点における版
dnsmasq は DNS キャッシュと DHCP サーバーとしてのサービスを提供します。ドメインネームサーバ (DNS) としては DNS クエリをキャッシュすることで以前に訪れたことのあるサイトへの接続速度を向上させることができ、DHCP サーバーとして dnsmasq は LAN 上のコンピュータに内部 IP アドレスとルートを割り当てるのに使えます。サービスのどちらか、または両方として役立てることが可能です。dnsmasq は軽量で設定が簡単です。個人のコンピュータでの利用や、50以下のコンピュータが繋がったネットワークでの使用を想定して作られています。また、PXE サーバーも含まれています。
目次
インストール
公式リポジトリから dnsmasq をインストールしてください。
設定
dnsmasq を設定するには /etc/dnsmasq.conf
を編集する必要があります。ファイルにはオプションに関して詳しいコメントが付いています。
DNS キャッシュの設定
単一のコンピュータ上で dnsmasq を DNS キャッシュデーモンとしてセットアップするには /etc/dnsmasq.conf
を編集して listen-address
ディレクティブをアンコメントし、ローカルホストの IP アドレスを追記してください:
listen-address=127.0.0.1
ネットワーク上の他のコンピュータのために LAN の IP アドレスを受信するようにするには:
listen-address=192.168.1.1 # Example IP
この場合は LAN の固定 ip を使用することが推奨されます。
複数 IP アドレスの設定:
listen-address=127.0.0.1,192.168.1.1
DNS アドレスファイル
dnsmasq を設定した後は、DHCP クライアントが /etc/resolv.conf
にある既知の DNS アドレスの前にローカルホストのアドレスを挿入させるようにする必要があります。これによって外部の DNS でクエリを解決しようとする前に全てのクエリが dnsmasq に送られるようになります。DHCP クライアントを設定した後は変更を適用するためにネットワークを再起動してください。
resolv.conf
まず一つ目の選択肢は resolv.conf
の設定です。これを使うには、/etc/resolv.conf
の一番上のネームサーバをローカルホストに変えて下さい:
/etc/resolv.conf
nameserver 127.0.0.1 # External nameservers ...
これで DNS クエリは最初に dnsmasq によって解決されるようになります。dnsmasq がクエリを解決できなかった場合にのみ外部のサーバーが使用されます。残念ながら、dhcpcd はデフォルトで /etc/resolv.conf
を上書きするようになっているので、DHCP を使っている場合は /etc/resolv.conf
を保護すると良いでしょう。保護するには、dhcpcd の設定ファイルに nohook resolv.conf
を追加してください:
/etc/dhcpcd.conf
... nohook resolv.conf
resolv.conf の書き込みを保護することも可能です:
# chattr +i /etc/resolv.conf
3つ以上のネームサーバ
Linux による DNS クエリの処理には resolv.conf
で使えるネームサーバは3つまでという制約があります。対応策として、resolv.conf
にはローカルホストのネームサーバだけを記述して、外部のネームサーバ用に resolv-file
を分けて作成する方法があります。まず、dnsmasq のための resolv ファイルを新しく作成してください:
/etc/resolv.dnsmasq.conf
# Google's nameservers, for example nameserver 8.8.8.8 nameserver 8.8.4.4
それから /etc/dnsmasq.conf
を新しい resolv ファイルを使用するように編集してください:
/etc/dnsmasq.conf
... resolv-file=/etc/resolv.dnsmasq.conf ...
dhcpcd
dhcpcd には /etc/resolv.conf
にネームサーバを前と後ろに追加する機能があります。それぞれ /etc/resolv.conf.head
と /etc/resolv.conf.tail
ファイルを作成します:
echo "nameserver 127.0.0.1" > /etc/resolv.conf.head
dhclient
dhclient の場合、/etc/dhclient.conf
の以下の部分をアンコメントしてください:
prepend domain-name-servers 127.0.0.1;
NetworkManager
NetworkManager には dnsmasq を使って DNS を有効化するプラグインがあります。DNS ルックアップがキャッシュされることにより、解決時間が短くなったり、VPN ホストの DNS ルックアップを該当する VPS の DNS サーバーに転送することができます (複数の VPN に接続する場合に特に有用です)。
dnsmasq がインストールされていること、ただし無効化されていることを確認してください。それから、/etc/NetworkManager/NetworkManager.conf
を編集して [main]
セクションの dns
を変更してください:
/etc/NetworkManager/NetworkManager.conf
[main] ... dns=dnsmasq
NetworkManager を再起動するかマシンを再起動してください。NetworkManager は自動的に dnsmasq を起動して 127.0.0.1 を /etc/resolv.conf
に追加します。実際の DNS サーバーは /run/NetworkManager/resolv.conf
で確認できます。(bind-tools でインストールできる) $ dig example.com
を使って何回か DNS ルックアップを実行してみて dnsmasq が使われていることを確認してください。
カスタム設定
/etc/NetworkManager/dnsmasq.d/
にカスタム設定ファイルを作成することで dnsmasq のためのカスタム設定を作ることができます。例えば、DNS キャッシュの容量を変更するには (RAM に保存されます):
/etc/NetworkManager/dnsmasq.d/cache.conf
cache-size=1000
IPv6
NetworkManager で dnsmasq
を有効にすると IPv6 の DNS ルックアップ (dig -6 [hostname]
) が出来なくなります。この問題を解決するには、以下のファイルを作成して IPv6 のループバックも受信するように dnsmasq を設定します:
/etc/NetworkManager/dnsmasq.d/ipv6_listen.conf
listen-address=::1
さらに、dnsmasq
は上流の IPv6 DNS を優先させません。残念ながら NetworkManager では優先させることが出来ないようです (Ubuntu Bug)。NetworkManager の設定で IPv4 の DNS を無効化するのが回避策になります。
他の方法
他にも NetworkManager のアプレットを使って設定を手動で入力する方法もあります (通常はアプレットを右クリックします)。設定方法は使用しているフロントエンドの種類によりますが、基本的には、アプレットを右クリックして、プロファイルを編集(または作成)し、DHCP タイプとして 'Automatic (specify addresses)' を選択します。DNS アドレスは次のような形式で入力する必要があります: 127.0.0.1, DNS-server-one, ...
。
テスト
ルックアップの速度をテストするには、dnsmasq を起動してから訪れたことのないウェブサイトを選択してください (dig
は bind-tools パッケージに入っています):
$ dig archlinuxjp.org | grep "Query time"
dnsmasq を正しく設定していれば、このコマンドを二回目に実行するとキャッシュされた DNS の IP が使用され、ルックアップの時間が速くなっているはずです:
$ dig archlinuxjp.org | grep "Query time"
;; Query time: 18 msec
$ dig archlinuxjp.org | grep "Query time"
;; Query time: 2 msec
DHCP サーバーの設定
デフォルトで dnsmasq の DHCP 機能は無効にされているため、使用したいときは /etc/dnsmasq.conf
で有効にする必要があります。以下は中心となる設定です:
# Only listen to routers' LAN NIC. Doing so opens up tcp/udp port 53 to # localhost and udp port 67 to world: interface=<LAN-NIC> # dnsmasq will open tcp/udp port 53 and udp port 67 to world to help with # dynamic interfaces (assigning dynamic ips). Dnsmasq will discard world # requests to them, but the paranoid might like to close them and let the # kernel handle them: bind-interfaces # Dynamic range of IPs to make available to LAN pc dhcp-range=192.168.111.50,192.168.111.100,12h # If you’d like to have dnsmasq assign static IPs, bind the LAN computer's # NIC MAC address: dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50
テスト
dnsmasq が動いているコンピュータに接続されたコンピュータから、DHCP を使って IP アドレスを自動的に割り当てるように設定し、ネットワークに通常通りにログインしてください。
TFTP サーバーの設定
転送ファイルを保存する TFTP のルートディレクトリ (例: /srv/tftp
) を作成してください。
dnsmasq の TFTP セキュアモードを使うには TFTP のルートディレクトリとファイルの所有者を全て dnsmasq
ユーザーに設定してください。
dnsmasq.conf
で TFTP を有効化:
/etc/dnsmasq.conf
enable-tftp tftp-root=/srv/tftp tftp-secure
PXE の設定
PXE を使うには DHCP と TFTP サーバーが必要ですが、どちらの機能も dnsmasq によって提供されています.
- TFTP サーバーと DHCP サーバーを設定
- PXE 互換のブートローダー (例: PXELINUX) を TFTP のルートにコピーして設定
/etc/dnsmasq.conf
で PXE を有効化:
ファイルを送信するには:
dhcp-boot=lpxelinux.0
クライアントアーキテクチャに応じてファイルを送信するには:
pxe-service=x86PC, "PXELINUX (BIOS)", "bios/lpxelinux" pxe-service=X86-64_EFI, "PXELINUX (EFI)", "efi64/syslinux.efi"
dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-match=set:efi-x86,option:client-arch,6 dhcp-match=set:bios,option:client-arch,0 dhcp-boot=tag:efi-x86_64,"efi64/syslinux.efi" dhcp-boot=tag:efi-x86,"efi32/syslinux.efi" dhcp-boot=tag:bios,"bios/lpxelinux.0"
後はブートローダー次第です。
デーモンの起動
dnsmasq.service
を起動・有効化してください。
dnsmasq が正しく起動したか確認するには、システムの journal をチェック:
$ journalctl -u dnsmasq
DHCP クライアントが /etc/resolv.conf
を新しく作成できるようにネットワークの再起動も必要です。
Tips and tricks
OpenDNS が Google へのクエリをリダイレクトするのを止める
OpenDNS が全ての Google クエリを OpenDNS の検索サーバーにリダイレクトを止めさせるには、以下を /etc/dnsmasq.conf
に追加してください:
server=/www.google.com/<ISP DNS IP>
リースを表示する
$ cat /var/lib/misc/dnsmasq.leases
カスタムドメインの追加
(ローカル) ネットワークの hosts にカスタムドメインを追加することができます:
local=/home.lan/ domain=home.lan
この例では hostname.home.lan
を (hosts ファイルに定義されている) ホスト/デバイスとして ping できます。
hosts エントリにカスタムドメインを追加するには expand-hosts
をアンコメントしてください:
expand-hosts
この設定を使わない場合、/etc/hosts
のエントリにドメインを追加する必要があります。
アドレスの上書き
キャプティブポータルを使用する場合など、特定の場面では特定のドメインをハードコードされたアドレスセットに解決するのが役に立つ場合があります。address
の設定で解決できます:
address=/example.com/1.2.3.4
さらに、特殊なワイルドカードを使うことで /etc/hosts
や DHCP が返答がないドメイン名について特定のアドレスを返すようにすることが可能です:
address=/#/1.2.3.4
複数のインスタンスを動作する
複数の dnsmasq サーバーをインターフェイスで動作させたい場合:
固定
インターフェイスごとに固定のサーバーを使いたい場合、interface
と bind-interface
オプションを使ってください。2番目の dnsmasq が起動するようになります。
動的
インターフェイスを除外して他のインターフェイスにバインドできます:
except-interface=lo bind-dynamic