参考文章:https://blog.csdn.net/loukundeboke/article/details/80012231
DNS サービス
DNS (ドメインネームシステム) ドメイン名システム
前提:
我々のネットワークでは、すべて IP アドレスを使用して通信しています。サービスにアクセスする場合でも、異なるホスト間でデータを交換する場合でも
IP アドレスは非常に多く、各サービスに IP アドレスでログインする場合、ユーザーはこれらの複雑な IP アドレスを覚える必要があり、ユーザーにとっては不便です
スマートフォンに保存されている電話番号のように、メモがあり、そのメモを通じて正しい連絡先の電話番号を見つけることができます
ドメイン名の解決はこれとほぼ同じで、一般のユーザーはドメイン名を使用してサービスにアクセスし、ドメイン名はドメイン名の解決を通じて IP アドレスを取得します
DNS サービスは電話帳のようなもので、ドメイン名と IP アドレスのマッピング関係を提供します
#注:ブラウザに www.taobao.com と入力し、エンターキーを押す瞬間、最初にドメイン名を解決します
#注:ドメイン名システム;ドメイン名の解決を提供;ユーザーにとって、IP はドメイン名よりも便利です
1. 完全修飾ドメイン名 FQDN#
FQDN:完全修飾ドメイン名、完全修飾ドメイン名、つまり、各ドメインは世界中のネットワークで唯一です;もう一つ言及すべき点は、ドメインは www.google.com のようなドメイン名を指すのではなく、google.com がドメインです
#注:www.music.163.com/ 163.com がドメインで、前の部分がホスト名
dnsサービスソフトウェアパッケージbindをインストール
[root@cPen_B ~]# yum install bind
#注:インストール後、データは/var/named/に保存されます
[root@cPen_B ~]# cd /var/named/
[root@cPen_B named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
2. ドメインの分類#
一、ルートドメイン(.) 世界には 13 組のルートドメイン名サーバーがあり、英字 A から M まで順に命名されています。ドメイン名の形式は「字母.root-servers.net」です
/var/named/name.ca ファイルで確認できます # 注:. として識別されます
二、トップレベルドメイン
トップレベルドメイン(Top Level Domain、略称 TLD)は 3 つのカテゴリに分かれます
1> 一般トップレベルドメイン:.com(商業機関)、.org(非営利団体)、.net(ネットワークサービス機関)など
2> 国別トップレベルドメイン:.cn(中国)、.uk(イギリス)、.us(アメリカ)、.jp(日本)、.hk 3> 逆引きドメイン(基盤インフラストラクチャトップレベルドメイン):.arpa、つまりIPからFQDNへの逆引き # 注:逆引き検索
#注:正引きドメイン:ドメイン名から IP へ;逆引きドメイン:IP からドメイン名へ
三、
セカンドレベルドメイン
サードレベルドメイン
www.sc.163.com --> トップレベルドメイン.com --> セカンドレベルドメイン 163.com --> サードレベルドメイン sc.163.com
# 注:前の www はそのホスト名です
3. DNS 解決#
正引き解決 ドメイン名 --> IP
逆引き解決 IP --> ドメイン名
よく使われるドメイン名解決コマンド#
よく使われるドメイン名解決コマンド
1、Ping
[root@cPen_A ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=55 time=16.3 ms
#注:pingコマンドは1つのIPしか返せません
2、host
bind-utilsソフトウェアパッケージをインストール
yum install bind-utils
[root@cPen_A ~]# host www.baidu.com
www.baidu.comはwww.a.shifen.comのエイリアスです。#注:www.a.shifen.comに別名を付けています
www.a.shifen.comのアドレスは14.215.177.38です。#注:IPアドレス
www.a.shifen.comのアドレスは14.215.177.39です。
3、dig #注:詳細に見ることができ、推奨されます
[root@cPen_A ~]# dig www.baidu.com
;; ANSWER SECTION:
www.baidu.com. 34 IN CNAME www.a.shifen.com.
www.a.shifen.com. 216 IN A 14.215.177.38
www.a.shifen.com. 216 IN A 14.215.177.39
4、nslookup
[root@cPen_A ~]# nslookup www.baidu.com
www.baidu.com 標準名 = www.a.shifen.com. #注:検索時にルートドメインが追加され、普段は感じません
Address: 14.215.177.38
Address: 14.215.177.39
#注:DNSを使用してトラフィックの分流を実現できます。新しいマシンのドメイン名アドレスを2つのIPに解決します
#注:負荷分散:多くのマシンを1台のマシンとして使用します。DNSは負荷分散を実現し、トラフィックを多くのマシンに分配します
#注:高可用性:1台のマシンがサービスを提供し、ダウンした場合、高可用性はそのマシンがダウンしたときにトラフィックを他のマシンに誘導します
#注:高可用性 単一障害点を回避します
#注:運用思想:バックアップ、高可用性。たとえば、システムディスクが2つあり、そのうち1つがダウンしても、もう1つはサービスを継続できます
#注:負荷分散と高可用性は一般的に一緒に存在します
DNS サービスソフトウェア:bind#
DNSサービスソフトウェア:bind
デフォルトポート UDPプロトコル 53番ポート
[root@cPen_A ~]# less /etc/services
domain 53/udp
例:/etc/hostsファイルを変更
--------------------------------------------------------------------------------------------
[root@cPen_A ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@cPen_A ~]# ping localhost #注:127.0.0.1に解決されます
PING localhost (127.0.0.1) 56(84) bytes of data.
[root@cPen_A ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 www.baidu.com baid.com #注:この行を追加
[root@cPen_A ~]# ping www.baidu.com
PING www.baidu.com (127.0.0.1) 56(84) bytes of data. #注:127.0.0.1に解決されます
[root@cPen_A ~]# ping baid.com
PING www.baidu.com (127.0.0.1) 56(84) bytes of data. #注:127.0.0.1に解決されます
#注:/etc/hostsファイルは解決時に最優先されます
例
--------------------------------------------------------------------------------------------
[root@cPen_A html]# pwd
/usr/share/nginx/html
[root@cPen_A html]# vim index.html
hello world
cPen
[root@cPen_A html]# ip a
inet 192.168.0.19/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33
#Windowsマシン上
Windows:C:\Windows\System32\drivers\etc\hosts
#注:hostsファイル内
# localhost名の解決はDNS自体内で処理されます。
# 127.0.0.1 localhost
# ::1 localhost
192.168.0.39 www.ldj.com #注:この行を追加
これにより、ブラウザでwww.ldj.comを検索すると、Linuxマシン上のURLにアクセスします。www.ldj.comは192.168.0.39に解決されます。
4. DNS 解決プロセス#
DNS 解決プロセス:
#注:面接の質問:www.baidu.com を入力したときに何が起こるか
1、最初にローカル hosts ファイルを確認します。Linux:/etc/hosts; Windows:C:\Windows\System32\drivers\etc\hosts
解決できれば、直接アドレスを返します
2、hosts ファイルで解決できない場合、ローカルキャッシュを確認します。もしあれば、結果を返し、なければ次のステップに進みます
Linux のドメイン名キャッシュ:nscd サービス
[root@cPen_A html]# yum install nscd
[root@cPen_A html]# service nscd restart # 注:キャッシュをクリアします(サービスを再起動することはキャッシュをクリアすることです)
キャッシュにはキャッシュ時間があり、キャッシュの持続時間は指定できます
#注:DNS サービスを設定しましたが、設定が有効でない場合、1、キャッシュをクリアし、2、/etc/hosts がハードコーディングされているかを確認します
3、ローカルキャッシュで見つからない場合、ローカルドメインサーバーにリクエストを送信します。ローカルドメインサーバーがあれば、結果を返します
Linux で指定されたドメイン名解決サーバーのファイル /etc/resolv.conf (ローカルドメインサーバーの IP アドレスを設定するファイル)
最初に指定された nameserver が優先 DNS サーバーで、残りはバックアップ DNS サーバーです[root@cPen_A html]# vim /etc/resolv.conf # NetworkManagerによって生成されました nameserver 114.114.114.114 #注:複数のIPを指定してIPを解決できます nameserver 192.168.0.1 #注:nameserverを使用して指定します [root@cPen_A html]# dig www.baidu.com ;; SERVER: 114.114.114.114#53(114.114.114.114) #注:114.114.114.114の53番ポートにアクセスしてIPを解決します
4、ローカルドメインサーバーに該当するレコードが見つからない場合、フォワード検索を設定している場合、フォワードサーバーにリクエストを送信します。フォワードが設定されていない、または見つからない場合、ルートドメインを検索します(反復検索)
ローカル DNS は 13 台のルート DNS にリクエストを送信し、ルート DNS サーバーはリクエストを受け取った後、このドメイン名(.com)の管理を誰が権限を持っているかを判断し、そのトップレベルドメインサーバーの IPを返します。ローカル DNS サーバーは IP 情報を受け取った後、.com ドメインを担当するサーバーに連絡します。この.com ドメインを担当するサーバーがリクエストを受け取った後、自分で解決できない場合、次の階層の DNS サーバーアドレス(qq.com)を探してローカル DNS サーバーに渡します。ローカル DNS サーバーがそのアドレスを受け取った後、qq.com ドメインサーバーを探し、上記の動作を繰り返し、www.qq.com ホストが見つかるまで検索を続けます
#注:面接の質問:www.baidu.com を入力したときに何が起こるか(DNS 解決プロセス)
答:DNS 解決プロセス
第 1 ステップは、ローカルhostsファイル
(/etc/hosts)でIPとドメイン名のマッピング関係
を探します。あれば返します。なければ
第 2 ステップはローカルDNSキャッシュ
を探します…。あれば返します。なければ
第 3 ステップはローカルドメインサーバー
(/etc/resolv.conf)を探します…。あれば返します。なければ
第 4 ステップは、ローカルドメインサーバーがフォワード
検索を設定している場合、フォワードサーバーを探します…。あれば返します。
見つからない場合、または設定されていない場合は、ルートドメインを検索
し、最初にルートドメイン
でトップレベルドメインサーバーのIPアドレスを見つけて、ローカルドメインサーバーに返します
ローカルドメインサーバー
は再びトップレベルドメインサーバー
を探し、見つからなければセカンドレベルサーバー
の IP アドレスを返し、ローカルドメインサーバーはセカンドレベル
を探し、見つからなければサードレベル
の IP アドレスを返します…… 反復検索を行い、全体のドメイン名が見つかるまで返します
または、ルートドメインを検索し、反復検索を行い、見つかるまで続けます
5. DNS サービスの種類#
DNS サービスの種類
- キャッシュドメインサーバー
- マスタードメインサーバー
ここでは、実際の IP とドメイン名のマッピング関係が定義されています - スレーブドメインサーバー
上記のデータドメインマッピングはマスタードメインサーバーから取得されます
1、キャッシュドメインサーバー
別名:高速キャッシュサーバー
他のドメインサーバーに問い合わせてドメイン名 ->IP アドレスの記録を取得し
ドメイン名の検索結果をローカルにキャッシュし、再検索時の速度を向上させます
2、マスタードメインサーバー
特定の DNS ゾーンの公式サーバーで、唯一性と権威があります
そのゾーン内のすべてのドメイン名 ->IP アドレスのマッピング記録を維持します
3、スレーブドメインサーバー
別名:補助ドメインサーバー
その維持するドメイン名 ->IP アドレスの記録はマスタードメインサーバーからのものです
6. ドメインサーバーの設定#
1、bind、bind-utilsをインストール
ドメイン解決の主プログラム
[root@cPen_B etc]# which named
/usr/sbin/named
2、設定ファイル
bind-chrootソフトウェアパッケージがインストールされていない場合
主設定ファイル: /etc/named.conf データファイルは:/var/named/ディレクトリにあります
[root@cPen_B etc]# less /etc/named.conf
3、設定を変更
1、 vim /etc/named.conf # 注:グローバル設定ファイル
options {
listen-on port 53 { 127.0.0.1; };
listen-on port 53 { any; }; # 注:リスニングアドレスをanyに変更し、ローカルの任意のIPでリスニングを設定します
allow-query { localhost; }; # 注:サービスにアクセスできるホストを許可します
allow-query { any; }; # 注:権限をanyに設定し、誰でもクエリできるようにします
zone "." IN { # 注:ルートドメインを定義します
type hint; # 注:ルートドメインを指定します
file "named.ca"; # 注:named.caで探します /var/named/named.ca
};
include "/etc/named.rfc1912.zones"; # 注:他のドメインを定義します
include "/etc/named.root.key";
2、ドメイン設定ファイル /etc/named.rfc1912.zones
ドメイン設定を追加:
[root@cPen_B ~]# vim /etc/named.rfc1912.zones
zone "sc.com" IN { # 注:sc.comドメインの解決を追加します
type master; # 注:マスタードメインサーバー
file ""sc.com""; # 注:ドメイン設定が保存されるファイル(ドメインの解決がどのファイルから探されるか)
allow-update { none; };
};
4、指定されたドメインの解決ファイルを設定
ディレクトリ:/var/named
#注:権限に注意し、namedユーザーが読み取れるようにします
#注:グループに注意します
[root@cPen_B named]# cp named.empty sc.com
[root@cPen_B named]# pwd
/var/named
[root@cPen_B named]# vim sc.com
$TTL 3H ; 注:キャッシュ時間
@ IN SOA sc.com. ( ; 注:変更箇所
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
;注:Aレコード 正引き解決レコード
dns A 192.168.136.129 ;注:dnsサーバーのIPアドレス
www A 192.168.136.129 ;注:wwwサーバーのIPアドレス
* A 192.168.136.123 ;注:ワイルドカードドメイン解決を設定します
;mail MX 192.168.136.129 ;注:セミコロンでコメント
;dns IN 600 A 192.168.136.129 ;注:Aレコード解決を設定し、キャッシュ時間は600秒です
[root@cPen_B named]# service named restart # 注:サービスを再起動します
[root@cPen_B named]# lsof -i:53 # 注:ポートが起動しました
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
named 1839 named 21u IPv4 42519 0t0 TCP localhost:domain (LISTEN)
named 1839 named 22u IPv4 42521 0t0 TCP cPen_B:domain (LISTEN)
named 1839 named 23u IPv6 42523 0t0 TCP localhost:domain (LISTEN)
[root@cPen_B named]# dig www.sanchuang.com
;; SERVER: 192.168.136.2#53(192.168.136.2)
[root@cPen_B named]# cat /etc/resolv.conf # 注:ローカルのDNSサーバーを指定します
# NetworkManagerによって生成されました
search localdomain
nameserver 192.168.136.2
[root@cPen_B named]# dig www.sc.com @192.168.136.129 # 注:192.168.136.129で解決します
;; QUESTION SECTION:
;www.sc.com. IN A
;; ANSWER SECTION:
www.sc.com. 10800 IN A 192.168.136.129 # 注:解決成功
;; AUTHORITY SECTION:
sc.com. 10800 IN NS sc.com.
#逆引きドメインを設定
[root@cPen_B named]# vim /etc/named.rfc1912.zones
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
[root@cPen_B named]# pwd
/var/named
[root@cPen_B named]# less named.loopback
7. リソースレコードタイプ#
リソースレコードタイプ
(1)A レコード(Address)正引き解決
A レコードは、ホスト名(完全修飾ドメイン名 FQDN)と IP アドレスを関連付けます。これがほとんどのクライアントプログラムのデフォルトのクエリタイプです。(2)PTR レコード(Pointer)逆引き解決
PTR レコードは、IP アドレスをホスト名(完全修飾ドメイン名 FQDN)に対応させます。これらのレコードは in-addr.arpa ドメインに保存されています。(3)CNAME レコード(Canonical Name)エイリアス
エイリアスレコード、または標準名(Canonical Name)とも呼ばれます。このレコードは、複数の名前を同じコンピュータにマッピングすることを許可します。(4)MX レコード(Mail eXchange)
MX レコードはメール交換レコードで、メールサーバーを指し、電子メールシステムが受信者のアドレスのサフィックスに基づいてメールサーバーを特定するために使用されます。MX レコードはメールルーティングレコードとも呼ばれ、ユーザーはこのドメイン名のメールサーバーを自分のメールサーバーに指向させることができ、すべてのメールボックス設定を自分で管理できます。
複数の MX レコード(つまり複数のメールサーバー)がある場合、優先順位を決定するために数値を設定する必要があります。優先順位の数字を設定することで、優先サーバーを示し、数字が小さいほど優先順位が高くなります。(5)NS レコード(Name Server)
NS(Name Server)レコードはドメイン名サーバーレコードで、権限サーバーとも呼ばれ、そのドメイン名がどの DNS サーバーによって解決されるかを指定します。
ウェブサイトの NS レコードをターゲットアドレスに指向させ、NS レコードを設定する際にはターゲットウェブサイトの指向も設定する必要があります。さもなければ、NS レコードは正常に解決されません
NS レコードは A レコードよりも優先されます。つまり、ホストアドレスに NS レコードと A レコードの両方が存在する場合、A レコードは無効になります。
8. 小節#
DNS サービス
DNS (ドメインネームシステム) ドメイン名システム
#注:ドメイン名システム;ドメイン名の解決を提供;ユーザーにとって、IP はドメイン名よりも便利です
FQDN 完全修飾ドメイン名
www.baidu.com
ドメイン:baidu.com
ホスト名:www
ドメイン名の分類
ルートクラス(.) 全国に 13 組しかありません
トップレベルドメイン 一般的なドメイン名
.com 商業用
.org 非営利団体
.net ネットワークサービス
国別
.cn
.jp
.hk
.us
逆引きドメイン .arpa
セカンドレベルドメイン、サードレベルドメイン……
DNS 解決
正引き解決 ドメイン名を IP に解決します
逆引き解決 IP をドメイン名に解決します
DNS 解決プロセス(面接)
1、最初にローカル hosts ファイルを探し、対応する IP とドメイン名のマッピング関係が存在すれば返します
2、hosts ファイルに見つからなければ、ローカルキャッシュを探し、見つかれば結果を返し解決を完了します
3、ローカルキャッシュに見つからなければ、ローカルドメインサーバーを探し、見つかれば結果を返し解決を完了します
4、ローカルドメインサーバーに見つからなければ、フォワード検索を設定している場合はフォワードサーバーを探し、見つかれば返します。
見つからなければ、ルートドメインを探し、最初にルートドメインでトップレベルドメインサーバーの IP アドレスを見つけてローカルドメインサーバーに返します
ローカルドメインサーバーは再びトップレベルドメインサーバーを探し、見つからなければセカンドレベルサーバーの IP アドレスを返し、ローカルドメインサーバーはセカンドレベルを探し、見つからなければサードレベルの IP アドレスを返します…… 反復検索を行い、全体のドメイン名が見つかるまで返します5、DNS の反復クエリの後、結果を取得できれば、ローカルドメインサーバーに返し、ローカルドメインサーバーはクライアントに返します
#注:DNS クライアントの反復検索
DNS サービスの簡単な構築
ソフトウェアパッケージのインストール
bind
bind-utils設定ファイル
主設定ファイル /etc/named.conf
ドメイン設定ファイル /etc/named.rfc1912.zones
データディレクトリ /var/named 以下のファイルは named ユーザーに読み取り権限を与える必要がありますDNS ポート 53 UDP
レコードタイプ
A レコード 正引き解決レコード
PTR レコード 逆引き解決レコード
CNAME エイリアス
MX メールレコード
NS 権限 DNS サーバーワイルドカードドメイン解決
ドメイン sc.com に対して追加:* A 192.168.0.39 # 注:これはホスト名のワイルドカードドメイン解決に過ぎません
任意のホスト名を示します 123.sc.com # 注:abc.123.sc.com は不可
abc.sc.com
一般的なドメイン名解決コマンド
ping
host
dig
nslookup
関連設定ファイル
/etc/hosts ドメイン名と IP の対応関係を指定し、最優先されます
/etc/resolv.conf DNS サーバーのアドレスを指定します
ネットワークの接続性はサービスへのアクセスの前提条件です