LoginSignup
0
0

【KVM入門③】〜DNSとhostsの設定を行う〜

Last updated at Posted at 2024-06-02

KVM入門一覧

  1. 【KVM入門⓪】〜Linuxの基礎知識〜
  2. 【KVM入門①】〜KVMを使って仮想マシンを作成する〜
  3. 【KVM入門②】〜複数の仮想マシンを作成して仮想マシン間で通信を行えるようにする〜
  4. 【KVM入門③】〜DNSとhostsの設定を行う〜👈今ここ
  5. 【KVM入門④】〜NFSを使って全ての仮想マシンでファイルを共有する〜
  6. 【KVM入門⑤】〜LDAPを使ってユーザ情報などを一元管理する〜

はじめに

KVMシリーズ第3回です。

前回で8.8.8.8や他の仮想マシンとの通信は成功しました。

しかしこのままでは名前解決ができないため、例えばping google.comdnf updateをしようと思ってもうまくいきません。

そこで、DNSとhostsの変更を行い、以下の図の赤色の部分を設定するところまでをこの回の目標とします。

image.png

すること

1. DNSの設定と確認

仮想マシンに接続する。

sudo virsh console test-vm1

DNSサーバの設定を行う。

なお、8.8.8.88.8.4.4はそれぞれGoogle Public DNSの優先DNSサーバ、代替DNSサーバである1

nmcli con mod enp1s0 ipv4.dns "8.8.8.8 8.8.4.4"

ネットワークの再接続を行う。

nmcli con down enp1s0
nmcli con up enp1s0

以下のようにpingが通れば設定は成功している。

[xxx@localhost ~]# ping google.com -c 3
PING google.com (142.250.207.110) 56(84) bytes of data.
64 bytes from kix06s11-in-f14.1e100.net (142.250.207.110): icmp_seq=1 ttl=115 time=2.55 ms
64 bytes from kix06s11-in-f14.1e100.net (142.250.207.110): icmp_seq=2 ttl=115 time=2.91 ms
64 bytes from kix06s11-in-f14.1e100.net (142.250.207.110): icmp_seq=3 ttl=115 time=2.67 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 2.549/2.711/2.911/0.150 ms

2. /etc/hostsの変更

仮想マシン間でも名前解決ができるように/etc/hostsの変更を行う。

vi /etc/hosts

以下のように書き込む。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.1  vm1 vm1.test.internal
172.16.1.2  vm2 vm2.test.internal
172.16.1.3  vm3 vm3.test.internal
172.16.1.4  vm4 vm4.test.internal

上のように書くことで、vm1vm1.test.internalの名前をどちらも使うことができる。
つまり、ping 172.16.1.1ping vm1ping vm1.test.internalのコマンドは全て同じホストとの通信を行う。

以下のように表示されれば設定は成功している。

[xxx@vm1 ~]# ping vm1 -c 3
PING vm1 (172.16.1.1) 56(84) bytes of data.
64 bytes from vm1 (172.16.1.1): icmp_seq=1 ttl=64 time=0.056 ms
64 bytes from vm1 (172.16.1.1): icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from vm1 (172.16.1.1): icmp_seq=3 ttl=64 time=0.072 ms

--- vm1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2052ms
rtt min/avg/max/mdev = 0.035/0.054/0.072/0.015 ms
[xxx@vm1 ~]# ping vm2 -c 3
PING vm2 (172.16.1.2) 56(84) bytes of data.
64 bytes from vm2 (172.16.1.2): icmp_seq=1 ttl=64 time=0.314 ms
64 bytes from vm2 (172.16.1.2): icmp_seq=2 ttl=64 time=0.249 ms
64 bytes from vm2 (172.16.1.2): icmp_seq=3 ttl=64 time=0.336 ms

--- vm2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2013ms
rtt min/avg/max/mdev = 0.249/0.299/0.336/0.036 ms
[xxx@vm1 ~]# ping vm3 -c 3
PING vm3 (172.16.1.3) 56(84) bytes of data.
64 bytes from vm3 (172.16.1.3): icmp_seq=1 ttl=64 time=0.239 ms
64 bytes from vm3 (172.16.1.3): icmp_seq=2 ttl=64 time=0.280 ms
64 bytes from vm3 (172.16.1.3): icmp_seq=3 ttl=64 time=0.356 ms

--- vm3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2037ms
rtt min/avg/max/mdev = 0.239/0.291/0.356/0.048 ms
[xxx@vm1 ~]# ping vm4 -c 3
PING vm4 (172.16.1.4) 56(84) bytes of data.
64 bytes from vm4 (172.16.1.4): icmp_seq=1 ttl=64 time=0.202 ms
64 bytes from vm4 (172.16.1.4): icmp_seq=2 ttl=64 time=0.378 ms
64 bytes from vm4 (172.16.1.4): icmp_seq=3 ttl=64 time=0.277 ms

--- vm4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2064ms
rtt min/avg/max/mdev = 0.202/0.285/0.378/0.072 ms

3. ホスト名の変更

各仮想マシンに接続し、ホスト名を恒久的に変更する2

sudo hostnamectl set-hostname vm1.test.internal

ターミナルの表示を変更するために一旦ログインし直す。

exit

以下のように表示されればホスト名の変更は成功している。

[xxx@vm1 ~]# uname -n
vm1.test.internal

解説

DNSとhostsの違い

DNSとhostsは両方とも名前解決の技術である。

以下のような違い3がある。

hosts DNS
歴史 名前解決のために最初に生まれた コンピュータが爆発的に増えたため生まれた
使う場所 LAN インターネット
使い方 /etc/hostsを編集する(Linux, Unix, Mac) ドメイン取得サービスでドメインを取得する

.internalとは

今まではプライベートネットワーク内で何らかのドメインを使用したい場合、インターネット上のドメインと衝突してしまう可能性があった。これを名前衝突4という。

名前衝突が起こると意図せず外部との通信が行われ、情報が漏洩してしまうリスクがあった。

そこで、プライベートネットワークで使うためのトップレベルドメイン(TLD)としてICANNが暫定的に採用したものが.internalである5(2024/6/2現在)。

さいごに

今回はDNSとhostsの設定を行い、名前解決をできるようにする方法を紹介しました。

次回はNFSを使って全ての仮想マシンでファイルを共有できるようにしていきます。

  1. Wikipedia. Google Public DNS. https://ja.wikipedia.org/wiki/Google_Public_DNS

  2. Server World. ホスト名を設定する. https://www.server-world.info/query?os=Rocky_Linux_8&p=hostname

  3. vanaryu(Tachibana). 【新人向け】わかるようでわかってなかったhostsとDNSのこと〜歴史を知れば覚えられる〜. https://qiita.com/vanaryu/items/6de34a3d611d6b78848e

  4. 名前衝突(Name Collision)問題. https://www.nic.ad.jp/ja/dom/new-gtld/name-collision/

  5. ITmedia Inc. 「.INTERNAL」を私的用途のトップレベルドメインに ICANNが暫定的に決定、その理由とは?. https://atmarkit.itmedia.co.jp/ait/articles/2402/17/news043.html

0
0
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
0
0