[SadServers] 解説 "Jakarta": it's always DNS.
"Salta": "Jakarta": it's always DNS.
SadServersの "Jakarta": it's always DNS. の解説です。
SadServers って何? って人は、 SadServers解説 を見てください。
一言でいうと、LeetCode (コーディング問題集) の Linuxサーバ設定版のようなものです。
問題
Scenario: "Jakarta": it's always DNS.
Level: Hard
Description: Can't ping google.com. It returns ping: google.com: Name or service not known. Expected is being able to resolve the hostname. (Note: currently the VMs can't ping outside so there's no automated check for the solution).
google.comにpingを打てない。ping: google.comを返します。名前またはサービスが不明です。期待されるのは、ホスト名を解決できることです。(注:現在VMは外部にpingを打てないので、解決のための自動チェックができない)。
Test: ping google.com should return something like PING google.com (172.217.2.46) 56(84) bytes of data.
Time to Solve: 20 minutes.
OS: Ubuntu 22.04 LTS
解説
早速、ping
をします。
ubuntu@ip-172-31-42-233:/$ ping google.com
ping: google.com: Name or service not known
問題どおり、名前解決ができていません。 つまり、ドメイン名(google.com) をIPアドレス(172.217.2.46)に変換することができないとうことです。
digコマンドを使って、DNSの名前解決ができるか確認します。
ubuntu@ip-172-31-42-233:/$ dig google.com
; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15079
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 59 IN A 172.217.0.174
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Wed Dec 28 09:27:03 UTC 2022
;; MSG SIZE rcvd: 55
google.com. 59 IN A 172.217.0.174
と、表示されているので、DNSによる名前解決はできていそうです。
名前解決を行う優先順位を指定するファイル (/etc/nsswitch.conf
) を確認します。
ubuntu@ip-172-31-42-233:/$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: files
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
hosts
行に files
しかありません。 これだと、DNSは使わずに /etc/hosts
による名前解決しかしません。
DNSによる名前解決をするために、 hosts
行に dns
を追加します。
ubuntu@ip-172-31-42-233:/$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
改めて ping
を実行します。
ubuntu@ip-172-31-42-233:/$ ping google.com
PING google.com (172.217.0.174) 56(84) bytes of data.
^C
--- google.com ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7164ms
無事に、google.com
を 172.217.0.174
に変換して、 56(84) バイト出力しています。
問題にある通り、このVMは、外部ネットワークにping
できないために、レスポンスは返ってきません。Ctrl-C
で止めます。
Check My Solution
でのチェックもできません。
Discussion