<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <topology xmlns="http://www.cisco.com/VIRL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="0.95" xsi:schemaLocation="http://www.cisco.com/VIRL https://raw.github.com/CiscoVIRL/schema/v0.95/virl.xsd"> <extensions> <entry key="AutoNetkit.infrastructure_only" type="Boolean">false</entry> <entry key="management_network" type="String">flat</entry> <entry key="AutoNetkit.enable_cdp" type="Boolean">true</entry> <entry key="AutoNetkit.IGP" type="String">ospf</entry> </extensions> <node name="iosvl2-1" type="SIMPLE" subtype="IOSvL2" location="296,180"> <extensions> <entry key="config" type="string">! IOSvL2 Config generated on 2017-08-27 23:10 ! by autonetkit_0.23.5 ! version 15.2 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption service compress-config no service config enable password cisco ip classless ip subnet-zero no ip domain lookup ! line vty 0 4 transport input ssh telnet exec-timeout 720 0 password cisco login ! line con 0 password cisco ! hostname iosvl2-1 ! boot-start-marker boot-end-marker ! ! ! no aaa new-model ! vtp domain virl.lab vtp mode transparent ! vlan 2 name ank_vlan2 vlan 3 name ank_vlan3 ! ! ! ! cdp run ! ! ! ip cef no ipv6 cef ! ! spanning-tree mode pvst spanning-tree extend system-id ! vlan internal allocation policy ascending ! ! ! ! vrf definition Mgmt-intf ! address-family ipv4 exit-address-family ! address-family ipv6 exit-address-family ! ! ! ! ! interface Loopback0 description Loopback ! interface GigabitEthernet0/0 description OOB management ! Configured on launch no switchport vrf forwarding Mgmt-intf no ip address no shutdown ! interface GigabitEthernet0/1 description to iosvl2-2 switchport trunk encapsulation dot1q switchport mode trunk no shutdown ! interface GigabitEthernet0/2 description to iosv-1 switchport access vlan 2 switchport mode access no shutdown ! interface GigabitEthernet0/3 description to kali-1 switchport access vlan 2 switchport mode access no shutdown ! interface GigabitEthernet1/0 description to iosv-2 switchport access vlan 2 switchport mode access no shutdown ! ! ip forward-protocol nd ! no ip http server no ip http secure-server ! ! ! ! ! ! control-plane ! ! ! end </entry> <entry key="AutoNetkit.mgmt_ip" type="string"></entry> </extensions> <interface id="0" name="GigabitEthernet0/1"/> <interface id="1" name="GigabitEthernet0/2"/> <interface id="2" name="GigabitEthernet0/3"/> <interface id="3" name="GigabitEthernet1/0"/> <interface id="4" name="GigabitEthernet1/1"/> </node> <node name="iosvl2-2" type="SIMPLE" subtype="IOSvL2" location="520,177"> <extensions> <entry key="config" type="string">! IOSvL2 Config generated on 2017-08-27 23:10 ! by autonetkit_0.23.5 ! version 15.2 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption service compress-config no service config enable password cisco ip classless ip subnet-zero no ip domain lookup ! line vty 0 4 transport input ssh telnet exec-timeout 720 0 password cisco login ! line con 0 password cisco ! hostname iosvl2-2 ! boot-start-marker boot-end-marker ! ! ! no aaa new-model ! vtp domain virl.lab vtp mode transparent ! vlan 2 name ank_vlan2 vlan 3 name ank_vlan3 ! ! ! ! cdp run ! ! ! ip cef no ipv6 cef ! ! spanning-tree mode pvst spanning-tree extend system-id ! vlan internal allocation policy ascending ! ! ! ! vrf definition Mgmt-intf ! address-family ipv4 exit-address-family ! address-family ipv6 exit-address-family ! ! ! ! ! interface Loopback0 description Loopback ! interface GigabitEthernet0/0 description OOB management ! Configured on launch no switchport vrf forwarding Mgmt-intf no ip address no shutdown ! interface GigabitEthernet0/1 description to iosvl2-1 switchport trunk encapsulation dot1q switchport mode trunk no shutdown ! interface GigabitEthernet0/2 description to iosv-1 switchport access vlan 3 switchport mode access no shutdown ! interface GigabitEthernet0/3 description to server-1 switchport access vlan 3 switchport mode access no shutdown ! ! ip forward-protocol nd ! no ip http server no ip http secure-server ! ! ! ! ! ! control-plane ! ! ! end </entry> <entry key="AutoNetkit.mgmt_ip" type="string"></entry> </extensions> <interface id="0" name="GigabitEthernet0/1"/> <interface id="1" name="GigabitEthernet0/2"/> <interface id="2" name="GigabitEthernet0/3"/> </node> <node name="kali-1" type="SIMPLE" subtype="kali" location="193,282"> <extensions> <entry key="config" type="String">#cloud-config bootcmd: - ln -s -t /etc/rc.d /etc/rc.local hostname: kali-1 manage_etc_hosts: true package_update: true packages: - quagga bootcmd: - ip route del default via 172.16.1.1 - ip route add default via 172.16.1.2 runcmd: - start ttyS0 - systemctl start getty@ttyS0.service - systemctl start rc-local - sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config - echo "UseDNS no" >> /etc/ssh/sshd_config - service ssh restart - systemctl enable zebra ospfd users: - default - gecos: User configured by VIRL Configuration Engine 0.23.10 lock-passwd: false name: cisco plain-text-passwd: cisco shell: /bin/bash ssh-authorized-keys: - VIRL-USER-SSH-PUBLIC-KEY sudo: ALL=(ALL) ALL write_files: - path: /etc/init/ttyS0.conf owner: root:root content: | # ttyS0 - getty # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc or RUNLEVEL=[12345] stop on runlevel [!12345] respawn exec /sbin/getty -L 115200 ttyS0 vt102 permissions: '0644' - path: /etc/systemd/system/dhclient@.service content: | [Unit] Description=Run dhclient on %i interface After=network.target [Service] Type=oneshot ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease RemainAfterExit=yes owner: root:root permissions: '0644' - path: /etc/network/interfaces owner: root:root permissions: '0644' content: |- source-directory /etc/network/interfaces.d auto eth0 iface eth0 inet dhcp gateway 172.16.1.2 - path: /etc/rc.local owner: root:root permissions: '0755' content: |- #!/bin/sh ip route del default ip route add default via 172.16.1.2 ip link set eth1 up ip addr add 10.0.0.1/17 dev eth1 # Use routes from Quagga instead #route add -host 192.168.0.1 gw 10.0.0.2 dev eth1 #route add -host 192.168.0.4 gw 10.0.0.2 dev eth1 #route add -net 10.0.0.0/17 gw 10.0.0.2 dev eth1 #route add -net 10.0.128.0/30 gw 10.0.0.2 dev eth1 #route add -host 192.168.0.1 gw 10.0.0.3 dev eth1 #route add -host 192.168.0.4 gw 10.0.0.3 dev eth1 #route add -net 10.0.0.0/17 gw 10.0.0.3 dev eth1 #route add -net 10.0.128.0/30 gw 10.0.0.3 dev eth1 exit 0 - path: /etc/network/interfaces.d/eth1 owner: root:root permissions: '0644' content: |- iface eth1 inet manual - path: /etc/quagga/zebra.conf owner: root:root permissions: '0644' content: |- hostname kali-1 password cisco enable password cisco interface eth0 interface eth1 line vty - path: /etc/quagga/ospfd.conf owner: root:root permissions: '0644' content: |- hostname kali-1 password cisco log stdout interface eth1 ip ospf cost 1 router ospf ospf router-id 10.0.0.1 network 10.0.0.1/17 area 0.0.0.0 network 192.168.0.4/32 area 0.0.0.0 network 10.0.128.2/32 area 0 line vty - path: /root/get-cisco-config.py owner: root:root permissions: '0755' content: |- #!/usr/bin/env python # See # http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15217-copy-configs-snmp.html # and # http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&mibName=CISCO-CONFIG-COPY-MIB # for details from optparse import OptionParser from scapy.all import conf,IP,SNMP,SNMPset,ASN1_OID,ASN1_IPADDRESS,UDP,SNMPvarbind,send parser = OptionParser() parser.add_option("-i", "--iface", dest="iface", help="Interface", default="eth1") parser.add_option("-s", "--src", dest="srcip", help="Source IP Address", default="192.168.1.2") parser.add_option("-d", "--dst", dest="dstip", help="Destination IP Address", default="192.168.1.1") parser.add_option("-t", "--tftp", dest="tftpip", help="TFTP Server IP Address", default="192.168.1.2") parser.add_option("-f", "--cfg", dest="cfg_file", help="Configuration Filename") parser.add_option("-c", "--community", dest="snmpstring", help="SNMP Community Set String", default="secret") (options, args) = parser.parse_args() if options.cfg_file is None: options.cfg_file = "%s-config" % (options.dstip) print "Attempting to download IOS config from %s" % (options.dstip) conf.iface = options.iface i=IP(src=options.srcip,dst=options.dstip)/UDP(sport=161,dport=161) s1=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyEntryRowStatus(14) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.14.112"),value=6)] ) ) s2=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyProtocol(2) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.2.112"),value=1)] ) ) s3=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopySourceFileType(3) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.3.112"),value=4)] ) ) s4=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyDestFileType(4) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.4.112"),value=1)] ) ) s5=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyServerAddress(5) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.5.112"),value=ASN1_IPADDRESS(options.tftpip))] ) ) s6=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyFileName(6) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.6.112"),value=options.cfg_file)] ) ) s7=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyEntryRowStatus(14) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.14.112"),value=1)] ) ) send(i/s1) send(i/s2) send(i/s3) send(i/s4) send(i/s5) send(i/s6) send(i/s7) - path: /root/merge-cisco-config.py owner: root:root permissions: '0755' content: |- #!/usr/bin/env python # See # http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15217-copy-configs-snmp.html # and # http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&mibName=CISCO-CONFIG-COPY-MIB # for details from optparse import OptionParser from scapy.all import conf,IP,SNMP,SNMPset,ASN1_OID,ASN1_IPADDRESS,UDP,SNMPvarbind,send parser = OptionParser() parser.add_option("-i", "--iface", dest="iface", help="Interface", default="eth1") parser.add_option("-s", "--src", dest="srcip", help="Source IP Address", default="192.168.1.2") parser.add_option("-d", "--dst", dest="dstip", help="Destination IP Address", default="192.168.1.1") parser.add_option("-t", "--tftp", dest="tftpip", help="TFTP Server IP Address", default="192.168.1.2") parser.add_option("-f", "--cfg", dest="cfg_file", help="Configuration Filename") parser.add_option("-c", "--community", dest="snmpstring", help="SNMP Community Set String", default="secret") (options, args) = parser.parse_args() if options.cfg_file is None: options.cfg_file = "%s-config" % (options.dstip) print "Attempting to upload IOS config to %s" % (options.dstip) conf.iface = options.iface i=IP(src=options.srcip,dst=options.dstip)/UDP(sport=161,dport=161) s1=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyEntryRowStatus(14) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.14.112"),value=6)] ) ) s2=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyProtocol(2) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.2.112"),value=1)] ) ) s3=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopySourceFileType(3) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.3.112"),value=1)] ) ) s4=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyDestFileType(4) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.4.112"),value=4)] ) ) s5=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyServerAddress(5) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.5.112"),value=ASN1_IPADDRESS(options.tftpip))] ) ) s6=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyFileName(6) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.6.112"),value=options.cfg_file)] ) ) s7=SNMP( community=options.snmpstring, PDU=SNMPset( # iso(1) identified-organization(3) dod(6) internet(1) private(4) # enterprise(1) cisco (9) ciscoMgmt(9) ciscoConfigCopyMIB(96) # ciscoConfigCopyMIBObjects(1) ccCopy(1) ccCopyTable(1) ccCopyEntry(1) # ccCopyEntryRowStatus(14) RANDOM(112) varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.4.1.9.9.96.1.1.1.1.14.112"),value=1)] ) ) send(i/s1) send(i/s2) send(i/s3) send(i/s4) send(i/s5) send(i/s6) send(i/s7) - path: /etc/default/atftpd owner: root:root permissions: '0644' content: |- USE_INETD=false # OPTIONS below are used only with init script OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /srv/tftp" - path: /srv/tftp/router.cfg owner: nobody:nogroup permissions: '0644' content: |- ! ! Last configuration change at 23:19:07 UTC Tue Aug 29 2017 by cisco ! version 15.6 service timestamps debug datetime msec service timestamps log datetime msec service password-encryption ! hostname iosv-2 ! boot-start-marker boot-end-marker ! ! vrf definition Mgmt-intf ! address-family ipv4 exit-address-family ! address-family ipv6 exit-address-family ! enable password 7 060506324F41 ! aaa new-model ! ! aaa authentication login default group radius local line aaa authorization exec default group radius if-authenticated ! ! ! ! ! aaa session-id common ethernet lmi ce ! ! ! mmi polling-interval 60 no mmi auto-configure no mmi pvc mmi snmp-timeout 180 ! ! ! ! ! ! ! ! ! ! ! no ip domain lookup ip domain name virl.info ip cef ipv6 unicast-routing ipv6 cef ! multilink bundle-name authenticated ! ! ! ! username cisco privilege 15 secret 5 $1$WaUX$blEhl/Fee6CSV8WMIvhv4. ! redundancy ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! interface Loopback0 description Loopback ip address 192.168.0.4 255.255.255.255 ! interface GigabitEthernet0/0 description OOB Management vrf forwarding Mgmt-intf ip address 172.16.1.191 255.255.255.0 duplex full speed auto media-type rj45 ! interface GigabitEthernet0/1 description to iosvl2-1 ip address 10.0.0.3 255.255.128.0 ip ospf cost 1 duplex full speed auto media-type rj45 ! router ospf 1 passive-interface Loopback0 network 10.0.0.0 0.0.127.255 area 0 network 192.168.0.4 0.0.0.0 area 0 ! router bgp 1 bgp router-id 192.168.0.4 bgp log-neighbor-changes neighbor 192.168.0.1 remote-as 1 neighbor 192.168.0.1 description iBGP peer iosv-1 neighbor 192.168.0.1 update-source Loopback0 ! address-family ipv4 network 192.168.0.4 mask 255.255.255.255 neighbor 192.168.0.1 activate exit-address-family ! ip forward-protocol nd ! ! no ip http server no ip http secure-server ip ssh server algorithm authentication password ! ip access-list standard IN-VTY permit 172.16.1.0 0.0.0.255 permit 192.168.0.0 0.0.0.255 permit 10.0.128.0 0.0.0.255 ip access-list standard SNMP-RW permit 172.16.1.0 0.0.0.255 permit 192.168.0.0 0.0.0.255 permit 10.0.128.0 0.0.0.3 ! ip radius source-interface Loopback0 ! snmp-server community supersecret RW SNMP-RW snmp-server chassis-id ! ! ! radius server RADIUS address ipv4 10.0.128.2 auth-port 1812 acct-port 1813 key 7 13061E0108030723382727 ! ! control-plane ! banner exec ^ ************************************************************************** * IOSv - Cisco Systems Confidential * * * * Supplemental End User License Restrictions * * * * This IOSv software is provided AS-IS without warranty of any kind. * * Under no circumstances may this software be used separate from * * the Cisco Modeling Labs Software that this software was provided * * with, or deployed or used as part of a production environment. * * * * By using the software, you agree to abide by the terms and * * conditions of the Cisco End User License Agreement at * * http://www.cisco.com/go/eula. * * * * Unauthorized use or distribution of this software is expressly * * prohibited. * ************************************************************************** ^ banner incoming ^ ************************************************************************** * IOSv - Cisco Systems Confidential * * * * Supplemental End User License Restrictions * * * * This IOSv software is provided AS-IS without warranty of any kind. * * Under no circumstances may this software be used separate from * * the Cisco Modeling Labs Software that this software was provided * * with, or deployed or used as part of a production environment. * * * * By using the software, you agree to abide by the terms and * * conditions of the Cisco End User License Agreement at * * http://www.cisco.com/go/eula. * * * * Unauthorized use or distribution of this software is expressly * * prohibited. * ************************************************************************** ^ banner login ^ ************************************************************************** * IOSv - Cisco Systems Confidential * * * * Supplemental End User License Restrictions * * * * This IOSv software is provided AS-IS without warranty of any kind. * * Under no circumstances may this software be used separate from * * the Cisco Modeling Labs Software that this software was provided * * with, or deployed or used as part of a production environment. * * * * By using the software, you agree to abide by the terms and * * conditions of the Cisco End User License Agreement at * * http://www.cisco.com/go/eula. * * * * Unauthorized use or distribution of this software is expressly * * prohibited. * ************************************************************************** ^ ! line con 0 password 7 0822455D0A16 line aux 0 line vty 0 4 exec-timeout 720 0 password 7 1511021F0725 transport input telnet ssh ! no scheduler allocate ! end </entry> </extensions> <interface id="0" name="eth1" ipv4="10.0.0.1" netPrefixLenV4="17"> <extensions> <entry key="AutoNetkit.vlan" type="Integer">2</entry> </extensions> </interface> </node> <node name="iosv-1" type="SIMPLE" subtype="IOSv" location="417,76" ipv4="192.168.0.1"> <extensions> <entry key="AutoNetkit.mgmt_ip" type="string"></entry> <entry key="config" type="String">! IOS Config generated on 2017-08-27 23:10 ! by autonetkit_0.23.5 ! hostname iosv-1 boot-start-marker boot-end-marker ! vrf definition Mgmt-intf ! address-family ipv4 exit-address-family ! address-family ipv6 exit-address-family ! ! ! no aaa new-model ! ! ip cef ipv6 unicast-routing ipv6 cef ! ! service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption no service config enable password cisco ip classless ip subnet-zero no ip domain lookup ip domain name virl.info crypto key generate rsa modulus 768 ip ssh server algorithm authentication password username cisco privilege 15 secret cisco ip access-list standard IN-VTY permit 172.16.1.0 0.0.0.255 permit 192.168.0.0 0.0.0.255 permit 10.0.128.0 0.0.0.255 ip access-list standard SNMP-RW permit 172.16.1.0 0.0.0.255 permit 192.168.0.0 0.0.0.255 permit 10.0.128.0 0.0.0.3 snmp-server community supersecret rw SNMP-RW line vty 0 4 transport input ssh telnet access-class IN-VTY in vrf-also exec-timeout 720 0 password cisco login local line con 0 password cisco ! cdp run ! ! interface Loopback0 description Loopback ip address 192.168.0.1 255.255.255.255 ! interface GigabitEthernet0/0 description OOB Management vrf forwarding Mgmt-intf ! Configured on launch no ip address cdp enable duplex full speed auto no shutdown ! interface GigabitEthernet0/1 description to iosvl2-1 ip address 10.0.0.2 255.255.128.0 cdp enable ip ospf cost 1 duplex full speed auto no shutdown ! interface GigabitEthernet0/2 description to iosvl2-2 ip address 10.0.128.1 255.255.255.252 cdp enable ip ospf cost 1 duplex full speed auto no shutdown ! interface GigabitEthernet0/3 description to admin-1 ip address 10.0.128.5 255.255.255.252 cdp enable ip ospf cost 1 duplex full speed auto no shutdown ! ! ! router ospf 1 network 192.168.0.1 0.0.0.0 area 0 log-adjacency-changes passive-interface Loopback0 network 10.0.0.0 0.0.127.255 area 0 network 10.0.128.0 0.0.0.3 area 0 network 10.0.128.4 0.0.0.3 area 0 ! ! router bgp 1 bgp router-id 192.168.0.1 no synchronization ! ibgp ! ibgp peers ! neighbor 192.168.0.4 remote-as 1 neighbor 192.168.0.4 description iBGP peer iosv-2 neighbor 192.168.0.4 update-source Loopback0 ! ! ! address-family ipv4 network 192.168.0.1 mask 255.255.255.255 neighbor 192.168.0.4 activate exit-address-family ! ! ! end</entry> </extensions> <interface id="0" name="GigabitEthernet0/1" ipv4="10.0.0.2" netPrefixLenV4="17"> <extensions> <entry key="AutoNetkit.vlan" type="Integer">2</entry> </extensions> </interface> <interface id="1" name="GigabitEthernet0/2" ipv4="10.0.128.1" netPrefixLenV4="30"> <extensions> <entry key="AutoNetkit.vlan" type="Integer">3</entry> </extensions> </interface> <interface id="2" name="GigabitEthernet0/3"/> </node> <node name="server-1" type="SIMPLE" subtype="server" location="592,287"> <extensions> <entry key="config" type="String">#cloud-config bootcmd: - ln -s -t /etc/rc.d /etc/rc.local hostname: server-1 manage_etc_hosts: true package_update: true packages: - snmp - freeradius - tshark runcmd: - start ttyS0 - systemctl start getty@ttyS0.service - systemctl start rc-local - sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config - echo "UseDNS no" >> /etc/ssh/sshd_config - service ssh restart - service sshd restart - cp /tmp/clients.conf.new /etc/freeradius/clients.conf - cp /tmp/users.new /etc/freeradius/users - systemctl enable freeradius - systemctl start freeradius - chown -R cisco:cisco /home/cisco - sudo -u cisco /home/cisco/http-chatter.sh & - sudo -u cisco /home/cisco/snmp-chatter.sh & users: - default - gecos: User configured by VIRL Configuration Engine 0.23.10 lock-passwd: false name: cisco plain-text-passwd: cisco shell: /bin/bash ssh-authorized-keys: - VIRL-USER-SSH-PUBLIC-KEY sudo: ALL=(ALL) ALL write_files: - path: /etc/init/ttyS0.conf owner: root:root content: | # ttyS0 - getty # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc or RUNLEVEL=[12345] stop on runlevel [!12345] respawn exec /sbin/getty -L 115200 ttyS0 vt102 permissions: '0644' - path: /etc/systemd/system/dhclient@.service content: | [Unit] Description=Run dhclient on %i interface After=network.target [Service] Type=oneshot ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease RemainAfterExit=yes owner: root:root permissions: '0644' - path: /etc/rc.local owner: root:root permissions: '0755' content: |- #!/bin/sh ip route del default ip route add default via 172.16.1.2 ifconfig eth1 up 10.0.128.2 netmask 255.255.255.252 route add -host 192.168.0.1 gw 10.0.128.1 dev eth1 route add -host 192.168.0.4 gw 10.0.128.1 dev eth1 route add -net 10.0.0.0/17 gw 10.0.128.1 dev eth1 route add -net 10.0.128.0/30 gw 10.0.128.1 dev eth1 exit 0 - path: /tmp/clients.conf.new content: | client 192.168.0.0/24 { secret = ciscocisco nastype = cisco shortname = virl } owner: "root:root" permissions: '0640' - path: /tmp/users.new content: | admin Cleartext-Password := "secret123" Service-Type = NAS-Prompt-User, Cisco-AVPair = "shell:priv-lvl=15" owner: "root:root" permissions: '0640' - path: /home/cisco/http-chatter.sh content: | #!/bin/bash while true; do curl -u admin:secret123 http://192.168.0.4 sleep 15 done owner: "root:root" permissions: '0755' - path: /home/cisco/snmp-chatter.sh content: | #!/bin/bash while true; do snmpget -v 2c -c supersecret 192.168.0.4 1.3.6.1.2.1.1.1.0 sleep 15 done owner: "root:root" permissions: '0755' </entry> </extensions> <interface id="0" name="eth1" ipv4="10.0.128.2" netPrefixLenV4="30"> <extensions> <entry key="AutoNetkit.vlan" type="Integer">3</entry> </extensions> </interface> </node> <node name="iosv-2" type="SIMPLE" subtype="IOSv" location="370,291" ipv4="192.168.0.4"> <extensions> <entry key="AutoNetkit.mgmt_ip" type="string"></entry> <entry key="config" type="String">! IOS Config generated on 2017-08-27 23:10 ! by autonetkit_0.23.5 ! version 15.6 service timestamps debug datetime msec service timestamps log datetime msec service password-encryption ! hostname iosv-2 ! boot-start-marker boot-end-marker ! ! vrf definition Mgmt-intf ! address-family ipv4 exit-address-family ! address-family ipv6 exit-address-family ! enable password 7 060506324F41 ! aaa new-model ! ! aaa authentication login default group radius local line aaa authorization exec default group radius if-authenticated ! ! ! ! ! aaa session-id common ethernet lmi ce ! ! ! mmi polling-interval 60 no mmi auto-configure no mmi pvc mmi snmp-timeout 180 ! ! ! ! ! ! ! ! ! ! ! no ip domain lookup ip domain name virl.info ip cef ipv6 unicast-routing ipv6 cef ! multilink bundle-name authenticated ! ! ! ! username cisco privilege 15 secret 5 $1$WaUX$blEhl/Fee6CSV8WMIvhv4. ! redundancy ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! interface Loopback0 description Loopback ip address 192.168.0.4 255.255.255.255 ! interface GigabitEthernet0/0 description OOB Management vrf forwarding Mgmt-intf ip address 172.16.1.182 255.255.255.0 duplex full speed auto media-type rj45 ! interface GigabitEthernet0/1 description to iosvl2-1 ip address 10.0.0.3 255.255.128.0 ip ospf cost 1 duplex full speed auto media-type rj45 ! router ospf 1 passive-interface Loopback0 network 10.0.0.0 0.0.127.255 area 0 network 192.168.0.4 0.0.0.0 area 0 ! router bgp 1 bgp router-id 192.168.0.4 bgp log-neighbor-changes neighbor 192.168.0.1 remote-as 1 neighbor 192.168.0.1 description iBGP peer iosv-1 neighbor 192.168.0.1 update-source Loopback0 ! address-family ipv4 network 192.168.0.4 mask 255.255.255.255 neighbor 192.168.0.1 activate exit-address-family ! ip forward-protocol nd ! ! ip http server ip http authentication aaa login-authentication default no ip http secure-server ip ssh server algorithm authentication password ! ip access-list standard SNMP-RW permit 172.16.1.0 0.0.0.255 permit 192.168.0.0 0.0.0.255 permit 10.0.128.0 0.0.0.3 ! ip radius source-interface Loopback0 ! snmp-server community supersecret RW SNMP-RW snmp-server chassis-id ! ! ! radius server RADIUS address ipv4 10.0.128.2 auth-port 1812 acct-port 1813 key 7 13061E0108030723382727 ! ! control-plane ! banner exec ^ ************************************************************************** * IOSv - Cisco Systems Confidential * * * * Supplemental End User License Restrictions * * * * This IOSv software is provided AS-IS without warranty of any kind. * * Under no circumstances may this software be used separate from * * the Cisco Modeling Labs Software that this software was provided * * with, or deployed or used as part of a production environment. * * * * By using the software, you agree to abide by the terms and * * conditions of the Cisco End User License Agreement at * * http://www.cisco.com/go/eula. * * * * Unauthorized use or distribution of this software is expressly * * prohibited. * ************************************************************************** ^ banner incoming ^ ************************************************************************** * IOSv - Cisco Systems Confidential * * * * Supplemental End User License Restrictions * * * * This IOSv software is provided AS-IS without warranty of any kind. * * Under no circumstances may this software be used separate from * * the Cisco Modeling Labs Software that this software was provided * * with, or deployed or used as part of a production environment. * * * * By using the software, you agree to abide by the terms and * * conditions of the Cisco End User License Agreement at * * http://www.cisco.com/go/eula. * * * * Unauthorized use or distribution of this software is expressly * * prohibited. * ************************************************************************** ^ banner login ^ ************************************************************************** * IOSv - Cisco Systems Confidential * * * * Supplemental End User License Restrictions * * * * This IOSv software is provided AS-IS without warranty of any kind. * * Under no circumstances may this software be used separate from * * the Cisco Modeling Labs Software that this software was provided * * with, or deployed or used as part of a production environment. * * * * By using the software, you agree to abide by the terms and * * conditions of the Cisco End User License Agreement at * * http://www.cisco.com/go/eula. * * * * Unauthorized use or distribution of this software is expressly * * prohibited. * ************************************************************************** ^ ! line con 0 password 7 0822455D0A16 line aux 0 line vty 0 4 exec-timeout 720 0 password 7 1511021F0725 transport input telnet ssh ! no scheduler allocate ! end</entry> </extensions> <interface id="0" name="GigabitEthernet0/1" ipv4="10.0.0.3" netPrefixLenV4="17"> <extensions> <entry key="AutoNetkit.vlan" type="Integer">2</entry> </extensions> </interface> </node> <node name="admin-1" type="SIMPLE" subtype="lxc" location="605,72"> <extensions> <entry key="config" type="String">#cloud-config bootcmd: - ln -s -t /etc/rc.d /etc/rc.local hostname: admin-1 manage_etc_hosts: true runcmd: - systemctl start rc-local - sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config - echo "UseDNS no" >> /etc/ssh/sshd_config - service ssh restart - service sshd restart users: - default - gecos: User configured by VIRL Configuration Engine 0.23.10 lock-passwd: false name: cisco plain-text-passwd: cisco shell: /bin/bash ssh-authorized-keys: - VIRL-USER-SSH-PUBLIC-KEY sudo: ALL=(ALL) ALL write_files: - path: /etc/systemd/system/dhclient@.service content: | [Unit] Description=Run dhclient on %i interface After=network.target [Service] Type=oneshot ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease RemainAfterExit=yes owner: root:root permissions: '0644' - path: /etc/rc.local owner: root:root permissions: '0755' content: |- #!/bin/sh ifconfig eth1 up 10.0.128.6 netmask 255.255.255.252 route add -host 192.168.0.1 gw 10.0.128.5 dev eth1 route add -host 192.168.0.4 gw 10.0.128.5 dev eth1 route add -net 10.0.0.0/16 gw 10.0.128.5 dev eth1 route add -host 192.168.0.1 gw 10.0.128.5 dev eth1 route add -host 192.168.0.4 gw 10.0.128.5 dev eth1 exit 0 </entry> </extensions> <interface id="0" name="eth1"/> </node> <annotations/> <connection dst="/virl:topology/virl:node[2]/virl:interface[1]" src="/virl:topology/virl:node[1]/virl:interface[1]"/> <connection dst="/virl:topology/virl:node[1]/virl:interface[2]" src="/virl:topology/virl:node[4]/virl:interface[1]"/> <connection dst="/virl:topology/virl:node[4]/virl:interface[2]" src="/virl:topology/virl:node[2]/virl:interface[2]"/> <connection dst="/virl:topology/virl:node[1]/virl:interface[3]" src="/virl:topology/virl:node[3]/virl:interface[1]"/> <connection dst="/virl:topology/virl:node[2]/virl:interface[3]" src="/virl:topology/virl:node[5]/virl:interface[1]"/> <connection dst="/virl:topology/virl:node[6]/virl:interface[1]" src="/virl:topology/virl:node[1]/virl:interface[4]"/> <connection dst="/virl:topology/virl:node[7]/virl:interface[1]" src="/virl:topology/virl:node[4]/virl:interface[3]"/> </topology>