プライベートロケーションの設定は以前の記事でご紹介しました。今回は、DNSで名前解決できないような内部サイトを監視するためにはどのようにすればよいのかを試していきました。
NG対応1(参考までに)
プライベートロケーション用のdockerを動かしているサーバの/etc/hostsファイルにDNS参照できないサイトの情報を記載してみる。/etc/nsswitch.confファイルには読み込む順序をキチンと書いている。結果、NG。DNS参照をしてる模様。。。hostsファイルは見ない仕様なのか。。。
NG対応2(参考までに)
Dockerの仕組みをキチンと理解していませんでした。Dockeコンテナの標準環境がこのような動作なのか不明ですが、resolve.confはDockerコンテナを動かしているサーバの情報を読み込んでいるようですが、hostsファイルは読み込んでない模様。実際の確認は以下。
# docker exec -it datadog /bin/bash
dog@4d05d8cf7111:~$ cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 4d05d8cf7111
dog@4d05d8cf7111:~$ cat /etc/resolv.conf
nameserver 8.8.8.8
ということで、Dockerコンテナ内のhostsファイルに情報を追加。
・rootユーザーでログイン
・hostsファイルに情報追加
・確認
・pingで名前解決できているか確認
# docker exec -u root -it datadog /bin/bash
root@4d05d8cf7111:/home/dog# echo "10.10.10.10 testsite.com" | tee -a /etc/hosts
root@4d05d8cf7111:/home/dog# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 4d05d8cf7111
10.10.10.10 testsite.com
root@4d05d8cf7111:/home/dog# ping testsite.com
PING testsite.com (10.10.10.10) 56(84) bytes of data.
64 bytes from testsite.com (10.10.10.10): icmp_seq=1 ttl=57 time=1.47 ms
※補足:上記対応だとhostsファイルの中身はコンテナの再起動で消えます
Datadogからruntestを走らせてみる。NG・・・え!?つらい。いろいろな方の文献を参考にしていると、hostsファイルに足しても「nslookupやdig では名前解決できないが、 pingやcurlなどでは名前解決されている」とありました。。。Datadog側のエラーを再度確認。「DNS: Error during DNS resolution (ENOTFOUND).」。。。コレって詰んだのでは。。。サポート問い合わせします。
コメント