18.04でローカルワイルドカード(127.0.0.1)ドメイン解決を設定するにはどうすればよいですか?


18

Ubuntu 14.04では、dnsmasqを使用して、ワイルドカードexample.comドメインをローカルマシン(自宅のデスクトップコンピューター)に解決しています。

よく読んだ後、1​​8.04のクリーンインストールで同じことを整理することはできません。

現時点で達成したいことは次のとおりです。

  • ping example.com 93.184.216.34ではなく127.0.0.1をpingするため。
  • ping anysubdomain.example.com 127.0.0.1にもpingするため。
  • そして、のためのping google.com ルータ/ IP DNS経由で実際のgoogle.comにpingを実行します。

確かに、これは単純なものであり、些細なことでもありますか?

しかし、私は困惑しています。example.comの解決は取得できますが、他のすべてを壊すことを犠牲にします。

これどうやってするの?


1
14.04で行ったようにdnsmasqをインストールしないのはなぜですか?
vidarlo

1
@vidarloまあもちろん、それは私の質問で示したように、私が最初にしたことでした。ただし、14.04とは異なり、「ポート53のリスニングソケットの作成に失敗しました:アドレスは既に使用されています」というエラーが発生します。私が受け入れた答えは、dnsmasqを明示的にインストールしなくても正常に機能します。
ニックライス

回答:


30

以下は、ubuntu 18.04の手順です。で設定された場合、systemd-resolvedあまりうまく動作しないため、少し長くNetworkManagerなりますdnsmasq

ただし、ネットワーク接続の変更(WIFI、有線など)は透過的に処理されるため、から開始dnsmasqするNetworkManagerことをお勧めします。

NetworkManagerでdnsmasqを有効にする

ファイルを編集し、セクションに/etc/NetworkManager/NetworkManager.confdns=dnsmasqを追加すると[main]、次のようになります。

[main]
plugins=ifupdown,keyfile
dns=dnsmasq

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

NetworkManagerで管理する /etc/resolv.conf

sudo rm /etc/resolv.conf ; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf

構成、設定 example.com

echo 'address=/.example.com/127.0.0.1' | sudo tee /etc/NetworkManager/dnsmasq.d/example.com-wildcard.conf

リロードNetworkManagerとテスト

変更を有効にするには、NetworkManagerをリロードする必要があります。

sudo systemctl reload NetworkManager

その後、通常のサイトにアクセスできることを確認できます。

dig askubuntu.com +short
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69

最後に、example.comとサブドメインが次のように解決されることを確認し127.0.0.1ます。

dig example.com askubuntu.example.com a.b.c.d.example.com +short
127.0.0.1
127.0.0.1
127.0.0.1

「systemd-resolvedがNetworkManagerでうまく動作しない」とはどういう意味ですか?
セバスチャン・スターク

1
NetworkManagerがdns = dnsmasqを使用するとき、systemd-resolvedにdnsmasqを使用するように指示する必要があります。
PIM

1
ありがとう、これは完璧に機能した!あと1時間は賞金をもらえないようです。午前中に1つ行ってしまったので、私は今すぐ寝て、明日電源を入れたときにそれを行います。
ニックライス

2
驚くばかり。私はさまざまなテクニックを読みました。これが最終的に機能したものです。
レッサンドロ

3
systemd-resolvedに戻すことを好む人のため/etc/resolv.conf/run/systemd/resolve/stub-resolv.conf、デフォルトでポイントします。
ポティカリムトゥ

2

最初に/etc/NetworkManager/NetworkManager.conf、次の行に存在しないかコメント化されていないことを確認します。

dns=dnsmasq

NetworkManagerを再起動します。

sudo systemctl restart NetworkManager

プロセスを強制終了するか、システムを再起動して、NetworkManager制御のdnsmasqが実行されていないことを確認します。

次に、dnsmasqをインストールします。

sudo apt install dnsmasq

以下を追加します/etc/dnsmasq.d/example.com

address=/example.com/127.0.0.1

dnsmasqを再起動します。

sudo systemctl restart dnsmasq

これで、example.comのワイルドカードDNSオーバーライドが必要になります。


1
これを機能させることができませんでした。「ディスクの消去」オプションを使用したクリーンな最小インストールの直後に、「sudo apt install dnsmasqポート53のリッスンソケットの作成に失敗しました:アドレスは既に使用されています」というエラーが表示されます。とにかく最後のステップでそれが解決された場合、私は最後まで続けましたが、うまくいかず、これはうまくいきませんでした。
ニックライス

その後、NetworkManagerによって開始されたdnsmasqはまだ実行されていました。したがって、最初に非アクティブ化し、最終的には強制終了してから、dnsmasqパッケージをインストールする必要があります。
セバスチャンスターク

ありがとう、セバスチャン。しかし、私はすでに完璧に働いたpimの答えを受け入れたので、もうそれをいじることなく先に進むことができます。
ニックライス

@NickRiceこれには問題ありませんが、他の人が試してみたいと思うかもしれません
セバスチャン・スターク

はい、もちろん、セバスチャン。それが最も簡単だったので、私は最初にあなたの答えを試みました、そして、それが必要とするすべてが追加された最初のステップであるならば、それはとても良いものです。
ニックライス

0

これは、hostsファイルの編集ほど簡単ではありません。いくつかのオプションがあります:

/ etc / hostsのワイルドカードを処理するこのPython DNSプロキシ

DNSmasqを使用する


ありがとう。DNSmasq質問へのリンクは、14.04で私がやっていることです。新しい18.04インストールで同じことを行うだけでは、ポートの競合のため機能しません。そのため、それと比較して、他の何かをする必要があります。Python DNSプロキシに必要なすべてのコードを見ると、必要なすべてが信じられません。/ etc / hostsの使用を主張した人たちを除いて、それは以前ではなかったでしょう。
ニックライス

netstat -tulpnポートを使用しているものを確認できますか?編集:気にしないで、受け入れられた答えを見ました。問題はsystemd-resolveです。
ハリクリシュナンR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.