開発目的のために、.dev TLDへのすべてのDNS要求を自分のPCに転送する必要があります。
Hostsファイルでは不十分です。複数のドメインと複数のサブドメインを使用しています。組み合わせごとに行を追加する必要があります。
DNSmasqなどのDNSフォワーダーを使用してジョブを実行できることを読みました(たとえば、 ここで説明 )。また、このソフトウェアはすでにUbuntu 12.10にインストールされています。
問題は、DNSmasqをどのように、どこに設定する必要があるか、つまり、次の行をどこに配置するかがわからないことです。
address=/dev/127.0.0.1
完全なスタンドアロンdnsmasq(DHCPおよびDNSサーバー)はUbuntu 12.04および12.10にはデフォルトでインストールされませんが、dnsmasq-baseと呼ばれるパッケージはUbuntu Desktop 12.04および12.10にデフォルトでインストールされます。 dnsmasq-baseパッケージにはdnsmasqバイナリが含まれており、NetworkManagerによって使用されます。
必要なことを行うには、dnsmasqをキャッシュDNSサーバーとして使用する必要があります。必要がある:
次の内容で/etc/dnsmasq.d/dev-tld
を作成します。
local=/dev/
address=/dev/127.0.0.5
最初のコマンドは、*.dev
リクエストを実際のDNSサーバーに転送できないことを示しています。 2番目は、*.dev
がlocalhostである127.0.0.5
に解決されると言います。
Ubuntu 12.10以降では、NetworkManagerで実行されるdnsmasqを使用してこれを実行できます。
ディレクトリmkdir /etc/NetworkManager/dnsmasq.d
が存在しない場合は作成します。
Sudo mkdir /etc/NetworkManager/dnsmasq.d
次の行を/etc/NetworkManager/dnsmasq.d/dev-tld
にトスします。
address=/dev/127.0.0.1
(Ubuntu 12.10)NetworkManagerを再起動します。
Sudo service network-manager restart
(Ubuntu> 13.04)Dnsmasqを再起動します。
Sudo service dnsmasq restart
素晴らしさをお楽しみください。
以下はUbuntu 16.04で働いていました:
インストールdnsmasq
Sudo apt-get -y install dnsmasq
dnsmasq.conf
ファイルの編集:
Sudo nano /etc/dnsmasq.conf
コマンドを追加します。
address=/dev/127.0.0.1
ワイルドカード(*)の場合、ドット(。)、次にdnsmasqを使用して、WHATEWER_YOU_PUT_HERE.yourmachine.yourdomain
を同じIPに解決できます。例:address=/.localhost.dev/127.0.0.1
Dnsmasqサービスを再起動します。
Sudo /etc/init.d/dnsmasq restart
新鮮な19.04をインストールしたところ、それを機能させる唯一の方法はsystemd-resolved
を無効にし、NetworkManager
にDNSの代わりにdnsmasq
を使用することでした。 NetworkManager
にはdnsmasq
のサポートが組み込まれており、dnsmasq-base
パッケージがデフォルトでインストールされます。
*.customerX.test
から192.168.33.10
や*.productY.test
から192.168.33.20
などのように、複数のドメインを異なるVMに向けています。 *.dev
は使用せず、代わりに 予約済みのトップレベルドメイン のいずれかを使用します。
systemd-resolved
を無効にします
Sudo systemctl disable systemd-resolved.service
Sudo systemctl stop systemd-resolved.service
Sudo rm /etc/resolv.conf
DNSにdnsmasq
を使用するには、/etc/NetworkManager/NetworkManager.conf
を編集します。
[main]
dns=dnsmasq
dnsmasq
構成を/etc/NetworkManager/dnsmasq.d/test-tld.conf
に配置します
address=/test/127.0.0.1
address=/customerX.test/192.168.33.10
最後にNetworkManager
を再起動して、新しい/etc/resolv.conf
を生成します
Sudo systemctl restart network-manager.service