とあるシステムの中の人

プログラミング、育児、武道、3Dグラフィック、ゲーム開発

Esxi上で切り離されたLAB用ネットワークを構築し、固定IP割り当てる

Esxi上で切り離されたLAB用ネットワークを構築し、固定IP割り当てる

  • 例えば、外部から自宅LABに繋げて遊びたい時に、NATを使ってポート変換し、外部からアクセス可能にすることを考えます。
    • いろいろと忙しい最中、ちょっとした空き時間にLABれたら素敵だからです。
  • しかしこの方式ですと、LABにマシンを追加するたびにNATをいじらなければなりません。
    • 管理が面倒です。(例えば閉じたい時にたくさん閉じなければならず、面倒です。)
  • なのでssh接続専用のゲートのようなものを作成することを考えます。
  • その上でsshのゲートから分離されたLANを構築し、その中で各マシンに固定IPを設定します。
  • もちろん、セキュリティ対策は万全にしておきます。(パスワードは複雑、暗号化方式はIPAの高度セキュリティに準拠、ポートは22を使わないなど。)
  • これらの方式は物理環境では資材を用意する必要がありますが、現在では便利にEsxiなどの仮想ハイパーバイザーを利用することで簡単に実装できます。

ハイパーバイザー側の構成

  • Esxiの仮想スイッチを新たに追加します。
    • その際には物理ポートを設定しません。
    • それ以外は特に値を変えずに作成します。
  • さらにポートグループを作成します。
    • こちらに分離させたい仮想マシンを繋げます。
    • 先ほど作成した仮想スイッチを設定しま。
    • それ以外は特に値を変えずに作成します。

ゲストOS側の構成

  • 検証用に2台の仮想マシンを用意し、仮想NICを2本生やします。
  • どちらか片方を先ほど作成したポートグループに属させます。
  • あとは固定IPを割り当てます。
  • 以下はubuntuの際の手順です。
  • ubuntuの時はnetplanを使います。
  • 設定ファイルを修正する前にバックアップを取ります。
$ sudo cp -p /etc/netplan/01-network-manager-all.yaml  /etc/netplan/01-network-manager-all.yaml.bak
  • 編集します。
$ sudo vim /etc/netplan/01-network-manager-all.yaml
$ sudo cat /etc/netplan/01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens160:
      dhcp4: true
  ethernets:
    ens192:
      dhcp4: false
      addresses:
        - 172.8.1.2/24
  • 設定を反映させます。
$ sudo netplan apply
  • 確認します。
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:58:99:eb brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.11.41/24 brd 192.168.11.255 scope global dynamic noprefixroute ens160
       valid_lft 172607sec preferred_lft 172607sec
    inet6 fe80::20c:29ff:fe58:99eb/64 scope link 
       valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:58:99:f5 brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 172.8.1.2/24 brd 172.8.1.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe58:99f5/64 scope link 
       valid_lft forever preferred_lft forever
  • 同じようにもう一台も設定します。
$ sudo cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  renderer: NetworkManager
  ethernets:
    ens160:
      dhcp4: true
  ethernets:
    ens192:
      dhcp4: false
      addresses:
        - 172.8.1.3/24
  • このように設定されました。
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:88:93 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.11.39/24 brd 192.168.11.255 scope global dynamic noprefixroute ens160
       valid_lft 172799sec preferred_lft 172799sec
    inet6 fe80::20c:29ff:fe8c:8893/64 scope link 
       valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:88:9d brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 172.8.1.3/24 brd 172.8.1.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe8c:889d/64 scope link 
       valid_lft forever preferred_lft forever
ttmp@ttmp-virtual-machine:~$ 
  • お互いに疎通が取れることを確認します。
$ ping 172.8.1.2
PING 172.8.1.2 (172.8.1.2) 56(84) bytes of data.
64 bytes from 172.8.1.2: icmp_seq=1 ttl=64 time=0.249 ms
64 bytes from 172.8.1.2: icmp_seq=2 ttl=64 time=0.385 ms
64 bytes from 172.8.1.2: icmp_seq=3 ttl=64 time=0.398 ms
^C
--- 172.8.1.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2038ms
rtt min/avg/max/mdev = 0.249/0.344/0.398/0.067 ms
$ ping 172.8.1.3
PING 172.8.1.3 (172.8.1.3) 56(84) bytes of data.
64 bytes from 172.8.1.3: icmp_seq=1 ttl=64 time=0.106 ms
64 bytes from 172.8.1.3: icmp_seq=2 ttl=64 time=0.488 ms
^C
--- 172.8.1.3 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1007ms
rtt min/avg/max/mdev = 0.106/0.297/0.488/0.191 ms
  • 172.8.1.2仮想マシンから172.8.1.3ssh接続できることを確認します。
$ ssh user@172.8.1.3
user@172.8.1.3's password: 
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.2.0-36-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

Expanded Security Maintenance for Applications is not enabled.

119のアップデートはすぐに適用されます。
これらの更新の75は、標準のセキュリティ更新です。
これらの追加アップデートを確認するには次を実行してください: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

Last login: Sun Dec 24 23:44:37 2023 from 192.168.11.3
user@user-virtual-machine:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:88:93 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.11.39/24 brd 192.168.11.255 scope global dynamic noprefixroute ens160
       valid_lft 172716sec preferred_lft 172716sec
    inet6 fe80::20c:29ff:fe8c:8893/64 scope link 
       valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8c:88:9d brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 172.8.1.3/24 brd 172.8.1.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe8c:889d/64 scope link 
       valid_lft forever preferred_lft forever
  • ssh接続できました。

まとめ

  • 例えば、172.8.1.2sshのゲートとすることで、LAB用のネットワークに所属させたマシンを操作することができるようになります。
  • 仮想ハイパーバイザは、かなり容易にこういった環境を構築することができます。
  • 基礎的なネットワークやlinuxの知識は必要ですが、学ぶだけで新たな資材のコストなどをかけずに実現できます。
  • 学習するだけで日々のLAB生活が豊かにできるなんて、とても良い時代になったものです。