🖋️

VirtualBoxで仮想環境を作ってみた

2024/12/31に公開

Junosをお手軽に触れる環境がほしい

と思って簡単なお試し環境を作ってみようと思ってやってみた。
毎度のことながら作るところでは時間を忘れて没頭するが一度作り終わってしまうと飽きてしまって諸々と忘れてしまう。。
と、いうことで備忘録的にzennを使うことにしてみた。

作ってみた構成

こんな感じの構成を作ってみた

準備するもの

  • windows10
  • Virtualbox 6.1.28 r147628 (Qt5.6.2)
  • Vagrant 2.3.0
  • CentOS 7.9.2009
  • Ubuntu 20.04.5 LTS

各種インストール

Virtualbox

割愛(ググればいろいろ出てくる)
今回インストールしたのはこちら

Vagrant

割愛(ググればいろいろ出てくる)
今回インストールしたのはこちら

C:\Users>vagrant --version
Vagrant 2.3.0

C:\Users>

CentOS

割愛(ググればいろいろ出てくる)
今回インストールしたのはこちら

[ban@localhost ~]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

[ban@localhost ~]$

Ubuntu

割愛(ググればいろいろ出てくる)
今回インストールしたのはこちら

ban@UoVb:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
ban@UoVb:~$

セットアップ

Virtualbox

  • CIDR設定
    ファイル ⇒ 環境設定 ⇒ ネットワーク ⇒ NATネットワーク詳細
    ネットワーク CIDRにお好みのセグメントを設定
    イメージではDHCPにチェックが入っているが全部固定でIP振るので要らない

  • ポートフォワーディングの設定
    ファイル ⇒ 環境設定 ⇒ ネットワーク ⇒ NATネットワーク詳細 ⇒ ポートフォワーディング
    母艦(ホストOS)のどのポート向けにアクセスしたら仮想ホストのどのポートにアクセスされるかをお好みで設定
    イメージではCentOSとubuntuの設定をしたところ
    必要に応じて随時追加していく

  • ゲストOS設定
    ゲストOS ⇒ 設定 ⇒ ネットワーク ⇒ アダプター1 ⇒ 割り当て:NATネットワーク

Vagrant

  • プラグインのインストール
C:\Users\ban>vagrant plugin install vagrant-junos
Installing the 'vagrant-junos' plugin. This can take a few minutes...
Fetching vagrant-junos-0.2.1.gem
Installed the plugin 'vagrant-junos (0.2.1)'!

C:\Users\ban>
C:\Users\ban>vagrant plugin install vagrant-host-shell
Installing the 'vagrant-host-shell' plugin. This can take a few minutes...
Fetching vagrant-host-shell-0.0.4.gem
Installed the plugin 'vagrant-host-shell (0.0.4)'!

C:\Users\ban>
C:\Users\ban>vagrant plugin list
vagrant-host-shell (0.0.4, global)
vagrant-junos (0.2.1, global)

C:\Users\ban>
  • vagrantfileの作成
    • ここでは手書きで作成して C:\User\ban 配下に配置
    • ge-0/0/0がmgmtポート
    • vsrx1、vsrx2のge-0/0/1~3を各々同じ内部ネットワーク(1-2-1~3)で接続
Vagrant.configure(2) do |config|
  config.vm.box = "juniper/ffp-12.1X47-D15.4-packetmode"
  config.vm.boot_timeout = 1000

  config.vm.provider "virtualbox" do |vb|
    vb.memory = 512
    vb.cpus = 2
    vb.gui = false
  end

  # vsrx1
  config.vm.define "vsrx1" do |vsrx|
    vsrx.vm.hostname = "vsrx1"
    vsrx.vm.network :forwarded_port, id: "ssh", guest: 22, host: 60232
    # ge-0/0/1
    vsrx.vm.network "private_network",
                     virtualbox__intnet: "1-2-1"
    # ge-0/0/2
    vsrx.vm.network "private_network",
                     virtualbox__intnet: "1-2-2"
    # ge-0/0/3
    vsrx.vm.network "private_network",
                     virtualbox__intnet: "1-2-3"
    config.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--nicpromisc2", "deny"]
    end
  end

  # vsrx2
  config.vm.define "vsrx2" do |vsrx|
    vsrx.vm.hostname = "vsrx2"
    vsrx.vm.network :forwarded_port, id: "ssh", guest: 22, host: 60332
    # ge-0/0/1
    vsrx.vm.network "private_network",
                     virtualbox__intnet: "1-2-1"
    # ge-0/0/2
    vsrx.vm.network "private_network",
                     virtualbox__intnet: "1-2-2"
    # ge-0/0/3
    vsrx.vm.network "private_network",
                     virtualbox__intnet: "1-2-3"
    config.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--nic1", "natnetwork"]
      vb.customize ["modifyvm", :id, "--nat-network1", "NatNetwork1"]
    end
  end

end
  • 一度、vagrantを起動する
    • よしなにvirtualboxにイメージをダウンロードインストールしてくれてboxの設定もしてくれる
    • 結構時間がかかるのでひたすら待つ
C:\Users\ban>vagrant up
・
・
・
==> vsrx2: Setting hostname...
==> vsrx2: Configuring and enabling network interfaces...

C:\Users\ban>
  • ちなみにvagrantの停止はこんな感じ
C:\Users\ban>vagrant halt
==> vsrx2: Attempting graceful shutdown of VM...
==> vsrx1: Attempting graceful shutdown of VM...

C:\Users\ban>

vSRX

  • vsrxを起動してホスト名とIPアドレスの設定(↓の例はvsrx1だけvsrx2も同じコマンドで設定変更する)
    • デフォルト
      • ユーザー:root
      • パスワード:Juniper
root@vsrx1> configure
Entering configuration mode

[edit]
root@vsrx1#

[edit]
root@vsrx1# set interfaces ge-0/0/0 unit 0 family inet address 10.0.2.110/24

[edit]
root@vsrx1#

[edit]
root@vsrx1# show | compare
[edit interfaces]
+   ge-0/0/0 {
+       unit 0 {
+           family inet {
+               address 10.0.2.110/24;
+           }
+       }
+   }

[edit]
root@vsrx1#

[edit]
root@vsrx1# commit check
configuration check succeeds

[edit]
root@vsrx1#

[edit]
root@vsrx1# commit
commit complete

[edit]
root@vsrx1#

[edit]
root@vsrx1# exit
Exiting configuration mode

root@vsrx1> show interfaces terse ge-0/0/0
Interface               Admin Link Proto    Local                 Remote
ge-0/0/0                up    up
ge-0/0/0.0              up    up   inet     10.0.2.110/24

root@vsrx1>

CentOS

  • ユーザー作成(banさんを作る)
[root@CoVb ~]# useradd ban
[root@CoVb ~]#
[root@CoVb ~]# passwd ban
ユーザー ban のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@CoVb ~]#
  • sudoユーザーにする
[root@CoVb ~]# usermod -aG wheel ban
[root@CoVb ~]#
[root@CoVb ~]# su - ban
[ban@CoVb ~]$
[ban@CoVb ~]$ groups
ban wheel
[ban@CoVb ~]$
  • IPアドレスの固定化(ifcfgファイルに追記)
    • enp0s3が10.0.2.0/24セグメント
    • enp0s8が10.0.3.0/24セグメント
    • Virtualboxの仕様っぽいがVirtualboxの仮想ルータは.1となるっぽい
[ban@CoVb ~]$ sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

IPADDR=10.0.2.100
NETMASK=255.255.255.0
GATEWAY=10.0.2.1
DNS1=10.0.2.1
[ban@CoVb ~]$ sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

IPADDR=10.0.3.100
NETMASK=255.255.255.0
GATEWAY=10.0.3.1
DNS1=10.0.3.1
  • 名前解決(yumがコケる時限定)
[ban@CoVb ~]$ sudo vi /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

Ubuntu

  • ユーザー作成(banさんを作る)
    • ubuntuはインストール時に作成しているがコマンドラインから追加したい時こんな感じ
sudo adduser ban
sudo usermod -aG sudo ban
# ログアウトして再度ログインする
  • IPアドレスの固定化(新規で設定ファイルを作成)
    • デフォルトではこんなんしかない
ban@UoVb:~$ ls -l /etc/netplan/
合計 8
-rw-r--r-- 1 root root 104  8月 31 16:01 01-network-manager-all.yaml
ban@UoVb:~$ sudo cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
ban@UoVb:~$
  • なので新しく 99-static-ip.yaml なるファイルを作成してみる
    • enp0s3が10.0.2.0/24セグメント
    • enp0s8が10.0.3.0/24セグメント
    • Virtualboxの仕様っぽいがVirtualboxの仮想ルータは.1となるっぽい
    • のちのち分かったがデフォルトルートをそれぞれのセグメントで持つとエラーを吐くだけでなくaptで外の世界に行こうとするとうまくいかない
    • なのであとから10.0.3.0側のroutes設定はコメントアウトした
ban@UoVb:~$ vi /etc/netplan/99-static-ip.yaml
network:
        version: 2
        renderer: networkd
        ethernets:
                enp0s3:
                        addresses:
                                - 10.0.2.101/24
                        nameservers:
                                addresses: [10.0.2.1]
                        routes:
                                - to: default
                                  via: 10.0.2.1
                enp0s8:
                        addresses:
                                - 10.0.3.101/24
                        nameservers:
                                addresses: [10.0.3.1]
#                        routes:
#                                - to: default
#                                  via: 10.0.3.1
ban@UoVb:~$
  • んで、netplanを反映させる
ban@UoVb:~$ sudo netplan apply

動作確認

CetOS7⇒vSRX

[ban@localhost ~]$ ping 10.0.2.110
PING 10.0.2.110 (10.0.2.110) 56(84) bytes of data.
64 bytes from 10.0.2.110: icmp_seq=1 ttl=64 time=1.35 ms
64 bytes from 10.0.2.110: icmp_seq=2 ttl=64 time=9.35 ms
^C
--- 10.0.2.110 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.359/5.357/9.355/3.998 ms
[ban@localhost ~]$

[ban@localhost ~]$ ssh -l ban 10.0.2.110
The authenticity of host '10.0.2.110 (10.0.2.110)' can't be established.
ED25519 key fingerprint is SHA256:+/uakdMKAEcpCkurKr2gRykHRlVK6AdWZFhZ75BKgdU.
ED25519 key fingerprint is MD5:43:03:25:15:c9:16:21:12:2c:a0:99:a5:68:2f:23:a3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.2.110' (ED25519) to the list of known hosts.
Password:
--- JUNOS 12.1X47-D15.4 built 2014-11-12 02:13:59 UTC
ban@vsrx1>

ban@vsrx1>

ubuntu⇒vSRX

ban@UoVb:~$ ping 10.0.2.110
PING 10.0.2.110 (10.0.2.110) 56(84) バイトのデータ
64 バイト応答 送信元 10.0.2.110: icmp_seq=1 ttl=64 時間=7.22ミリ秒
64 バイト応答 送信元 10.0.2.110: icmp_seq=2 ttl=64 時間=5.01ミリ秒
^C
--- 10.0.2.110 ping 統計 ---
送信パケット数 2, 受信パケット数 2, パケット損失 0%, 時間 1001ミリ秒
rtt 最小/平均/最大/mdev = 5.014/6.116/7.218/1.102ミリ秒
ban@UoVb:~$

ban@UoVb:~$ ssh -l ban 10.0.2.110
Password:
--- JUNOS 12.1X47-D15.4 built 2014-11-12 02:13:59 UTC
ban@vsrx1>

ban@vsrx1>

Discussion