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サーバに問い合わせると言った手段がある。
それらをどういった順序で利用するか設定するファイル。
設定例を確認します。
hosts: files dns myhostname
注目するのは、hostsの部分。
優先順位が、files
→ dns
→myhostname
となっているので、
何らかの名前解決を行う際、まずfilesの指定によりローカルにある/etc/hosts
ファイルが参照され、
これに失敗するとdnsの指定により/etc/resolv.conf
の中で定義したDNSサーバに問い合わせが行われる、という順になる。
※file:ローカルにあるファイル/etc/hostsという意味
2: ローカルにあるファイル/etc/hostsの名前解決
/etc/hostsは、ホスト名とIPアドレスを対応させるためのファイル。
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を記述し、名前解決できるようにします。
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
ファイルに設定する。
[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
ディレクトリ
[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を設定したので、それぞれのファイルが存在している
[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
で反映させる。