web-dev-qa-db-ja.com

dnsmasqプライベートネームサーバーをnetworkmanagerと連携させる方法

ネットワーキングについて学ぶだけです。

私はMint-18にいます。 network-managerを使用します。 dnsmasqが有効になっています。

特定のドメイン名で終わるアドレスをプライベートネームサーバーで解決してほしい。

serverオプションを使用してprivate-nameserverをdnsmasq構成ファイルに追加すると、すべてが失敗します。 google.comも解決できません。

> nslookup google.com
;; connection timed out; no servers could be reache

serverオプションを削除して\etc\resolve.confの先頭に同じプライベートネームサーバーを追加すると、ネットワークマネージャーが再起動し、プライベートホスト名を解決できます。

> nslookup abcprivate.net
Server:     nn.nn.nn.nn
Address:    nn.nn.nn.nn#53

Non-authoritative answer:
Name:   abcprivate.net
Address: mm.mm.mm.mm

だから私はプライベートネームサーバーが正しいことを知っています。したがって、それは私がdnsmasqを構成している方法でなければなりません。

これが私の設定ファイルです

>cat /etc/NetworkManager/dnsmasq.d/dnsmasq.conf
server=/abcprivate.net/nn.nn.nn.nn

ここで、abcprivate.netはプライベートネットワークのドメイン、nnは数字です。

3
hba

私の設定は正しいことがわかりましたが、使用されていませんでした。

>ps ax | grep dnsmasq
 1273 ?        S      0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d

ご覧のように、confファイルを使用していませんでした...それが事実であることを確認するために、他のいくつかのテストを行いました。


私は問題を解決することになりましたが、次の方法でそれを行いました:

  • ネットワークマネージャーのdnsmasqプラグインを無効にする:/etc/NetworkManager/NetworkManager.confdns行をコメント化
  • /etc/NetworkManager/dnsmasq.d/dnsmasq.conf/etc/dnsmasq.confに移動しています
  • キャッチオールネームサーバーを/etc/dnsmasq.confに追加します(ファイルリストについては以下を参照)
  • /etc/resolve.confの先頭にdnsmasqアドレスを追加します(/etc/resolvconf/resolv.conf.d/headファイルを変更して...ファイルリストについては以下を参照)
  • Resolve.confを読み取らないようにdnsmasqを開始します:dnsmasq -d -R -q(何が起こっているのかを確認できるように、画面にクエリを記録したいと思いました)。
  • すべてを機能させた後、dnsmasqをsystemDユニットファイルにカプセル化しました

$ cat /etc/dnsmasq.conf
cache-size=1000
listen-address=127.0.1.1
server=8.8.8.8
server=/abcprivate.net/nn.nn.nn.nn
cache-size=1000

$ cat /etc/resolvconf/resolv.conf.d/head    
nameserver 127.0.1.1

$ cat /etc/systemd/system/dnsmasq.service
[Unit]
Description=SystemD - Dnsmasq is a Domain Name System (DNS) forwarder
Requires=network-manager.service

[Service]
Type=simple
ExecStart=/usr/sbin/dnsmasq -d -q -R
2
hba

私はこのスレッドが古くなっていることを知っていますが、誰かに役立つ場合に備えて、/ etc/NetworkManager/dnsmasq.c/dnsmasq.confはすべてではないにしても多くのパラメーターで無視されます。この投稿を参照してください: http://shiliangya.blogspot.com/2016/02/networkmanager-conflict-with-dns-cahing.html また、ハードコードされた設定の1つがconf-file = /であるためconf-file-dirのパラメーターも設定されている場合でも、conf-fileが読み取られないようにするdev/null。

2
gstanden

dnsmasqはあなたがやりたいことをできると思いますが、dnsmasq.confで問題が発生しているようです

おそらく、この行をdnsmasq.confでコメント解除する必要があります。

resolv-file=/etc/dnsmasq.resolv

次に、他のネームサーバーを含むファイル/etc/dnsmasq.resolvが必要です。私はこれを持っています:

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 4.3.2.1

さらに、/etc/dnsmasq.confには次のような行が必要だと思います。

server=/.intranet/10.0.0.3
server=/0.0.10.in-addr.arpa/10.0.0.3
local=/.intranet/

1つ目は、「。intranet」ドメインのIPアドレスサーバーを設定します。私の元のDSLモデムは内部で10.0.0.0/24アドレスを使用していたので、それが今日入手したものです。 2行目では、IPアドレスからホスト名を検索できます。 3行目は、dnsmasqに、/etc/hostsの「.intranet」ドメインで完全修飾名を検索するか、クライアントがdnsmasq DHCPに登録したものから検索するように指示しています。 10.0.0.3は、dnsmasqを実行しているマシンのIPアドレスです。

要約すると:dnsmasq.resolvは、dnsmasqが他の名前を転送する先のIPアドレスを設定します。 serverおよびlocal設定は、特定のドメインのDNSサーバーのIPアドレス、およびそのドメイン内の名前のアドレスを取得する場所を決定します。

0
Bruce Ediger