DNSの基礎(リゾルバ, 権威サーバー, レコード種類, digで確認)

DNS関連の作業を行うときに知っておきたい用語や仕組みなどを整理します。また、digコマンドを利用した調査方法(ドメイン解決, TTLの確認など)についても取り上げます。

DNS関連用語

名前解決

  • ドメイン名からIPアドレスを求めること。
  • 名前解決に関連するファイル。
    • /etc/hosts
      • ドメインとIPの対応を記述して、DNS無しで名前解決する。
    • /etc/resolv.conf
      • DNSのIPを指定して、DNSに問い合わせて名前解決する。
$ cat /etc/resolv.conf | grep nameserver
nameserver 10.0.0.2
「正引き」と「逆引き」
正引き:ホスト名(ドメイン名)から対応するIPアドレスを導き出す。
逆引き:IPアドレスから対応するホスト名(ドメイン名)を導き出す。

DNSサーバーの種類
( リゾルバと権威サーバー )

722-it-dns_dns.png
  • リゾルバ
    • キャッシュDNSサーバー フルサービスリゾルバ とも呼ばれる。
    • ゾーン情報を管理しない。
    • 権威サーバーに問い合わせて名前解決をする。
    • 権威サーバーから取得した情報をキャッシュとして保存できる。
      • 保存期間は、権威サーバーで指定されたTTLを最大値とする。
  • 権威サーバー
    • DNSコンテンツサーバー とも呼ばれる。
    • ゾーン情報を管理する。

リゾルバにキャッシュとして情報が残っている場合、2~7 の問い合わせは行われません。

ドメイン種類
上記図でTLD, 2LDと表記されいます。例えば、www.google.com の場合以下のようになります。

TLD(Top Level Domain):com
2LD(Second Level Domain):google

レコード種類

代表的なレコードタイプを示します。

レコード種類 概要
SOA ゾーン(ドメイン)情報を記載
NS ドメインのDNSサーバーを指定
A ホスト名に対応するIPアドレスを指定
PTR IPアドレスに対応するホスト名を指定
CNAME ホスト名の別名(エイリアス)を指定
MX ドメインのメールサーバーを指定
TXT テキスト情報を指定
SPFDKIM で利用

digコマンドで確認

ドメインのIPアドレスを確認
( Aレコード )

dig 対象ドメイン
$ dig google.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.58.amzn1 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57744
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             60      IN      A       172.217.25.110

;; Query time: 1 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Sun Oct 20 09:08:56 2019
;; MSG SIZE  rcvd: 44
  • リゾルバ( 10.0.0.2 )に問い合わせています。
  • ANSWER SECTION に問い合わせ結果が表示されています。
    • TTLは 60秒 になっています。
    • google.com に対応するIPアドレス( 172.217.25.110 )が表示されています。

ドメインのDNSサーバーを確認
( NSレコード )

デフォルトでAレコードが取得されます。NSレコードを取得した場合、明示的にレコードタイプを指定します。

dig 対象ドメイン レコードタイプ
$ dig google.com ns

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.58.amzn1 <<>> google.com ns
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25938
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.                    IN      NS

;; ANSWER SECTION:
google.com.             60      IN      NS      ns4.google.com.
google.com.             60      IN      NS      ns1.google.com.
google.com.             60      IN      NS      ns2.google.com.
google.com.             60      IN      NS      ns3.google.com.

;; Query time: 2 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Sun Oct 20 09:15:18 2019
;; MSG SIZE  rcvd: 100

レコードタイプに any を指定すると、全ての情報を取得できます。

DNSサーバーを指定して確認

問い合わせるDNSサーバーを指定することができます。

dig @DNSサーバー 対象ドメイン

権威サーバー( ns1.google.com )から問い合わせみます。

$ dig @ns1.google.com. google.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.58.amzn1 <<>> @ns1.google.com. google.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7600
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             300     IN      A       172.217.161.78

;; Query time: 70 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Sun Oct 20 09:19:23 2019
;; MSG SIZE  rcvd: 44

ルートサーバーから確認

+trace オプションを利用すると、ルートサーバーから順に、名前解決に使用された各サーバーの結果を表示します。

$ dig +trace google.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.58.amzn1 <<>> +trace google.com
;; global options: +cmd
.                       518400  IN      NS      E.ROOT-SERVERS.NET.
.                       518400  IN      NS      F.ROOT-SERVERS.NET.
.                       518400  IN      NS      G.ROOT-SERVERS.NET.
.                       518400  IN      NS      H.ROOT-SERVERS.NET.
.                       518400  IN      NS      I.ROOT-SERVERS.NET.
.                       518400  IN      NS      J.ROOT-SERVERS.NET.
.                       518400  IN      NS      K.ROOT-SERVERS.NET.
.                       518400  IN      NS      L.ROOT-SERVERS.NET.
.                       518400  IN      NS      M.ROOT-SERVERS.NET.
.                       518400  IN      NS      A.ROOT-SERVERS.NET.
.                       518400  IN      NS      B.ROOT-SERVERS.NET.
.                       518400  IN      NS      C.ROOT-SERVERS.NET.
.                       518400  IN      NS      D.ROOT-SERVERS.NET.
;; Received 508 bytes from 10.0.0.2#53(10.0.0.2) in 6 ms

com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
;; Received 488 bytes from 192.58.128.30#53(192.58.128.30) in 8 ms

google.com.             172800  IN      NS      ns2.google.com.
google.com.             172800  IN      NS      ns1.google.com.
google.com.             172800  IN      NS      ns3.google.com.
google.com.             172800  IN      NS      ns4.google.com.
;; Received 276 bytes from 192.48.79.30#53(192.48.79.30) in 172 ms

google.com.             300     IN      A       172.217.161.78
;; Received 44 bytes from 216.239.38.10#53(216.239.38.10) in 127 ms

参考

【エンジニア向け】仕事を見つける方法

転職する

転職エージェントを活用する

転職サイトの場合、自身でサイト上から企業を探す必要があります。 一方「レバテックキャリア」 などの転職エージェントの場合、エージェントが企業を紹介してくれます。エージェントが間に入ることにより、日程調整や、条件交渉などもサポートしてくれます。

転職ドラフトを活用する

転職ドラフト」は、 企業がITエンジニアをドラフトという形で指名するサービスです。年収が最初に提示されるなどのメリットがあります。 ただ、初回登録時にレジュメ作成が必要で、すでにエンジニア経験が豊富にあるエンジニア向けのサービスかと思います。 レジュメ作成が手間ですが、自身のキャリアを見直す機会になり、他の仕事探しにも役立つはずです。

エンジニア転職保証のあるスクールを活用する

ある程度、開発経験のあるかたであれば、独学で必要なスキルを身につけることができるはずです。ただ、別業種からエンジニアに転職したい場合など、1から独学で学ぶのはハードルが高いです。そういった方は、スクールの活用を検討しても良いと思います。 「TechAcademy」は、エンジニア転職保証コースを提供しています。給付金制度の対象講座として認定されているため、金銭面の負担も抑えることができます。

フリーランスとして活動する

レバテックフリーランス」「ITプロパートナーズ」「ギークスジョブ」は、フリーランスエージェントサービスです。 エージェントによって、支払いサイトなど細かい違いはありますが、まずは良い案件を見つけることが重要です。 登録自体は無料なので、複数エージェントに登録して、より多くの案件を紹介してもらうのがおすすめです。

logo
わくわくBank.
技術系の記事を中心に、役に立つと思ったこと、整理したい情報などを掲載しています。