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|インストール]]してください。 == 設定 == dnsmasq を設定するには {{ic|/etc/dnsmasq.conf}} を編集する必要があります。ファイルにはオプションに関して詳しいコメントが付いています。 {{Warning|dnsmasq はデフォルトで DNS サーバーを有効にします。DNS サーバーが不要の場合、DNS ポートを {{ic|0}} に設定して明示的に無効化する必要があります: {{hc|/etc/dnsmasq.conf|2=port=0}} }} {{Tip|設定ファイルをチェックしたい場合、次のコマンドを実行してください: {{ic|$ dnsmasq --test}}。}} == DNS キャッシュの設定 == 単一のコンピュータ上で dnsmasq を DNS キャッシュデーモンとしてセットアップするには {{ic|/etc/dnsmasq.conf}} を編集して {{ic|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 クライアントが {{ic|/etc/resolv.conf}} にある既知の DNS アドレスの前にローカルホストのアドレスを挿入させるようにする必要があります。これによって外部の DNS でクエリを解決しようとする前に全てのクエリが dnsmasq に送られるようになります。DHCP クライアントを設定した後は変更を適用するためにネットワークを再起動してください。 ==== resolv.conf ==== まず一つ目の選択肢は {{ic|resolv.conf}} の設定です。これを使うには、{{ic|/etc/resolv.conf}} の一番上のネームサーバをローカルホストに変えて下さい: {{hc|/etc/resolv.conf| nameserver 127.0.0.1 # External nameservers ... }} これで DNS クエリは最初に dnsmasq によって解決されるようになります。dnsmasq がクエリを解決できなかった場合にのみ外部のサーバーが使用されます。残念ながら、{{Pkg|dhcpcd}} はデフォルトで {{ic|/etc/resolv.conf}} を上書きするようになっているので、DHCP を使っている場合は {{ic|/etc/resolv.conf}} を保護すると良いでしょう。保護するには、dhcpcd の設定ファイルに {{ic|nohook resolv.conf}} を追加してください: {{hc|/etc/dhcpcd.conf| ... nohook resolv.conf}} resolv.conf の書き込みを保護することも可能です: # chattr +i /etc/resolv.conf ===== 3つ以上のネームサーバ ===== Linux による DNS クエリの処理には {{ic|resolv.conf}} で使えるネームサーバは3つまでという制約があります。対応策として、{{ic|resolv.conf}} にはローカルホストのネームサーバだけを記述して、外部のネームサーバ用に {{ic|resolv-file}} を分けて作成する方法があります。まず、dnsmasq のための resolv ファイルを新しく作成してください: {{hc|/etc/resolv.dnsmasq.conf| # Google's nameservers, for example nameserver 8.8.8.8 nameserver 8.8.4.4 }} それから {{ic|/etc/dnsmasq.conf}} を新しい resolv ファイルを使用するように編集してください: {{hc|/etc/dnsmasq.conf| ... resolv-file=/etc/resolv.dnsmasq.conf ... }} ==== dhcpcd ==== [[dhcpcd|dhcpcd]] には {{ic|/etc/resolv.conf}} にネームサーバを前と後ろに追加する機能があります。それぞれ {{ic|/etc/resolv.conf.head}} と {{ic|/etc/resolv.conf.tail}} ファイルを作成します: echo "nameserver 127.0.0.1" > /etc/resolv.conf.head ==== dhclient ==== {{Pkg|dhclient}} の場合、{{ic|/etc/dhclient.conf}} の以下の部分をアンコメントしてください: prepend domain-name-servers 127.0.0.1; === 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}} でインストールできる) {{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}} パッケージに入っています): $ 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 機能は無効にされているため、使用したいときは {{ic|/etc/dnsmasq.conf}} で有効にする必要があります。以下は中心となる設定です: {{bc|<nowiki> # 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 </nowiki>}} === テスト === dnsmasq が動いているコンピュータに接続されたコンピュータから、DHCP を使って IP アドレスを自動的に割り当てるように設定し、ネットワークに通常通りにログインしてください。 == 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" 後はブートローダー次第です。 == デーモンの起動 == {{ic|dnsmasq.service}} を[[起動]]・[[有効化]]してください。 dnsmasq が正しく起動したか確認するには、システムの journal をチェック: {{bc|$ journalctl -u dnsmasq}} DHCP クライアントが {{ic|/etc/resolv.conf}} を新しく作成できるようにネットワークの再起動も必要です。 == ヒントとテクニック == === 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}} === カスタムドメインの追加 === (ローカル) ネットワークの hosts にカスタムドメインを追加することができます: local=/home.lan/ domain=home.lan この例では {{ic|hostname.home.lan}} を (hosts ファイルに定義されている) ホスト/デバイスとして ping できます。 hosts エントリにカスタムドメインを追加するには {{ic|expand-hosts}} をアンコメントしてください: expand-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.]
このページで使用されているテンプレート:
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Lowercase title
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
Dnsmasq
に戻る。
検索
検索
Dnsmasqのソースを表示
話題を追加