Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Dnsmasqのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Dnsmasq
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{Lowercase title}} [[Category:Domain Name System]] [[en:Dnsmasq]] [[es:Dnsmasq]] [[it:Dnsmasq]] [[pt:Dnsmasq]] [[ru:Dnsmasq]] [[zh-hans:Dnsmasq]] {{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|インストール]]してください。 == デーモンの起動 == {{ic|dnsmasq.service}} を [[systemd#ユニットを使う|スタート/有効化]] します。 dnsmasq が正常に起動したかどうかは、システムの [[systemd/ジャーナル|ジャーナル]] を確認します。 # journalctl -u dnsmasq.service また、DHCP クライアントが新しい {{ic|/etc/resolv.conf}} を作成できるように、ネットワークを再起動する必要があります。 == 設定 == dnsmasq を設定するには、{{ic|/etc/dnsmasq.conf}} を編集します。 ファイルにはオプションを説明するコメントが含まれています。 利用可能なすべてのオプションについては {{man|8|dnsmasq}} を参照してください。 {{Note|dnsmasq のデフォルト設定では、 DNS サーバーが有効になります。 必要ない場合は、{{ic|1=port=0}} を設定することで明示的に無効にする必要があります。 dnsmasq をローカル DNS リゾルバとして使用しない場合は、{{ic|nss-lookup.target}} をプルインしないように [https://wiki.archlinux.jp/index.php/Systemd#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E7.B7.A8.E9.9B.86 編集]{{ic|dnsmasq.service}}} して下さい。 {{hc|/etc/systemd/system/dnsmasq.service.d/no-nss-lookup-target.conf|2= [Unit] Wants= }} }} {{Tip|構成ファイルの構文をチェックするには、以下を実行します: $ dnsmasq --test }} === DNS サーバー === dnsmasq を1台のコンピュータで DNS キャッシュデーモンとして設定するには、 {{ic|listen-address}} ディレクティブでローカルホストの IP アドレスを追加してください。 listen-address=::1,127.0.0.1 このコンピュータを使用して、ネットワーク上の他のコンピュータの LAN IP アドレスをリッスンします。この場合、静的 LAN IP を使用することをお勧めします。例 listen-address=::1,127.0.0.1,192.168.1.1 キャッシュされるドメイン名の数を {{ic|1=cache-size=''size''}} で設定します(デフォルトは {{ic|150}} で、ハードリミットは {{ic|10000}} です。) cache-size=1000 [[DNSSEC]] の検証には、{{Pkg|dnsmasq}} パッケージが提供する DNSSEC トラストアンカーを読み込み、オプション {{ic|dnssec}} を設定します。 conf-file=/usr/share/dnsmasq/trust-anchors.conf dnssec 使いたいオプションは {{man|8|dnsmasq}} を参照してください。 ==== DNS アドレスファイル ==== dnsmasq を設定した後は、DHCP クライアントが {{ic|/etc/resolv.conf}} にある既知の DNS アドレスの前にローカルホストのアドレスを挿入させるようにする必要があります。これによって外部の DNS でクエリを解決しようとする前に全てのクエリが dnsmasq に送られるようになります。DHCP クライアントを設定した後は変更を適用するためにネットワークを再起動してください。 ===== openresolv ===== ネットワークマネージャが ''resolvconf'' をサポートしていれば、{{ic|/etc/resolv.conf}} を直接変更する代わりに、 [[openresolv]] を使って [https://roy.marples.name/projects/openresolv/configuration/ dnsmasq の設定ファイルを生成] することができます。 {{ic|/etc/resolvconf.conf}} を編集し、ループバックアドレスをネームサーバとして追加し、dnsmasq 設定を書き出すように openresolv を設定します。 {{hc|/etc/resolvconf.conf|2= # Use the local name server name_servers="::1 127.0.0.1" resolv_conf_options="trust-ad" # Write out dnsmasq extended configuration and resolv files dnsmasq_conf=/etc/dnsmasq-conf.conf dnsmasq_resolv=/etc/dnsmasq-resolv.conf }} {{ic|resolvconf-u}} を実行して、構成ファイルを作成します。ファイルが存在しない場合、{{ic|dnsmasq.service}} は起動に失敗します。 dnsmasq の設定ファイルを編集して、openresolv が生成した設定を使用します [https://roy.marples.name/projects/openresolv/configuration/resolvers/dnsmasq/] # Read configuration generated by openresolv conf-file=/etc/dnsmasq-conf.conf resolv-file=/etc/dnsmasq-resolv.conf ===== 手動転送 ===== まず、{{ic|/etc/resolv.conf}} でネームサーバーとして localhost のアドレスのみを設定する必要があります。 {{hc|/etc/resolv.conf| nameserver ::1 nameserver 127.0.0.1 options trust-ad }} [[ドメイン名前解決#/etc/resolv.conf の書き込み保護]] の説明に従って、{{ic|/etc/resolv.conf}} を上書きから保護していることを確認してください。 その後、dnsmasq の設定ファイルに {{ic|1=server=''server_address''}} として上流の DNS サーバのアドレスを指定する必要があります。また、{{ic|/etc/resolv.conf}} を読み込んで、dnsmasq が自分自身のローカルホストのアドレスだけを読み込むことがないように、{{ic|no-resolv}} を追加してください。 {{hc|/etc/dnsmasq.conf|2= [...] no-resolv # Google's nameservers, for example server=8.8.8.8 server=8.8.4.4 }} これでDNSクエリは dnsmasq で解決され、キャッシュからクエリに答えられない場合のみ外部サーバをチェックするようになります。 ==== カスタムドメインの追加 ==== (ローカル) ネットワークの hosts にカスタムドメインを追加することができます: local=/home.lan/ domain=home.lan この例では {{ic|hostname.home.lan}} を (hosts ファイルに定義されている) ホスト/デバイスとして ping できます。 hosts エントリにカスタムドメインを追加するには {{ic|expand-hosts}} をアンコメントしてください: expand-hosts この設定を使わない場合、{{ic|/etc/hosts}} のエントリにドメインを追加する必要があります。 ==== テスト ==== dnsmasq を起動してから一度も訪問していないウェブサイトを選択して、検索速度をテストします(''drill''は {{Pkg|ldns}}パッケージの一部です) $ drill archlinux.org | grep "Query time" 再度コマンドを実行すると、キャッシュされた DNS IP が使用され、dnsmasq が正しく設定されていれば、検索時間はより速くなります。 {{hc|$ drill archlinux.org {{!}} grep "Query time"| ;; Query time: 18 msec }} {{hc|$ drill archlinux.org {{!}} grep "Query time"| ;; Query time: 2 msec }} DNSSEC の検証が機能しているかどうかを調べるには、[[DNSSEC#テスト]] をご覧ください。 === NetworkManager === [[NetworkManager]] には dnsmasq を使って DNS を有効化するプラグインがあります。DNS ルックアップがキャッシュされることにより、解決時間が短くなったり、VPN ホストの DNS ルックアップを該当する VPS の DNS サーバーに転送することができます (複数の VPN に接続する場合に特に有用です)。 {{Pkg|dnsmasq}} がインストールされていること、ただし無効化されていることを確認してください。それから、{{ic|/etc/NetworkManager/NetworkManager.conf}} を編集して {{ic|[main]}} セクションの {{ic|dns}} を変更してください: {{hc|/etc/NetworkManager/NetworkManager.conf|<nowiki> [main] ... dns=dnsmasq </nowiki>}} NetworkManager を再起動するかマシンを再起動してください。NetworkManager は自動的に dnsmasq を起動して 127.0.0.1 を {{ic|/etc/resolv.conf}} に追加します。実際の DNS サーバーは {{ic|/run/NetworkManager/resolv.conf}} で確認できます。({{Pkg|bind-tools}}{{Broken package link|置換パッケージ: {{Pkg|bind}}}} でインストールできる) {{ic|$ dig example.com}} を使って何回か DNS ルックアップを実行してみて dnsmasq が使われていることを確認してください。 ==== カスタム設定 ==== {{ic|/etc/NetworkManager/dnsmasq.d/}} にカスタム設定ファイルを作成することで ''dnsmasq'' のためのカスタム設定を作ることができます。例えば、DNS キャッシュの容量を変更するには (RAM に保存されます): {{hc|/etc/NetworkManager/dnsmasq.d/cache.conf|2=cache-size=1000}} ==== IPv6 ==== NetworkManager で {{ic|dnsmasq}} を有効にすると IPv6 の DNS ルックアップ ({{ic|dig -6 [hostname]}}) が出来なくなります。この問題を解決するには、以下のファイルを作成して IPv6 のループバックも受信するように ''dnsmasq'' を設定します: {{hc|/etc/NetworkManager/dnsmasq.d/ipv6_listen.conf|2= listen-address=::1 }} さらに、{{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, ...}}。 === テスト === ルックアップの速度をテストするには、dnsmasq を起動してから訪れたことのないウェブサイトを選択してください ({{ic|dig}} は {{Pkg|bind-tools}}{{Broken package link|置換パッケージ: {{Pkg|bind}}}} パッケージに入っています): $ 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 サーバー === dnsmasq はデフォルトでは DHCP 機能がオフになっていますので、使用したい場合はオンにする必要があります。 以下、重要な設定項目です。 {{bc|1= # Only listen to routers' LAN NIC. Doing so opens up tcp/udp port 53 to localhost and udp port 67 to world: interface=''enp0s0'' # 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 # Optionally set a domain name domain=''example.org'' # Set default gateway dhcp-option=3,0.0.0.0 # Set DNS servers to announce dhcp-option=6,0.0.0.0 # If your dnsmasq server is also doing the routing for your network, you can use option 121 to push a static route out. # x.x.x.x is the destination LAN, yy is the CIDR notation (usually /24), and z.z.z.z is the host which will do the routing. dhcp-option=121,x.x.x.x/yy,z.z.z.z # Dynamic range of IPs to make available to LAN PC and the lease time. # Ideally set the lease time to 5m only at first to test everything works okay before you set long-lasting records. dhcp-range=192.168.111.50,192.168.111.100,12h # Provide IPv6 DHCP leases, the range is constructed using the network interface as prefix dhcp-range=::f,::ff,constructor:''enp0s0'' # If you’d like to have dnsmasq assign static IPs to some clients, bind the LAN computers NIC MAC addresses: dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50 dhcp-host=aa:bb:cc:ff:dd:ee,192.168.111.51}} その他のオプションについては {{man|8|dnsmasq}} を参照してください。 ==== プロキシDHCP ==== ネットワーク上にすでに DHCP サーバーがあり、それと相互運用したい場合、dnsmasq を ''プロキシ DHCP'' として動作させ、[[#PXEサーバー]] 固有の情報のみをクライアントに提供するように設定することが可能です。このモードは IPv4 でのみ利用可能です。以下の構文を使用し、既存の DHCP サーバーのアドレスを指定します。 dhcp-range=192.168.0.1,proxy ==== テスト ===== dnsmasq がインストールされているコンピュータに接続し、DHCP を使用して IP アドレスを自動的に割り当てるように設定し、ネットワークに正常にログインすることを試みます。 サーバ上の {{ic|/var/lib/misc/dnsmasq.leases}} ファイルを調査すると、リースが確認できるはずです。 == TFTP サーバーの設定 == 転送ファイルを保存する TFTP のルートディレクトリ (例: {{ic|/srv/tftp}}) を作成してください。 dnsmasq の TFTP セキュアモードを使うには TFTP のルートディレクトリとファイルの所有者を全て {{ic|dnsmasq}} ユーザーに[[Chown|設定]]してください。 {{ic|dnsmasq.conf}} で TFTP を有効化: {{hc|/etc/dnsmasq.conf|<nowiki> enable-tftp tftp-root=/srv/tftp tftp-secure </nowiki>}} == PXE の設定 == PXE を使うには DHCP と TFTP サーバーが必要ですが、どちらの機能も dnsmasq によって提供されています. {{Tip|dnsmasq を使って既存の DHCP サーバーを使ってネットワークに PXE ブートオプションを追加することもできます: {{hc|/etc/dnsmasq.conf|2= interface=''enp0s0'' bind-dynamic dhcp-range=''192.168.0.1'',proxy}} }} # [[#TFTP サーバーの設定|TFTP サーバー]]と [[#DHCP サーバーの設定|DHCP サーバー]]を設定 # 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] を見てください。}} 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" 後はブートローダー次第です。 == ヒントとテクニック == === OpenDNS が Google へのクエリをリダイレクトするのを止める === OpenDNS が全ての Google クエリを OpenDNS の検索サーバーにリダイレクトを止めさせるには、以下を {{ic|/etc/dnsmasq.conf}} に追加してください: {{bc|1=server=/www.google.com/<ISP DNS IP>}} === リースを表示する === {{bc|$ cat /var/lib/misc/dnsmasq.leases}} === アドレスの上書き === キャプティブポータルを使用する場合など、特定の場面では特定のドメインをハードコードされたアドレスセットに解決するのが役に立つ場合があります。{{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]] では上記がデフォルトです。}} === ドメインのブロックリスト化 === ドメインをブロックリスト化する、つまり NXDOMAIN でドメインに対するクエリに答えるには、IP アドレスを指定せずに {{ic|address}} オプションを使用します。 address=/blocked.example/ address=/anotherblocked.example/ ブロックリストを別のファイル、例えば {{ic|/etc/dnsmasq.d/blocklist.conf}} に置き、 {{ic|1=conf-file=/etc/dnsmasq.d/blocklist.conf}} または {{ic|1=conf-dir=/etc/dnsmasq.d/,*.conf}} でロードすると使い勝手がよいです。 {{Tip|ブロックリストのソース候補のリストは [https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md OpenWrt の adblock パッケージの README] で見ることができます。}} == 参照 == * [http://www.g-loaded.eu/2010/09/18/caching-nameserver-using-dnsmasq/ Caching Nameserver using dnsmasq, and a few other tips and tricks.]
このページで使用されているテンプレート:
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Lowercase title
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
Dnsmasq
に戻る。
検索
検索
Dnsmasqのソースを表示
話題を追加