You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

315 lines
11 KiB

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <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">
  3. <extensions>
  4. <entry key="management_network" type="String">exclusive</entry>
  5. <entry key="AutoNetkit.enable_cdp" type="Boolean">true</entry>
  6. </extensions>
  7. <node name="client1" type="SIMPLE" subtype="lxc" location="340,301">
  8. <extensions>
  9. <entry key="config" type="String">#cloud-config&#xD;
  10. bootcmd:&#xD;
  11. - ln -s -t /etc/rc.d /etc/rc.local&#xD;
  12. hostname: client&#xD;
  13. manage_etc_hosts: true&#xD;
  14. runcmd:&#xD;
  15. - systemctl start rc-local&#xD;
  16. - sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config&#xD;
  17. - echo "UseDNS no" &gt;&gt; /etc/ssh/sshd_config&#xD;
  18. - service ssh restart&#xD;
  19. - service sshd restart&#xD;
  20. users:&#xD;
  21. - default&#xD;
  22. - gecos: User configured by VIRL Configuration Engine 0.23.9&#xD;
  23. lock-passwd: false&#xD;
  24. name: cisco&#xD;
  25. plain-text-passwd: cisco&#xD;
  26. shell: /bin/bash&#xD;
  27. ssh-authorized-keys:&#xD;
  28. - VIRL-USER-SSH-PUBLIC-KEY&#xD;
  29. sudo: ALL=(ALL) ALL&#xD;
  30. write_files:&#xD;
  31. - path: /etc/systemd/system/dhclient@.service&#xD;
  32. content: |&#xD;
  33. [Unit]&#xD;
  34. Description=Run dhclient on %i interface&#xD;
  35. After=network.target&#xD;
  36. [Service]&#xD;
  37. Type=oneshot&#xD;
  38. ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease&#xD;
  39. RemainAfterExit=yes&#xD;
  40. owner: root:root&#xD;
  41. permissions: '0644'&#xD;
  42. - path: /etc/rc.local&#xD;
  43. owner: root:root&#xD;
  44. permissions: '0755'&#xD;
  45. content: |-&#xD;
  46. #!/bin/sh&#xD;
  47. ifconfig eth1 up 10.0.0.20 netmask 255.255.0.0&#xD;
  48. route add -host 192.168.0.1 gw 10.0.0.1 dev eth1&#xD;
  49. route add -net 10.0.0.0/16 gw 10.0.0.1 dev eth1&#xD;
  50. route add default gw 10.0.0.1&#xD;
  51. echo "nameserver 8.8.8.8" &gt;/etc/resolv.conf&#xD;
  52. exit 0&#xD;
  53. - path: /home/cisco/udpserver.py&#xD;
  54. owner: cisco:cisco&#xD;
  55. permissions: '0755'&#xD;
  56. content: |-&#xD;
  57. #!/usr/bin/python&#xD;
  58. from socket import *&#xD;
  59. &#xD;
  60. # UDP Port auf dem der Server lauschen soll...&#xD;
  61. serverPort = 17000&#xD;
  62. &#xD;
  63. # Server-Socket als Internet (INET) UDP (DGRAM) erzeugen und an o.g. Port binden&#xD;
  64. serverSocket = socket(AF_INET, SOCK_DGRAM)&#xD;
  65. serverSocket.bind(("", serverPort))&#xD;
  66. print "UDP Server ist bereit fuer den Empfang von Daten..."&#xD;
  67. &#xD;
  68. # Endlosschleife&#xD;
  69. while 1:&#xD;
  70. # Eingehende Nachrichten von Clients empfangen&#xD;
  71. message, clientAddress = serverSocket.recvfrom(2048)&#xD;
  72. # Alle Buchstaben der Nachricht in Grossbuchstaben umwandeln und an den&#xD;
  73. # Client zuruecksenden&#xD;
  74. modifiedMessage = message.upper()&#xD;
  75. serverSocket.sendto(modifiedMessage, clientAddress)&#xD;
  76. - path: /home/cisco/udpclient.py&#xD;
  77. owner: cisco:cisco&#xD;
  78. permissions: '0755'&#xD;
  79. content: |-&#xD;
  80. #!/usr/bin/python&#xD;
  81. from socket import *&#xD;
  82. &#xD;
  83. # Server-Adresse und Port&#xD;
  84. serverName = "localhost"&#xD;
  85. serverPort = 17000&#xD;
  86. &#xD;
  87. # Client Socket (IP, UDP) oeffnen&#xD;
  88. clientSocket = socket(AF_INET, SOCK_DGRAM)&#xD;
  89. &#xD;
  90. # Nachricht vom Benutzer erfragen und versenden&#xD;
  91. message = raw_input("UDP Nachricht in Kleinbuchstaben eingeben:")&#xD;
  92. clientSocket.sendto(message,(serverName, serverPort))&#xD;
  93. &#xD;
  94. # Antwort des Server aus Socket lesen und ausgeben&#xD;
  95. modifiedMessage, serverAddress = clientSocket.recvfrom(2048)&#xD;
  96. print "Antwort des Servers: ", modifiedMessage&#xD;
  97. raw_input("Fertig...")&#xD;
  98. &#xD;
  99. # Verbindung schliessen&#xD;
  100. clientSocket.close()&#xD;
  101. - path: /home/cisco/tcpserver.py&#xD;
  102. owner: cisco:cisco&#xD;
  103. permissions: '0755'&#xD;
  104. content: |-&#xD;
  105. #!/usr/bin/python&#xD;
  106. from socket import *&#xD;
  107. &#xD;
  108. # TCP Port auf dem der Server lauschen soll...&#xD;
  109. serverPort = 17000&#xD;
  110. # Server-Socket als Internet (INET) TCP (STREAM) erzeugen und an o.g. Port binden&#xD;
  111. serverSocket = socket(AF_INET,SOCK_STREAM)&#xD;
  112. serverSocket.bind(("",serverPort))&#xD;
  113. serverSocket.listen(1)&#xD;
  114. print "TCP Server ist bereit fuer den Empfang von Daten..."&#xD;
  115. &#xD;
  116. # Endlosschleife&#xD;
  117. while 1:&#xD;
  118. # Eingehende Nachrichten akzeptieren und von Clients empfangen&#xD;
  119. connectionSocket, addr = serverSocket.accept()&#xD;
  120. sentence = connectionSocket.recv(1024)&#xD;
  121. # Alle Buchstaben der Nachricht in Grossbuchstaben umwandeln und an den&#xD;
  122. # Client zuruecksenden&#xD;
  123. capitalizedSentence = sentence.upper()&#xD;
  124. connectionSocket.send(capitalizedSentence)&#xD;
  125. # Verbindung schliessen&#xD;
  126. connectionSocket.close()&#xD;
  127. - path: /home/cisco/tcpclient.py&#xD;
  128. owner: cisco:cisco&#xD;
  129. permissions: '0755'&#xD;
  130. content: |-&#xD;
  131. #!/usr/bin/python&#xD;
  132. from socket import *&#xD;
  133. &#xD;
  134. # Serveradresse und TCP Port auf den der Server hoert...&#xD;
  135. serverName = "localhost"&#xD;
  136. serverPort = 17000&#xD;
  137. # Socket fuer IP (INET) und TCP (STREAM) konfigurieren&#xD;
  138. clientSocket = socket(AF_INET, SOCK_STREAM)&#xD;
  139. clientSocket.connect((serverName,serverPort))&#xD;
  140. &#xD;
  141. # Nachricht vom Benutzer abfragen und an den Server senden&#xD;
  142. sentence = raw_input("TCP Nachricht in Kleinbuchstaben eingeben:")&#xD;
  143. clientSocket.send(sentence)&#xD;
  144. &#xD;
  145. # Antwort des Servers ausgeben&#xD;
  146. modifiedSentence = clientSocket.recv(1024)&#xD;
  147. print "Antwort des Servers:", modifiedSentence&#xD;
  148. raw_input("Fertig...")&#xD;
  149. &#xD;
  150. # Verbindung schliessen&#xD;
  151. clientSocket.close()&#xD;
  152. </entry>
  153. </extensions>
  154. <interface id="0" name="eth1" ipv4="10.0.0.2" netPrefixLenV4="16"/>
  155. </node>
  156. <node name="server1" type="SIMPLE" subtype="lxc" location="584,301">
  157. <extensions>
  158. <entry key="config" type="String">#cloud-config&#xD;
  159. bootcmd:&#xD;
  160. - ln -s -t /etc/rc.d /etc/rc.local&#xD;
  161. hostname: server&#xD;
  162. manage_etc_hosts: true&#xD;
  163. runcmd:&#xD;
  164. - systemctl start rc-local&#xD;
  165. - sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config&#xD;
  166. - echo "UseDNS no" &gt;&gt; /etc/ssh/sshd_config&#xD;
  167. - service ssh restart&#xD;
  168. - service sshd restart&#xD;
  169. users:&#xD;
  170. - default&#xD;
  171. - gecos: User configured by VIRL Configuration Engine 0.23.9&#xD;
  172. lock-passwd: false&#xD;
  173. name: cisco&#xD;
  174. plain-text-passwd: cisco&#xD;
  175. shell: /bin/bash&#xD;
  176. ssh-authorized-keys:&#xD;
  177. - VIRL-USER-SSH-PUBLIC-KEY&#xD;
  178. sudo: ALL=(ALL) ALL&#xD;
  179. write_files:&#xD;
  180. - path: /etc/systemd/system/dhclient@.service&#xD;
  181. content: |&#xD;
  182. [Unit]&#xD;
  183. Description=Run dhclient on %i interface&#xD;
  184. After=network.target&#xD;
  185. [Service]&#xD;
  186. Type=oneshot&#xD;
  187. ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease&#xD;
  188. RemainAfterExit=yes&#xD;
  189. owner: root:root&#xD;
  190. permissions: '0644'&#xD;
  191. - path: /etc/rc.local&#xD;
  192. owner: root:root&#xD;
  193. permissions: '0755'&#xD;
  194. content: |-&#xD;
  195. #!/bin/sh&#xD;
  196. ifconfig eth1 up 10.0.0.30 netmask 255.255.0.0&#xD;
  197. route add -host 192.168.0.1 gw 10.0.0.1 dev eth1&#xD;
  198. route add -net 10.0.0.0/16 gw 10.0.0.1 dev eth1&#xD;
  199. route add default gw 10.0.0.1&#xD;
  200. echo "nameserver 8.8.8.8" &gt;/etc/resolv.conf&#xD;
  201. exit 0&#xD;
  202. </entry>
  203. </extensions>
  204. <interface id="0" name="eth1" ipv4="10.0.0.3" netPrefixLenV4="16"/>
  205. </node>
  206. <node name="switch1" type="SIMPLE" subtype="Unmanaged Switch" location="446,227">
  207. <interface id="0" name="link1"/>
  208. <interface id="1" name="link2"/>
  209. <interface id="2" name="link3"/>
  210. </node>
  211. <node name="router1" type="SIMPLE" subtype="IOSv" location="446,106">
  212. <extensions>
  213. <entry key="AutoNetkit.mgmt_ip" type="string"></entry>
  214. <entry key="Auto-generate config" type="Boolean">false</entry>
  215. <entry key="config" type="String">! IOS Config generated on 2016-12-05 08:28&#xD;
  216. ! by autonetkit_0.23.5&#xD;
  217. !&#xD;
  218. hostname router1&#xD;
  219. boot-start-marker&#xD;
  220. boot-end-marker&#xD;
  221. !&#xD;
  222. vrf definition Mgmt-intf&#xD;
  223. !&#xD;
  224. address-family ipv4&#xD;
  225. exit-address-family&#xD;
  226. !&#xD;
  227. address-family ipv6&#xD;
  228. exit-address-family&#xD;
  229. !&#xD;
  230. !&#xD;
  231. !&#xD;
  232. no aaa new-model&#xD;
  233. !&#xD;
  234. !&#xD;
  235. ip cef&#xD;
  236. ipv6 unicast-routing&#xD;
  237. ipv6 cef&#xD;
  238. !&#xD;
  239. !&#xD;
  240. service timestamps debug datetime msec&#xD;
  241. service timestamps log datetime msec&#xD;
  242. no service password-encryption&#xD;
  243. no service config&#xD;
  244. enable password cisco&#xD;
  245. ip classless&#xD;
  246. ip subnet-zero&#xD;
  247. no ip domain lookup&#xD;
  248. ip domain name virl.info&#xD;
  249. crypto key generate rsa modulus 768&#xD;
  250. ip ssh server algorithm authentication password&#xD;
  251. username cisco privilege 15 secret cisco&#xD;
  252. line vty 0 4&#xD;
  253. transport input ssh telnet&#xD;
  254. exec-timeout 720 0&#xD;
  255. password cisco&#xD;
  256. login local&#xD;
  257. line con 0&#xD;
  258. password cisco&#xD;
  259. !&#xD;
  260. cdp run&#xD;
  261. !&#xD;
  262. !&#xD;
  263. interface Loopback0&#xD;
  264. description Loopback&#xD;
  265. ip address 192.168.0.1 255.255.255.255&#xD;
  266. !&#xD;
  267. interface GigabitEthernet0/0&#xD;
  268. description OOB Management&#xD;
  269. vrf forwarding Mgmt-intf&#xD;
  270. ! Configured on launch&#xD;
  271. no ip address&#xD;
  272. cdp enable&#xD;
  273. duplex full&#xD;
  274. speed auto&#xD;
  275. no shutdown&#xD;
  276. !&#xD;
  277. interface GigabitEthernet0/1&#xD;
  278. description to Internet&#xD;
  279. no ip address&#xD;
  280. ip nat outside&#xD;
  281. cdp enable&#xD;
  282. duplex full&#xD;
  283. speed auto&#xD;
  284. no shutdown&#xD;
  285. !&#xD;
  286. interface GigabitEthernet0/2&#xD;
  287. description to switch1&#xD;
  288. ip address 10.0.0.1 255.255.0.0&#xD;
  289. ip nat inside&#xD;
  290. cdp enable&#xD;
  291. ip ospf cost 1&#xD;
  292. duplex full&#xD;
  293. speed auto&#xD;
  294. no shutdown&#xD;
  295. !&#xD;
  296. ! NAT stuff&#xD;
  297. !&#xD;
  298. ip nat inside source list 1 interface GigabitEthernet0/1 overload&#xD;
  299. ip route 0.0.0.0 0.0.0.0 172.16.1.1&#xD;
  300. access-list 1 permit 10.0.0.0 0.0.255.255&#xD;
  301. !&#xD;
  302. end</entry>
  303. </extensions>
  304. <interface id="0" name="GigabitEthernet0/1"/>
  305. <interface id="1" name="GigabitEthernet0/2" ipv4="10.0.0.1" netPrefixLenV4="16"/>
  306. </node>
  307. <node name="Internet" type="ASSET" subtype="FLAT" location="337,55">
  308. <interface id="0" name="link0"/>
  309. </node>
  310. <annotations/>
  311. <connection dst="/virl:topology/virl:node[4]/virl:interface[1]" src="/virl:topology/virl:node[5]/virl:interface[1]"/>
  312. <connection dst="/virl:topology/virl:node[3]/virl:interface[1]" src="/virl:topology/virl:node[4]/virl:interface[2]"/>
  313. <connection dst="/virl:topology/virl:node[1]/virl:interface[1]" src="/virl:topology/virl:node[3]/virl:interface[2]"/>
  314. <connection dst="/virl:topology/virl:node[2]/virl:interface[1]" src="/virl:topology/virl:node[3]/virl:interface[3]"/>
  315. </topology>