Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Dnsmasqのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Dnsmasq
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{Lowercase title}} [[Category:ドメインネームシステム]] [[de:Dnsmasq]] [[en:Dnsmasq]] [[es:Dnsmasq]] [[pt:Dnsmasq]] [[zh-hans:Dnsmasq]] {{Lowercase_title}} dnsmasq は、[[Wikipedia:ja:DNSサーバ|DNS サーバー]]、[[Wikipedia:ja:DHCPv6|DHCPv6]] と [[Wikipedia:ja:Preboot Execution Environment|PXE]] をサポートする [[Wikipedia:ja:Dynamic Host Configuration Protocol|DHCP サーバー]] および [[Wikipedia:ja:Trivial File Transfer Protocol|TFTP サーバー]] を提供します。また、dnsmasq は DNS クエリをキャッシュし、過去に訪問したことのあるサイトへの DNS 検索速度を向上させるように設定することができます。 == インストール == {{Pkg|dnsmasq}} パッケージを [[インストール]] します。次に、{{ic|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 あるいは、ネットワークインターフェイスを割り当てることもできます。 interface=enp5s0 キャッシュされるドメイン名の数を {{ic|1=cache-size=''size''}} で設定します(デフォルトは {{ic|150}} です。) cache-size=10000 [[DNSSEC]] の検証には、{{Pkg|dnsmasq}} パッケージが提供する DNSSEC トラストアンカーを読み込み、オプション {{ic|dnssec}} を設定します。 conf-file=/usr/share/dnsmasq/trust-anchors.conf dnssec 使いたいオプションは {{man|8|dnsmasq}} を参照してください。 ==== DNSアドレスファイルと転送 ==== dnsmasqを設定した後、{{ic|/etc/resolv.conf}} にローカルホストアドレスを唯一のネームサーバーとして追加する必要があります。これにより、すべてのクエリが dnsmasq に送信されるようになります。 dnsmasq はスタブリゾルバであり、リカーシブリゾルバではないため、外部 DNS サーバーへの転送を設定する必要があります。これは、[[openresolv]] を使用して自動的に行うか、dnsmasq の設定で DNS サーバーアドレスを手動で指定することで実行できます。 ===== 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#テスト]] をご覧ください。 === 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>}} === アドレスの上書き === キャプティブポータルを使用する場合など、特定の場面では特定のドメインをハードコードされたアドレスセットに解決するのが役に立つ場合があります。{{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/ {{Note|{{ic|/etc/hosts}} ファイルとは異なり、dnsmasq はこれらのドメインと、''subdomain.blocked.example'' などのすべてのサブドメインをブロックします。}} ワイルドカードもサポートされています。パターンの先頭に {{ic|*}} を追加します: # blocks both ''blocked.example'' and ''anotherblocked.example'' and all their subdomains address=/*blocked.example/ # blocks subdomains like ''mail.google.com'' but not ''google.com'' address=/*.google.com/ 一部の特定のサブドメインは、サーバーアドレスとして {{ic|#}} を使用してブロックを解除できます: # blocks ''google.com'' and all subdomains except ''mail.google.com''. address=/google.com/ server=/mail.google.com/# {{Note| * オプション {{ic|1=address=/example.com/}} と {{ic|1=server=/example.com/}} は等価です。どちらも NXDOMAIN でクエリに答えます。 * {{ic|1=address=/example.com/#}} と {{ic|1=server=/example.com/#}} は等価ではありません。 ** {{ic|1=address=/example.com/#}} は、NULL アドレス (0.0.0.0 または IPv6 の ::) を持つドメインに対するクエリに応答します。 ** {{ic|1=server=/example.com/#}} は、ドメインに対するクエリを、標準設定されているサーバーに送ります。 * パターン {{ic|/example.com/}} と {{ic|/.example.com/}} は等価です。どちらも ''example.com'' とそのすべてのサブドメインにマッチします。 }} 使いやすいようにブロックリストを別のファイル、例えば {{ic|/etc/dnsmasq.d/blocklist.conf}} に置き、{{ic|/etc/dnsmasq.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 の広告ブロックパッケージの README] にリストがあります。 * hostsファイルのブロックリストは {{ic|1=addn-hosts=hosts.txt}} オプションで使うこともできますし、以下の awk コマンドで dnsmasq ブロックリストに変換することもできます: {{ic|1=awk '/^[^#]/ { print "address=/"$2"/"$1"" }' hosts.txt}} }} == 参照 == * [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のソースを表示
話題を追加