vagrant 및 VirtualBox를 사용하여 IOSXRv 시작

VirtualBox 환경에서의 IOSXRv 검증을 편리하게 하기 위해서vagrant에서 한 번 시작하기를 희망합니다.
본고는 VirtualBox와vagrant의 사전 설치를 전제로 한다.IOSXRv 이미지 파일은 Cisco 웹 사이트에서 얻을 수 있지만 Cisco의 파트너가 될 수 있습니다.Service Contract는 com ID에서 미리 설정해야 합니다.
다음은 다음 소프트웨어를 이용하여 동작을 확인한다.
  • Windows 10 with WSL
  • iosxrv-k9-demo-5.3.3.ova
  • VirtualBox 6.1.20
  • vagrant 2.2.15
  • IOSXRv의 base 이미지 만들기


    iosxrv-k9-demo-5.3.3.더블 클릭 등을 통해ova 이미지 파일을 시작합니다.
    ova 확장자가 VirtualBox와 연결된 환경이라면 가상 컴포지팅 가져오기를 시작합니다.
    여기서는 CPU를 1로, RAM을 2048MB 정도로 설정합니다.네트워크 어댑터는 초기 상태에서 8개로 제작되지만, MgmtEth의 최초가 되는 것 이외에 필요한 손상 체크 상자를 제거합니다.마지막으로 インポート를 클릭합니다.
    virtualboxにovaイメージファイルを登録
    원활한 가져오기가 완료되면 NamedPipe 기구의 콘솔을 추가로 활용하기 위해 제작된 이미지 클릭設定(S).아래 그림처럼 シリアルポート 탭을 선택하고 ポートモード(M) 선택ホストにパイプ, 취소存在するパイプ/ソケットに接続(C)의 검사를 취소하고 パス/アドレス(P)란에 기록\\.\pipe\iosxrv합니다.
    virtualboxからコンソールを設定する
    그러면 콘솔에 연결하기 위해서는 Named Pipe에 연결해야 합니다.
    를 사용하여 NamedPipe를 TCP 포트Named Pipe TCP Proxy로 변환할 수 있습니다.웹 사이트에서 소프트웨어 설치를 다운로드합니다.
    Named Pipe TCP Proxy가 시작된 후 설정된 화면은 다음과 같습니다\\.\pipe\iosxrv 프록시9001/tcp.
    Named Pipe TCP Proxyを設定する
    그리고 이 상태에서 VirtualBox에서 클릭com.cisco.ios-xrv 이미지起動(T)를 클릭한 다음에 WSL 등 단말기부터 다음과 같은 방식9001/tcp으로 텔넷에 접근하여 시작 로그를 컨트롤러로 흐르게 한다.
    프롬프트가 표시될 때까지 기다립니다Enter root-system username:.
    $ telnet localhost 9001
    
                                 GNU GRUB  version 2.00
    
     +--------------------------------------------------------------------------+
     |IOS XRv                                                                   |
     |                                                                          |
     |                                                                          |
     |                                                                          |
     |                                                                          |
     |                                                                          |
     |                                                                          |
     |                                                                          |
     |                                                                          |
     |                                                                          |
     |                                                                          |
     +--------------------------------------------------------------------------+
    
          Use the ^ and v keys to select which entry is highlighted.
          Press enter to boot the selected OS, `e' to edit the commands
          before booting or `c' for a command-line. ESC to return
          previous menu.
    
    ...snip...
    
    루트-System으로 설정된usename/secret은 모두 vagrant로 설정되었습니다.이usename/secret을admin-config로 설정하여vagrant에서 접근하는 데 사용합니다.
    !!!!!!!!!!!!!!!!!!!! NO root-system username is configured. Need to configure root-system username. !!!!!!!!!!!!!!!!!!!!
    
             --- Administrative User Dialog ---
    
    
      Enter root-system username: vagrant
      Enter secret:
    
    VM에 로그인하려면 여기서 잠시 기다려야 합니다.
    알림이 다음과 같이 표시되면 설정된 사용자가 로그인할 수 있습니다 vagrant.
    User Access Verification
    
    Username: vagrant
    Password:
    
    
    RP/0/0/CPU0:ios#
    
    이제 IOSXRv 이미지의 초기 구성에 들어가겠습니다.
    RP/0/0/CPU0:ios#configure
    RP/0/0/CPU0:ios(config)#hostname iosxrv
    RP/0/0/CPU0:ios(config)#aaa authentication login default local
    RP/0/0/CPU0:ios(config)#ssh server v2
    RP/0/0/CPU0:ios(config)#ssh server logging
    RP/0/0/CPU0:ios(config)#telnet vrf default ipv4 server max-servers 15
    RP/0/0/CPU0:ios(config)#interface MgmtEth 0/0/CPU0/0 ipv4 address dhcp
    RP/0/0/CPU0:ios(config)#no interface MgmtEth 0/0/CPU0/0 shutdown
    RP/0/0/CPU0:ios(config)#commit
    RP/0/0/CPU0:ios(config)#exit
    
    외부로부터의 ssh 접근을 위해 IOSXRv 이미지에 키 쌍을 만들어야 하기 때문에 잊지 마세요.
    RP/0/0/CPU0:iosxrv#crypto key generate rsa
    
    The name for the keys will be: the_default
      Choose the size of the key modulus in the range of 512 to 4096 for your General Purpose Keypair. Choosing a key modulus greater than 512 may take a few minutes.
    
    How many bits in the modulus [1024]:
    Generating RSA keys ...
    Done w/ crypto generate keypair
    [OK]
    
    설정이 모두 완료되면 다음과 같습니다.
    RP/0/0/CPU0:iosxrv#show running-config
    Building configuration...
    !! IOS XR Configuration 5.3.3
    !! No configuration change since last restart
    !
    hostname iosxrv
    telnet vrf default ipv4 server max-servers 15
    aaa authentication login default local
    interface MgmtEth0/0/CPU0/0
     ipv4 address dhcp
    !
    ssh server v2
    ssh server logging
    end
    
    RP/0/0/CPU0:iosxrv#admin show running-config
    Building configuration...
    !! IOS XR Admin Configuration 5.3.3
    username vagrant
     group root-system
     secret 5 $1$gszu$edh0GNZQTZe7mfx8QNBk.1
    !
    end
    
    RP/0/0/CPU0:iosxrv#show crypto key mypubkey rsa
    Key label: the_default
    Type     : RSA General purpose
    Size     : 1024
    Created  : 00:00:00 UTC Mon May 10 2021
    Data     :
     30819F30 0D06092A 864886F7 0D010101 05000381 8D003081 89028181 00CE553D
     F00E7081 DCA54B0A 1CC81CAE 038B289E 802D295C CEAB8244 3D8A0C2C 706CD6D2
     FEDC0EA7 2A928F02 41D1F82D B0E41E57 292575E5 81F9FC78 3399D649 E6C248D0
     76B06369 F1EA3DCB B9BA8F39 89C4A0C4 63B3529D 42A9BC83 102A4FBB 938C4CD0
     836BA6A9 E35D089B 349F65E5 4D37F482 1C187E36 88B92D11 54241F28 A5020301
     0001
    

    IOSXRv base 이미지에서 vagrant box 파일 만들기


    IOSXRv 이미지는 box 파일을 만들 때 VirtualBox에서 shoutdown을 미리 진행해야 합니다.
    먼저 box 파일을 만드는 데 필요한 Vagrantfile을 만듭니다.
    $ cat <<EOL> embedded_vagrantfile
    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    Vagrant.configure(2) do |config|
      config.vm.synced_folder ".", "/vagrant", disabled: true
      config.vm.boot_timeout = 400
    
      config.ssh.username = "vagrant"
      config.ssh.password = "vagrant"
      config.ssh.insert_key = false
    end
    EOL
    
    이어서 다음 명령으로 IOSXRv 이미지에서box 파일을 만듭니다.
    $ vagrant pacakge --base com.cisco.ios-xrv --output iosxrv-k9-demo-5.3.3.box --vagrantfile embedded_vagrantfile
    ==> com.cisco.ios-xrv: Exporting VM...
    ==> com.cisco.ios-xrv: Compressing package to: /tmp/iosxrv/iosxrv-k9-demo-5.3.3.box
    ==> com.cisco.ios-xrv: Packaging additional file: embedded_vagrantfile
    
    이 박스 파일을vagrant에 등록합니다.박스 이름은 여기iosxrv/5.3.3입니다.
    $ vagrant box add iosxrv-k9-demo-5.3.3.box --name iosxrv/5.3.3
    ==> box: Box file was not detected as metadata. Adding it directly...
    ==> box: Adding box 'iosxrv/5.3.3' (v0) for provider:
        box: Unpacking necessary files from: file:///tmp/iosxrv/iosxrv-k9-demo-5.3.3.box
    ==> box: Successfully added box 'iosxrv/5.3.3' (v0) for 'virtualbox'!
    
    $ vagrant box list
    iosxrv/5.3.3       (virtualbox, 0)
    

    vagrant에서 IOSXRv 이미지 시작하기


    VM을 시작할 때도 Vagrantfile이 필요하기 때문에 이것을 먼저 만듭니다.
    IOSXRv의 버전이 (가능한 경우) 6.0.0보다 오래된 경우, IOSXRv 이미지에서 만든 키 쌍의algorithmaes256-cbc, aes192-cbc, aes128-cbc 표준상vagrant의Net::SSH는 지원되지 않습니다.따라서 Vagrantfile 시작 부분에 임시 및 강제 지원이 포함됩니다.
    $ cat <<EOL> Vagrantfile
    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    class Net::SSH::Transport::Algorithms
      DEFAULT_ALGORITHMS[:encryption].unshift('aes256-cbc', 'aes192-cbc', 'aes128-cbc')
    end
    
    Vagrant.configure(2) do |config|
      config.vm.box = "iosxrv/5.3.3"
      config.vm.boot_timeout = 400
      config.vm.synced_folder ".", "/vagrant", disabled: true
    
      config.ssh.username = "vagrant"
      config.ssh.password = "vagrant"
      config.ssh.insert_key = false
    end
    EOL
    
    IOSXRv 이미지를 시작합니다.
    그림이 정상적으로 시작되기 전에 시간이 좀 걸리기 때문에 인내심을 가지고 기다려야 한다.내 환경은 3~4분 정도 걸린다.
    $ vagrant up
    Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Importing base box 'iosxrv/5.3.3'...
    ==> default: Matching MAC address for NAT networking...
    ==> default: Setting the name of the VM: iosxrv_default_1620643366529_81167
    ==> default: Clearing any previously set network interfaces...
    ==> default: Preparing network interfaces based on configuration...
        default: Adapter 1: nat
    ==> default: Forwarding ports...
    ==> default: Running 'pre-boot' VM customizations...
    ==> default: Booting VM...
    ==> default: Waiting for machine to boot. This may take a few minutes...
        default: SSH address: 127.0.0.1:2222
        default: SSH username: vagrant
        default: SSH auth method: password
    
    순조롭게 시작하면vagrant에서 ssh로 로그인할 수 있습니다.
    비밀번호는 당연히 vagrant입니다.
    $ vagrant ssh
    ==> default: The machine you're attempting to SSH into is configured to use
    ==> default: password-based authentication. Vagrant can't script entering the
    ==> default: password for you. If you're prompted for a password, please enter
    ==> default: the same password you have configured in the Vagrantfile.
    [email protected]'s password:
    
    
    RP/0/0/CPU0:iosxrv#
    
    그러면 Mgmt 인터페이스에 설정된 IPv4 주소를 확인합니다.
    RP/0/0/CPU0:iosxrv#show ipv4 interface MgmtEth 0/0/CPU0/0 brief
    
    Interface                      IP-Address      Status                Protocol
    MgmtEth0/0/CPU0/0              192.168.33.191 Up                    Up
    
    호스트 PC에서 Mgmt 인터페이스에 설정된 IPv4 주소에 액세스할 수 있습니다.텔넷에 연결해 보았습니다. 아래와 같습니다.
    사용자name/password는 vagrant/vagrant일 수도 있지만 IOSXRv 이미지의 기본값cisco/cisco에 로그인할 수도 있습니다.
    $ telnet 192.168.33.191
    Trying 192.168.33.191...
    Connected to 192.168.33.191.
    Escape character is '^]'.
    
    
    
    IMPORTANT:  READ CAREFULLY
    Welcome to the Demo Version of Cisco IOS XRv (the "Software").
    The Software is subject to and governed by the terms and conditions
    of the End User License Agreement and the Supplemental End User
    License Agreement accompanying the product, made available at the
    time of your order, or posted on the Cisco website at
    www.cisco.com/go/terms (collectively, the "Agreement").
    As set forth more fully in the Agreement, use of the Software is
    strictly limited to internal use in a non-production environment
    solely for demonstration and evaluation purposes.  Downloading,
    installing, or using the Software constitutes acceptance of the
    Agreement, and you are binding yourself and the business entity
    that you represent to the Agreement.  If you do not agree to all
    of the terms of the Agreement, then Cisco is unwilling to license
    the Software to you and (a) you may not download, install or use the
    Software, and (b) you may return the Software as more fully set forth
    in the Agreement.
    
    
    Please login with any configured user/password, or cisco/cisco
    
    
    User Access Verification
    
    Username: cisco
    Password:
    
    
    RP/0/0/CPU0:iosxrv#
    
    이후 넷conf 설정을 추가하거나 자신의 취향에 따라 검증할 수 있다.
    부팅된 VM을 중지, 제거하는 방법은 다음과 같습니다.
    $ vagrant halt
    $ vagrant destroy -f
    
    Enjoy! 🎉

    좋은 웹페이지 즐겨찾기