13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【linux】名前解決の仕組み

Posted at

Linux上でネットワーク設定に使う主な設定ファイルは以下の5つ(必ず覚えること)

①「/etc/hostname」:ホスト名の定義
②「/etc/hosts」:ホスト名とIPアドレスを対応させるためのファイル
②「/etc/resolv.conf」:名前解決の設定を行うファイル
④「/etc/nsswitch.conf」:名前解決を行う優先順位を指定するファイル
⑤「/etc/sysconfig/network-scripts/ifcfg-enp0s3」:NIC(インターフェイス)ごとの設定を行うファイル

※名前解決:ホスト名をIPアドレスに変換すること

本記事を読んで理解できること

■Linuxマシーンで名前解決を行う仕組みと順番
■ネットワークの設定
→NICを有効にするか否か、IPアドレスを静的に割り当てるかDHCPで割り当てるか、
静的に割り当てる場合のIPアドレスやネットマスクなど.(CiscoルータでIPアドレス設定やルーティングテーブル設定したのと同じことをlinux上でもしているだけ)

※Red Hat系のみ解説

Linux上で名前解決の順序

Linuxでは次のような流れで名前解決が行われている。

1:/etc/nsswitch.confで名前解決の順番を確認

同ファイルは、名前解決を行う優先順位を指定するファイル。
名前解決では①/etc/hostsファイルを使う②dnsサーバに問い合わせると言った手段がある。
それらをどういった順序で利用するか設定するファイル。
設定例を確認します。

/etc/nsswitch.conf
hosts:      files dns myhostname

注目するのは、hostsの部分。
優先順位が、filesdnsmyhostnameとなっているので、
何らかの名前解決を行う際、まずfilesの指定によりローカルにある/etc/hostsファイルが参照され、
これに失敗するとdnsの指定により/etc/resolv.confの中で定義したDNSサーバに問い合わせが行われる、という順になる。
※file:ローカルにあるファイル/etc/hostsという意味

2: ローカルにあるファイル/etc/hostsの名前解決

/etc/hostsは、ホスト名とIPアドレスを対応させるためのファイル。

/etc/hosts
 1 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdoma        in4
 2 ::1         localhost localhost.localdomain localhost6 localhost6.localdoma        in6

デフォルトでは、ローカルループバックアドレスのIPv4&6の記載しかありません。

例えばyahoo.co.jpにアクセスしたい場、現状だとwww.yahoo.co.jp(ホスト名)に対応したIPアドレスが
/etc/hostsに記載がないので、このままだとDNSサーバに名前解決を頼むことになります(/etc/nsswitch.conf

試しに、/etc/hostsにyahooのIPを記述し、名前解決できるようにします。

/etc/hosts
1 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
2 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
3 #↓追記
4 183.79.219.252 yahoo

ホスト名でpingを送れているので、名前解決に/etc/hostsの内容が使われていることがわかります。

[root@localhost ~]# ping yahoo
PING yahoo (183.79.219.252) 56(84) bytes of data.
64 bytes from yahoo (183.79.219.252): icmp_seq=1 ttl=50 time=75.9 ms
64 bytes from yahoo (183.79.219.252): icmp_seq=2 ttl=50 time=43.2 ms

ただしhostsファイルは小規模NW向きの名前解決フィル。
大規模NWには向かない。

3:DNS SVの定義/etc/resolv.conf

前述した/etc/hostsで名前解決できない場合、DNSによる名前解決が必要であり
どこのDNSサーバを参照するか設定する必要があります。
参照先のDNSサーバは/etc/resolv.confファイルに設定する。

/etc/resolv.conf
[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.11.1

nameserverの行に参照先DNSサーバのIPアドレスを記述する

4:/etc/sysconfigディレクトリについて

/etc/sysconfig」ディレクトリには、Red Hat系列のLinuxディストリビューションでは
ネットワーク関係のディレクトリが置かれています。
そのため、CUIベースでネットワーク関係の設定を行う際には、ここのディレクトリに
置かれたファイルを編集するのは必須となります。

以上の3つのファイルで名前解決のために使用される。

IF(NIC)の定義 /etc/sysconfig/network-scripts ディレクトリ

/etc/sysconfig/network-scripts/
[root@localhost ~]# ls -l /etc/sysconfig/network-scripts/
合計 8
-rw-r--r--. 1 root root 249  9月 26 08:34 ifcfg-enp0s3
-rw-r--r--. 1 root root 322 10月 20 15:19 ifcfg-enp0s8

仮想サーバ上に2つのNICを設定したので、それぞれのファイルが存在している

/etc/sysconfig/network-scripts/ifcfg-enp0s8
[root@localhost ~]# nl /etc/sysconfig/network-scripts/ifcfg-enp0s8
     1	TYPE=Ethernet
     2	HWADDR=18:a0:27:06:0B:53
     3	PROXY_METHOD=none
     4	BROWSER_ONLY=no
     5	BOOTPROTO=none   
     6	IPADDR=192.169.11.2
     7	PREFIX=24
     8	DEFROUTE=yes
     9	IPV4_FAILURE_FATAL=yes
    10	IPV6INIT=yes
    11	IPV6_AUTOCONF=yes
    12	IPV6_DEFROUTE=yes
    13	IPV6_FAILURE_FATAL=no
    14	IPV6_ADDR_GEN_MODE=stable-privacy
    15	NAME=enp0s8
    16	UUID=b7c0s8a7-1016-41c5-bfc8-4d69qa9eba41
    17	ONBOOT=yes

/etc/sysconfigディレクトリには、Red Hat系列のLinuxディストリビューションでは
ネットワーク関係のディレクトリが置かれています。
そのため、CUIベースでネットワーク関係の設定を行う際には、ここのディレクトリに
置かれたファイルを編集するのは必須となります。

IFに対するIPアドレスの設定がviコマンドで直接編集ではなく、
nmtuiコマンドで設定
systemcyl restart NetworkManagerで反映させる。

13
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?