完全なTLD(たとえば、*。dev)を127.0.0.1にルーティングします。


29

開発目的のために、.dev TLDへのすべてのDNS要求を自分のPCに転送する必要があります。

hostsファイルでは不十分です。複数のドメインと複数のサブドメインを使用しています。組み合わせごとに行を追加する必要があります。

DNSmasqのようなDNSフォワーダーを使用してジョブを実行できることを読みました(たとえば、ここで説明します)。また、このソフトウェアはすでにUbuntu 12.10にインストールされています。

問題は、DNSmasqを構成する方法と場所、つまり、この行を配置する場所がわからないことです。

address=/dev/127.0.0.1

1
.devGoogleが採用したとおりに使用したくない場合があります。私はまだ彼らがそれを何のために使うのか、そして彼らが通常の人々がそれに接続するのかそれとも従業員だけを予定するのかを研究していますが、これが純粋にテストボックスでない限り、前者の場合はすべてのアクセスをリダイレクトしたくないかもしれません外部ホストに接続することはありません。
トリシス

回答:


18

完全なスタンドアロンdnsmasq(DHCPおよびDNSサーバー)はデフォルトではUbuntu 12.04および12.10にインストールされませんが、dnsmasq-baseと呼ばれるパッケージはデフォルトでUbuntu Desktop 12.04および12.10にインストールされます。dnsmasq-baseパッケージにはdnsmasqバイナリが含まれており、NetworkManagerによって使用されます。

必要なことを行うには、dnsmasqをキャッシュDNSサーバーとして使用する必要があります。必要がある:

  • dnsmasqのインストールsudo apt-get install dnsmasq
  • ネットワーク設定を変更して、コンピューターがDNSサーバーとして使用されるようにします。
  • 構成ファイルに変更を加えます。

/etc/dnsmasq.d/dev-tldこれらのコンテンツで作成します。

local=/dev/

address=/dev/127.0.0.5

最初のコマンドは、*.devリクエストを実際のDNSサーバーに転送できないことを示しています。2番目はlocalhostが*.dev解決さ127.0.0.5れると言います。

  • dnsmasqサービスを再起動します(ネットワークマネージャーではありません)

ありがとうございました!DNSMasqが本物ではないことを知ったのはとても助かりました。完全なパッケージをインストールし、機能する前に説明した方法で構成した後。:)
ロエルヴァンデュイホーフェン

1
最近のデスクトップのインストールについては、他の回答を希望ます。最近のデスクトップインストールでは、この方法で2つのdnsmasqインスタンスを実行します。あなたの答えは、NetworkManager以外のセットアップ、古いセットアップ(dnsmasqを使用しない)、さらにはサーバーのインストールでも非常に役立つ可能性があります。
gertvdijk

うん、Ubuntu 12.10以降の他の回答が最適です。
ベンジャミン

21

Ubuntu 12.10以降では、NetworkManagerで実行されるdnsmasqを使用してこれを実行できます。

  1. ディレクトリmkdir /etc/NetworkManager/dnsmasq.dが存在しない場合は作成します。

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. 次の行をに投げます/etc/NetworkManager/dnsmasq.d/dev-tld

    address=/dev/127.0.0.1
    
  3. (Ubuntu 12.10)NetworkManagerを再起動します。

    sudo service network-manager restart
    
  4. (Ubuntu> 13.04)Dnsmasqを再起動します。

    sudo service dnsmasq restart
    
  5. 素晴らしさをお楽しみください。

ここに画像の説明を入力してください


1
これを行う方法に関するarch wikiへリンクを提供してくれたAbrahamVanHelpsingに感謝します
jrg

それでも手順を実行した後、pingを実行すると「不明なホスト」が表示されます。他の場所でDNSMasqを構成/有効にする必要がありますか?または、ネットワークプロパティを別の方法で構成しますか?ありがとう!
ロエルヴァンデュイホーフェン

面白い。それは私のためにうまく現れています。
jrg

ああ、@ RoelvanDuijnhoven-12.10または12.04を実行していますか?12.10で問題なく動作します。
jrg

12.10。を実行しています。しかし、ここで質問する前に、いくつかの構成ファイルを変更しようとしたことに言及する必要があります。これらの変更により、ソリューションが緩和される可能性があります。しかし、ハビエル・リベラのソリューションがそのトリックを実現しました!
ロエルヴァンデュイホーフェン

1

以下はUbuntu 16.04で働いていました:

  1. インストール dnsmasq

    sudo apt-get -y install dnsmasq
    
  2. dnsmasq.confファイルを編集:

    sudo nano /etc/dnsmasq.conf
    
  3. コマンドを追加します。

    address=/dev/127.0.0.1
    

    ワイルドカード(*)の場合、ドット(。)を使用してからdnsmasqを使用WHATEWER_YOU_PUT_HERE.yourmachine.yourdomainして同じIP に解決できます 。例えば、address=/.localhost.dev/127.0.0.1

  4. dnsmasqサービスを再起動します。

    sudo /etc/init.d/dnsmasq restart
    

1

新鮮な19.04をインストールしたところ、それを機能させる唯一の方法は、無効にsystemd-resolvedしてDNSを代わりにNetworkManager使用するdnsmasqことでした。NetworkManager以下のためのサポートが組み込まれていますdnsmasqし、dnsmasq-baseパッケージがデフォルトでインストールされています。

複数のドメインを*.customerX.testto 192.168.33.10*.productY.testto 192.168.33.20などの異なるVMに向けています。私は*.devもう使用しませんが、代わりに予約済みのトップレベルドメインの 1つを使用します

溶液

  1. 無効にする systemd-resolved

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    sudo rm /etc/resolv.conf
    
  2. 編集/etc/NetworkManager/NetworkManager.confdnsmasqてDNS に使用します。

    [main]
    dns=dnsmasq
    
  3. dnsmasq構成を入れる/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. 最後に再起動NetworkManagerすると、新しい/etc/resolv.conf

    sudo systemctl restart network-manager.service
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.