LoginSignup
0
0

VMクラスタを作ってみる:仮想マシンのネットワーク構築編

Last updated at Posted at 2024-04-24

仮想マシンのネットワーク構築

今回作成するネットワークは以下のような構成とする。

Screen Shot 2024-04-24 at 21.25.43.png
(引用:https://xtech.nikkei.com/it/article/COLUMN/20131118/518647/)

virt-installによるvmの作成

sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system
sudo usermod -aG kvm {USER}
sudo usermod -aG libvirt {USER}

再起動

virt-install \
--name test-node \
--description "This is the test node" \
--ram 4096 \
--disk path=/var/lib/libvirt/images/node-test.img,size=10 \
--vcpus 2 \
--os-variant  ubuntu22.04 \
--network default \
--location /home/{USER}/RINKO/ubuntu-22.04.4-live-server-amd64.iso,initrd=casper/initrd,kernel=casper/vmlinuz \
--graphics none \
--console pty,target_type=serial \
--extra-args console=ttyS0,115200n8

virbr0の設定変更

virsh net-edit default

設定を編集

<network>
  <name>default</name>
  <uuid>d5e58ece-d152-4a87-a768-4339b82940d5</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:3b:67:93'/>
  <ip address='192.168.1.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.1.2' end='192.168.1.254'/>
    </dhcp>
  </ip>
</network>

defaultネットワークの再起動

virsh net-destroy default
virsh net-start default

ゲストマシンのIPアドレス設定

/etc/netplanを編集

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
      addresses: [192.168.1.2/24]
      routes:
      - to: default
        via: 192.168.1.1
      nameservers:
        addresses: [192.168.1.100, 8.8.8.8]
        

もとあったyamlファイルを削除もしくは.bakに変更

sudo chmod 600 <file name>
sudo netplan apply

以上で最初に示した画像のようなネットワークを作ることができる。

裏で動いているIPテーブルの話

この環境でNATはホストマシンで実行されている

$ sudo iptables -t nat -L -v
Chain LIBVIRT_PRT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    7   486 RETURN     all  --  any    any     192.168.1.0/24       base-address.mcast.net/24 
    0     0 RETURN     all  --  any    any     192.168.1.0/24       255.255.255.255     
    1    60 MASQUERADE  tcp  --  any    any     192.168.1.0/24      !192.168.1.0/24       masq ports: 1024-65535
    6   456 MASQUERADE  udp  --  any    any     192.168.1.0/24      !192.168.1.0/24       masq ports: 1024-65535
    1    84 MASQUERADE  all  --  any    any     192.168.1.0/24      !192.168.1.0/24 

libvirt は、仮想ネットワークを作成する際に、VM から外部ネットワークへの通信を可能にするために、IP マスカレード(一種の NAT)を設定します。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

VMの削除(おまけ)

virsh undefine test-node --remove-all-storage

ゲストマシンをDNS登録

これはLDAP over TLSを使用するのに必要
LDAP over TLSはSSSDを利用するのに必要
SSSD以外でユーザ情報の共有認証を行う場合は必要ないかもしれない

ドキュメントや最初の画像によるとvirth0にデフォルトのDNSが付いてそうだがその設定方法がどうしてもわからなかったため、もう一台DNS用のVMを用意してDNSを設定した。その記事は以下。
ローカルDNSを設置する

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