รู้จักกับ OpenFlow

OpenFlow

OpenFlow คืออะไร?

OpenFow คือ มาตรฐานเปิดที่อนุญาตให้ผู้ใช้งานสามารถนำโปรโตคอลที่สร้างขึ้นเองนำมาใช้งานได้ในระบบเน็ทเวิร์คที่มีการใช้งานในปัจจุบันได้ โดยที่ OpenFlow จะทำงานคล้ายๆกับการเพิ่ม Feature เข้าไปที่อุปกรณ์ switch, router หรือ wireless access point โดยที่ไม่ต้องการให้เจ้าของผลิตภัณฑ์ทำการเปิดเผยขั้นตอนการทำงานภายในของอุปกรณ์ ในปัจจุบัน OpenFlow ได้มีการนำไปใช้งานกับอุปกรณ์เจ้าหลักๆ โดยจำหน่ายอยู่ในรูปแบบของ switch ที่มีการรองรับการทำงานของ OpenFlow

OpenFlow ทำงานอย่างไร

ในอุปกรณ์ router หรือ switch แบบเก่า fast packet forwarding (data plane) และส่วนที่ทำหน้าในการจัดการ routing protocol (control plane) จะอยู่บนอุปกรณ์เดียวกัน การทำงานของ OpenFlow จะทำการแยกทั้งสองส่วนนี้ออกจากกัน โดย data plane จะยังคงทำงานอยู่บนอุปกรณ์เดิมส่วนที่เป็น control plane (software) ที่ทำหน้าที่ในการตัดสินใจเลือกเส้นทางหรือ routing protocol จะถูกแยกไปอยู่บน controller โดยที่อาจจะเป็นเครื่อง server ทั่วๆไปก็ได้ โดยที่ OpenFlow switch และ OpenFlow controller จะทำการติดต่อกันด้วย OpenFlow protocol ด้วย message ที่กำหนดไว้ เช่น การรับและส่ง packet การเปลี่ยนแปลง forwarding table หรือการอ่านค่าสถานะของอุปกรณ์
Data plane ของ OpenFlow switch จะอยู่ในรูปแบบของ clean flow table abstraction โดยที่ในแต่ละตำแหน่งของ Flow table จะประกอบไปด้วยกลุ่มของ packet ที่มีการระบุการทำงานเอาไว้ด้วย เช่น ให้ส่งออกไปที่ interface ไหน มีการ modify field ใดบ้าง หรือให้ทำการ drop packet ทิ้ง กรณีเมื่อ OpenFlow switch ได้รับ packet เข้ามาและยังไม่เคยอยู่ใน Flow table มันจะถูกส่งไปที่ controller เพื่อให้ controller ทำการตัดสินใจว่าจะจัดการกับ packet ที่ได้รับมานี้อย่างไร โดยมันจะสามารถทำการ drop หรือนำไปใส่ไว้ที่ Flow table และกำหนดการทำงานให้กับ OpenFlow switch ว่าจะต้องส่ง packet นี้ออกไปในทิศทางใดในกรณีที่มีการพบ packet แบบนี้อีกในอนาคต

เราจะทำไรกับ OpenFlow ได้บ้าง

OpenFlow อนุญาตให้ผู้ใช้งานสามารถสร้าง routing และ switching protocol ขึ้นมาใหม่และนำไปใช้งานได้ง่าย โดยมันจะถูกนำไปใช้งานในรูปแบบของ application ในรูปแบบต่างๆ เช่น virtual machine mobility หรือระบบ network ที่มีความปลอดภัยสูง และ mobile network ในยุคถัดไป

 

แปลและเรียบเรียงเนื้อหาจาก

Ref: http://archive.openflow.org/wp/learnmore/

[GNS3Vault] Access-List Logging

Original post from GNS3Vault: http://gns3vault.com/network-management/access-list-logging/

Scenario:
The local boyscout needs your help as a network engineer. They want to make sure everytime their router receives an OSPF packet this will be logged on their local router. Think you can help them out?

สถานะการณ์จำลอง:

เจ้าหน้าที่ NOC ต้องการความช่วยเหลือจาก Network engineer อย่างคุณ พวกเข้ต้องการแน่ใจว่าทุกๆครั้งที่ Router ของเขารับ OSPF packet เข้ามามันจะถูก Log อยู่บน Router ของเขา คุณคิดว่าจะช่วยพวกเขาได้ไหม?

Goal:

  • All IP addresses have been preconfigured for you.
  • OSPF has been configured for you.
  • Configure router Scout so every OSPF packet that is received on the interface will be logged. Use an access-list for this.
  • Your log file should be updated every 4 packets.
  • Make sure you log the MAC address of the device sending the OSPF packet.

เป้าหมาย:

  • IP address ทั้งหมดถูกตั้งค่าไว้ให้แล้ว
  • OSPF ถูกตั้งค่าไว้ให้แล้ว
  • ทำการตั้งค่า Router Scout เพื่อให้ทุกๆ OSPF packet ที่รับเข้ามาบน Interface ถูก Log ลงบน Router โดยอนุญาตให้ใช้ access-list เท่านั้น
  • ไฟล์ Log จะต้องทำการ Update ทุกๆ 4 packet
  • คุณต้องแน่ใจว่าทำการ Log MAC address ของอุปกรณ์ที่ส่ง OSPF packet มาให้ด้วย

IOS:
c3640-jk9o3s-mz.124-16.bin

Topology:

Video Solution:

หมายเหตุ:

สำหรับ Configuration file ต้องทำการสมัครสมาชิกของเวบ GNS3Vault ก่อนจึงจะสามารถทำการโหลดมาใช้งานได้ครับ

[GNS3Vault] Conditional Debug

Original post from GNS3Vault: http://gns3vault.com/network-management/conditional-debug/

Conditional Debug

Scenario:

Frank has heard about a feature called “conditional debug” that sounds interesting to him. It seems that you can use this command to only show the output of certain protocols instead of having your screen flooded with debug information. Think you can teach a fellow network engineer this feature?

สถานะการณ์จำลอง:

แฟรงค์รู้มาว่ามีฟีเจอร์ “conditional debug” ทำให้เขาสนใจมาก โดยฟีเจอร์นี้สามารถใช้คอมมานด์เพื่อแสดงเอาท์พุทของโปรโตคอลที่ต้องการแทนที่จะแสดงผลทั้งหมดออกมาที่หน้าจอ คิดว่าคุณจะสอนฟีเจอร์นี้ให้กับวิศวกรเครือข่ายได้หรือไม่?

Goal:

  • All IP addresses have been preconfigured for you.
  • OSPF and RIP have been preconfigured to generate some traffic.
  • Enable a debug on router Frank which only shows RIP information on the FastEthernet0/0 interface. You are not allowed to use any access-lists.

เป้าหมาย:

  • ไอพีแอดเดรสทั้งหมดได้ตั้งค่าไว้ให้คุณเรียบร้อยแล้ว
  • OSPF และ RIP ได้ตั้งค่าไว้ให้แล้วเพื่อสร้างทราฟฟิกจำนวนหนึ่ง
  • เปิด debug บนเราท์เตอร์ Frank เพื่อแสดงข้อมูลเฉพาะในส่วนของ RIP บนอินเตอร์เฟส FastEthernet0/0 โดยคุณไม่ได้รับอนุญาตให้ใช้ access-list ในหัวข้อนี้

IOS:

c3640-jk9o3s-mz.124-16.bin

Topology:

Video Solution:

การทำ Packet capture บน UnetLab: How to capture packet on UnetLab

สวัสดีสาวก UnetLab วันนี้ผมมีหัวข้อการนำเสนอเป็น “การทำ Packet capture บน UnetLab” ครับ

เนื่องจาก UnetLab เป็นเครื่องมือที่ใช้ทำการทดสอบ Lab ที่สมบูรณ์มากที่สุดในช่วงที่เขียน Blog วันนี้แต่สิ่งหนึ่งที่ขาดหายไปเมื่อเทียบกับ GNS3 และ IOU-Web คือ การใช้งาน Packet capture เพื่อทำการวิเคราะห์สิ่งที่เกิดขึ้นใน Lab ซึ่งจะทำให้เราสามารถเข้าใจการทำงานของอุปกรณ์ต่างๆได้ดีมากขึ้น หลังจากที่ได้ลองเข้าไปเล่นใน Backend ของ UnetLab มาแล้วสามถึงสามบทความ วันนี้เราจะมาเล่น Backend ของ UnetLab กันอีกรอบแต่เป็นการใช้งานขั้นสูงขึ้นอีกนิดโดยเป็นการประยุกต์ใช้งาน TCPDump เพื่อให้สามารถใช้งาน Packet capture ได้

ขั้นตอนในการทำ Packet capture บน UnetLab แบบคร่าวๆจะมีขั้นตอนดังนี้

  • ติดตั้ง TCPDump บน UnetLab
  • ติดตั้ง Plink และ WireShark บน Windows
  • ทำ Remote packet capture จาก UnetLab มาที่ WireShark โดยผ่าน Ulink

ดังนั้นก่อนที่จะเริ่มทำให้โหลดโปรมต่างๆมาเตรียมไว้ให้พร้อมโดยสามารถ Download ได้จาก Link ด้านล่างนี้

หลังจากทราบข้อมูลเบื้องต้นกันแล้วให้เราทำการเริ่มต้นที่ UnetLab ดังนี้

  • ทำการตรวจสอบว่า UnetLab มีการติดตั้ง TCPDump หรือยังด้วย Command นี้ “dpkg -l tcpdump” ถ้ามี TCPDump ติดตั้งอยู่ที่เครื่องแล้วจะได้ Output ดังนี้

  • ถ้ายังไม่ได้ติดตั้งให้ทำการติดตั้ง TCPDump ด้วย Command “apt-get install tcpdump”
  • กลับมาที่เครื่อง Windows ที่ต้องการใช้งานทำการ Download โปรแกรม plink.exe และนำไปติดตั้งที่ C:\Telnet\plink.exe
  • ทำการติดตั้งโปรแกรม WireShark ในกรณีนี้ผมติดตั้ง WireShark 64Bit.
  • ทำการสร้าง Lab ตามต้องการการณีผมจะสร้าง LAB ตามรูปด้านล่างนี้

  • จากนั้นให้ทำการตรวจสอบ Device ID ของอุปกรณ์ตามรูปนี้

  • ให้ทำการจด Device ID ของอุปกรณ์แต่ละตัวไว้ให้ดี เพราะจะมีการนำไปใช้ในการทำ Packet capture
  • ดูการเชื่อมต่อของ Virtual device ต่อละตัวที่เชื่อมต่อกับ Bridge (net1, net2) โดยใช้คำสั้ง “brctl show” จะได้ผลตามรูปนี้ โดยจะเห็นว่ามีชื่อ Interface แปลกๆคือ vnul0_X_Y  โดย Interface ต่างๆเหล่านี้คือ Interface ของ Virtual device โดยมีข้อกำหนดดังนี้
    • vunl0 คือ ชื่อเฉพาะของ UnetLab โดยหมายเลข 0 เป็นการสงานไว้เผื่อใช้งาน
    • _X      คือ Device ID ที่ได้ทำการจดไว้ก่อนหน้านี้
    • _Y      คือ Interface index ของอุปกรณ์ที่ UnetLab สร้างขึ้น

  • เราสามารถสรุปได้ดังนี้ vunl0_1_0 คือ Interface e0/0 (index 0) ของ R1 (vunl0_1)
  • จากข้อมูลที่ได้ทั้งหมดสมมติต้องการที่จะ Capture packet ที่ Interface ของ R2 Interface e0/0 เราจะต้องใช้ Command line ในการสั่งงานที่ Windows ประมาณนี้ “C:\Telnet\plink.exe -ssh -pw cisco root@[UNL IP Address] “tcpdump -ni vunl0_2_0 -s 0 -w – ” | “C:\Program Files\Wireshark\wireshark.exe” -k -i -“
  • เมื่อใส่ Command ถูกต้อง Windows จะทำการเรียก Wireshark ขึ้นมาและจำทำการส่ง Output ของ TCPDump ออกมาแสดงผลที่ WireShark ดังรูป

เท่านี้ก็จบบทความในวันนี้แล้ว พบกันใหม่ตอนต่อไปครับ ^^

แหกคอก!! การติดตั้ง Ubuntu บน UnetLab

ต่อเนื่องจากบทความที่แล้วที่มีการติดตั้ง Windows บน UnetLab กันไปแล้ววันนี้เราจะมาเริ่มแหกคอกกันด้วยการติดตั้งอุปกรณ์ที่ UnetLab ไม่มีอยู่ใน Support list กันนั่นคือ Ubuntu server! สำหรับการติดตั้ง Ubuntu รอบนี้จะเป็นการ Import VirtualBox VM เข้ามาใช้งานแทนการติดตั้ง Clean install แบบ Windows ในบทความตอนที่แล้วเพื่อให้ได้แนวคิดในการประยุกต์ใช้งานนั่นเอง ดังนั้นก่อนที่เราจะเริ่มขั้นตอนต่างๆในบทความนี้ได้เราจะต้องมี Ubuntu VM อยู่ก่อนหน้านี้แล้วโดยอาจจะสร้างจาก VMware หรือ VirtualBox ก็ได้ แต่ในตัวอย่างจะใช้ VirtualBox ตามรูปนี้

 

 

สำหรับการติดตั้ง Ubuntu server จะใช้ประโยชน์จากส่วนของ Device prefix ของ Windows ในการหลอก UnetLab ว่าสิ่งที่เรากำลังใช้งานอยู่นั้นคือ Windows ไม่ใช่ Ubuntu ดังนั้นการทำแบบนี้จะสามารถหลอกให้ UnetLab ทำการเปิดอุปกรณ์ของเราขึ้นมาใช้งานได้ถึงแม้ว่าอุปกรณ์นั้นจะยังไม่อยู่ใน Support list นั่นเอง สำหรับตัวอย่าง Prefix ของอุปกรณ์ต่างๆมีดังนี้

  • A10 vThuner = a10-xxx
  • Windows        = win-xxx
  • Arista              = veos-xxx

โดยที่ xxx เป็นการระบุรายละเอียดเพิ่มเติมของ Prefix นั้นๆ เช่น Version software หรือ Windows version ก็ได้ ดังนั้นการที่เราจะใช้งาน Ubuntu เราก็จะต้องเอามาสวมรอยใน Windows โดยการสร้าง Folder prefix เป็น win-ubuntu15.04

มาเริ่มลงมือกันโดยมีขั้นตอนดังนี้

  • เข้าไปที่ Path /opt/unetlab/addons/qemu
  • สร้าง Folder win-ubuntu15.04 ด้วย Command นี้ mkdir win-ubuntu15.04
  • นำ Ubuntu VM ที่มีอยู่แล้วใน VirtualBox มาเลือกเฉพาะไฟล์ .vdi ส่งผ่าน SCP ไปที่ Path win-ubuntu15.04 ที่เราสร้างขึ้น

  • ใช้ Commad “/opt/qemu-2.0.2/bin/qemu-img convert -f vdi -O qcow2 Ubuntu15.04.vdi hda.qcow2” เพื่อทำการ Convert Ubuntu VM ที่ Upload ขึ้นไปให้อยู่ใน Format ที่ UnetLab support
  • ลบ Image ต้นแบบด้วยคำสั่ง “rm Ubuntu15.04.vdi”
  • ตบท้ายด้วย Command “/opt/unetlab/wrappers/unl_wrapper -a fixpermissions”

เมื่อทำตามขั้นตอทั้งหมดที่เขียนไว้แล้วเราก็พร้อมที่จะใช้งาน Ubuntu กันแล้ว ให้ลองสร้าง Lab ขึ้นมาใหม่หนึ่ง Lab จากนั้นทำการเลือก Node เป็น Windows เราจะเห็นชื่อที่เราตั้งไว้ตามรูปด้านล่างนี้

ให้นำ Node ไปวางและลอง Start อุปกรณ์ขึ้นมาดูว่าสามารถใช้งานได้หรือไม่ ถ้าไม่มีอะไรผิดพลาดจะได้ผลตรมนี้ครับ

สำเร็จแล้วกับการแหกคอกในครั้งนี้ครับพ้ม ^^

[GNS3Vault] Remote Shell

Original post from GNS3Vault: http://gns3vault.com/network-management/remote-shell/

Remote Shell

Scenario:

You are working as a network engineer at a Turtle Aquarium based in Florida. Your colleague wants to check the running-configuration of one of the routers in the network but because of the security policy he’s not allowed to use HTTP, TFTP, TELNET or SSH. You can’t break company regulations but maybe you can bend it a little?

สถานการณ์จำลอง:

คุณทำงานเป็นวิศวกรเครือข่ายที่ Turtle Aquarium ในฟลอริดา เพื่อร่วมงานของคุณต้องการตรวจสอบ running-configuration บนเราท์เตอร์แต่ข้อบังกำหด้านความปลอดภัยระบุว่าเขาไม่สามารถใช้งาน HTTP, FTP, TELNET หรือ SSH ได้ คุณไม่ต้องการละเมิดข้อบังคับของบริษัทบางที่คุณก็มีวิธีทำแบบอ้อมๆใช่มั้ย?

Goal:

All IP addresses have been preconfigured for you.
Configure router Shell so router Turtle can view its running configuration.

เป้าหมาย:

  • ไอพีแอดเดรสทั้งหมดได้ตั้งค่าไว้ให้คุณเรียบร้อยแล้ว
  • ตั้งค่าเราท์เตอร์ Shell ให้เราท์เตอร์ Turtle สามารถดู running configuration ของมันได้

IOS:

c3640-jk9s-mz.124-16.bin

 

Topology:

Video Solution:

[GNS3Vault] Login Menu

Original post from GNS3Vault: http://gns3vault.com/network-management/login-menu/

Login Menu

Scenario:
You are a network teacher specialized in routing and switching. To help your students who are not so familiar with the command-line you want to use one of your routers so it displays a menu everytime they login.

สถานะการณ์จำลอง:
คุณเป็นอาจารย์พิเศษวิชาเราท์ติ้งและสวิทชิ่ง เพื่อช่วยให้นักเรียนที่ไม่คุ้นเคยกับการใช้งานคอมมานไลน์ คุณจะต้องใช้เราท์เตอร์ตัวหนึ่งในการแสดงเมนูในทุกครั้งที่มีการล็อกอิน
Goal:

  • All IP addresses have been preconfigured for you (except router Flynn).
  • Configure router Classroom so whenever users telnet to it with username “STUDENT” and password “VAULT” they get a menu with the following options:
    • Show ip interface brief.
    • Show ip protocols.
    • Logout.

เป้าหมาย:

  • ไอพีแอดเดรสทั้งหมดได้ตั้งค่าไว้ให้คุณเรียบร้อยแล้ว (นอกจากเราท์เตอร์ Flynn)
  • ตั้งค่าเราท์เตอร์ Classroom เมื่อผู้ใช้งาน Telnet เข้ามาด้วยชื่อผู้ใช้งาน “STUDENT” และใช้รหัสผ่าน “VAULT” เขาจะได้เมนูตามตัวเลือกต่อไปนี้
    • Show ip interface brief.
    • Show ip protocol.
    • Logout.

IOS

  • c3640-jk9s-mz.124-16.bin

Topology:

Video Solution:

การสร้าง Base VM Windows บน UnetLab: How to create Windows based VM on UnetLab

หลังจากตอนที่แล้วเป็นการแนะนำการติดตั้ง Windows บน UnetLab กันไปแล้วแต่ยังไม่ใช่วิธีการที่ถูกต้องเนื่องจากเป็นการสร้างที่มีวิธีการใช้งานที่จำกัดคือสามารถใช้ได้บน Lab ที่ต้องการเท่านั้น ไม่สามารถนำไปใช้งานใน Lab อื่นๆได้อีก วันนี้จะมาเฉลยกันว่าทำไมถึงเป็นแบบนั้นกัน

 

ก่อนอื่นต้องทำความเข้าใจการทำงานของ UnetLab กันก่อนนิดหน่อยดังนี้ จากรูปด้านล่างนี้จะเห็นว่า Unetlab ใช้งาน QEMU เป็น Hypervisor สำหรับ Virtual Appliance หลายๆตัวรวมทั้ง Windows ด้วย

แต่สิ่งที่มีการเปลี่ยนแปลงและทำให้การติดตั้ง Windows ในบทความที่แล้วใช้งานไม่ได้ใน UnetLab version ปัจจุบัน (0.9.0-54) คือ “Backend” ได้ได้ถูกรื้อใหม่ตั้งแต่ Version 0.9.0-18 (เท่าที่ลองติดตามดูอาจจะผิดพลาดได้นะครับขออภัย)

โดยสิ่งที่เปลี่ยนไปคือการใช้งาน Feature Linked clone ของ QEMU แทนการ Copy image โดยตรงไปที่ Lab ที่เรากำลังใช้งานนั่นเอง!!!

 

ในกรณีนี้ขอยกตัวอย่างให้เห็นชัดเจนขึ้นโดยการใช้ภาพดังนี้

 

จากรูปด้านบนจะเป็นการทำงานของ UnetLab version เก่าๆ (คงไม่มีใครใช้งานแล้ว) เมื่อเราทำการสร้าง Lab ใหม่ UnetLab จะทำการ “Copy image” ของ Virtual Appliance “ทั้งก้อน” ไปไว้ที่ Lab ที่สร้างขึ้นมา ในกรณีนี้จะขอเรียก Image ก้อนนี้ว่า “Base Image” ตามรูป สมมติให้ Base Image มีขนาด 2GB สำหรับ PaloAlto และเราต้องการใช้ PaloAlto ใน Lab ที่เราสร้างขึ้น UnetLab จะทำการ Copy Base image ไปที่ Lab จำนวน 2 ครั้งครั้งละ 2GB เพื่อสร้างอุปกรณ์ใน Lab ที่เราสร้างขึ้น ดังนั้นจะเห็นได้ว่าในกรณีที่เรามีการใช้งาน PaloAlto จะต้องรอนานมากกว่าจะเข้าไปใช้งานจาก VNC Console นั่นเอง และในส่วนของการตั้งค่าต่างๆจะถูกเพิ่มเข้าไปในส่วนของ “Configuration Data” ของอุปกรณ์แต่ละตัว ดังนั้นสมมติว่าอุปกรณ์ทั้ง 2 ตัวใช้ Configuration data ตัวละ 200MB ดังนั้นใน Lab นี้จะต้องใช้พื้นที่ในการเก็บ Lab ที่สร้างขึ้นทั้งหมด 4.4GB และต้องใช้เวลาในการ Start Lab ครั้งแรกเป็นเวลานานพอสมควร และวิธีการนี้ไม่สามารถใช้งานได้แล้วที่ UnetLab version ปัจจุบัน

 

ต่อมาเข้าเรื่องหลักของเราดีกว่าก่อนอื่นลองมาดูรูปประกอบคำอธิบายกันก่อน

การทำงานของ Backend ใน UnetLab version ล่าสุดจะเป็นการใช้งานที่เรียกว่า Linked clone จากรูปด้านบนเราจะต้องมี Base Image ที่สมบูรณ์ก่อน และเมื่อเราทำการสร้าง Lab ในขั้นตอนนี้ UnetLab จะทำการสร้าง Linked clone image ไปที่ Lab ของเรา แต่จากบทความตอนที่แล้วเราทำการสร้าง Base Image ขึ้นมาด้วยคำสั่ง “/opt/qemu-2.0.2/bin/qemu-img create -f qcow2 hda.qcow2 15G” จะเป็นการสร้าง Disk เปล่าขนาด 15G ขึ้นมา และเมื่อทำการสร้าง Lab ที่ Frontend จะเป็นการสร้าง Linked clone ของ Disk เปล่าขึ้นใน Labและการลง Windows  จะเป็นการเพิ่มข้อมูลในส่วนของ “Configuration Data” เพิ่มขึ้นมานั่นเอง และนี่คือเหตุผลที่ว่า Windows Image นี้จะไม่สามารถนำไปใช้ต่อที่ Lab อื่นได้นั่นเอง

หลังจากทำความเข้าใจถึงวิธีการทำงานของ backend แล้วก็ถึงเวลาที่จะมาเริ่มสร้าง Windows Base Image เพื่อนำไปใช้งานกันได้แล้วครับ

 

เริ่มต้นที่ Backend กันเหมือนเดิม

ขั้นตอนการสร้างจะคล้ายๆกับของเดิมดังนี้

  • สร้าง Folder win-7 ที่ Path /opt/unetlab/addons/qemu/ ด้วยคำสั่ง mkdir win-7
  • สร้าง Disk เปล่าขึ้นมาหนึ่งก้อนสำหรับทำการติดตั้ง Windows ด้วยคำสั่ง /opt/qemu-2.0.2/bin/qemu-img create -f qcow2 hda.qcow2 15G
  • ต่อมาให้ทำการ Copy image สำหรับติดตั้ง Windows 7 ลงไปที่ Path เดียวกัน และทำการเปลี่ยนชื่อไฟล์ image ให้เป็น “cdrom.iso” เท่านั้น

  • ทำการ Start QEMU ที่ Backend เพื่อติดตั้ง Windows ด้วย Command นี้ครับ “/opt/qemu-2.0.2/bin/qemu-system-x86_64 –enable-kvm -vnc :1 -nographic -boot order=c,once=d -smp 1 -m 2048 -usb -hda hda.qcow2 -cdrom cdrom.iso”
  • ตั้งค่า VNC ให้ทำการ Console ไปที่ Server ดังนี้ [x.x.x.x:y] โดย x.x.x.x เป็น IP Address ของ Unetlab และ y เป็น Port ที่ VNC เปิดไว้โดย Option -vnc :1 ตัวอย่างกรณีที่ผมใช้จะเป็นตามรูปนี้

  • เมื่อทำการตั้งค่าถูกต้องเราจะสามารถทำการใช้ VNC console เข้าไปติดตั้ง Windows ได้ตามรูปนี้

 

  • หลังจากนั้นให้ทำการติดตั้ง Windows ไปตามขั้นตอนปกติ เมื่อทำการติดตั้ง Windows เสร็จแล้วให้ทำการ Shutdown Windows หลังจากนั้นให้ทำการตรวจสอบผลการติดตั้งด้วยการเช็คขนาดของ Virtual disk จะพบว่า Virtual disk จะมีขนาดใหญ่ขึ้นหลังทำการติดตั้งสำเร็จตามรูป

  • ก่อนจะไปเริ่มใช้งานที่ Frontend ให้ทำการลบไฟล์ cdrom.iso ทิ้งไปด้วยเนื่องจากไม่มีความจำเป็นที่จะต้องใช้งาน cdrom ในการติดตั้งอีกแล้ว แต่กรณีที่ต้องการทำ Microsoft AD ให้ทำการติดตั้งให้เสร็จก่อนที่จะทำการลบ cdrom ทิ้งด้วย

ต่อกันที่ Frontend

การใช้งานที่ Frontend ไม่สามารถใช้งานได้ตามขั้นตอนปกติคือ

  • สร้าง Lab
  • นำอุปกรณ์มาวาง ในตัวอย่างนี้จะนำ Windows 7 มาใช้งานตามรูป

  • ทำการ Start อุปกรณ์ถ้าการติดตั้งไม่ผิดพลาดจะสามารถใช้งานได้ตามรูปตัวอย่างนี้

สุดท้ายคือการพิสูจน์สมมติฐานของเราว่า Linked clone ที่ Unetlab สร้างขึ้นจะมีขนาดเล็กลงกว่าเดิมได้ให้ไม่ให้เข้าไปเช็คไฟล์ Lab ใน “/opt/unetlab/tmp/0/UUID/lab” โดย UUID จะเป็นไฟล์ที่ UnetLab สร้างขึ้นอัตโนมัติ จากการใช้งานตามตัวอย่างนี้จะพบว่ามีการสร้าง Linked clone ของ Windows 7 ขึ้นโดยมีขนาด 101MB ตามรูปด้านล่างนี้ครับ

 

ตอนนี้จะเป็นการประยุกต์การใช้งาน Backend แบบนึง ในตอนต่อไปเราจะมาลองพลิกแพลงการใช้งาน Backend ขึ้นอีกหนึ่งระดับโดยจะทำการติดตั้งอุปกรณ์ที่ยังไม่มีอยู่ใน UnetLab support list กัน โดยจะใช้ตัวอย่างเป็นการติดตั้ง Ubuntu server กัน คอยติดตามดูนะครับ

จบแล้วคร้าบบบบบบบ  ^/\^

 

[GNS3Vault] Kron Task Scheduler

Original post from GNS3Vault: http://gns3vault.com/network-management/kron-task-scheduler/

Scenario:

You want to make sure your router automatically saves its configuration every day. You are familiar with Cron for Linux and you just heard from a colleague that there is a similar feature for Cisco routers. Kron time!

สถานการณ์จำลอง:

คุณต้องการที่จะมั่นใจว่าเราท์เตอร์จะทำการเซฟการตั้งค่าอัตโนมัติในทุกๆวัน คุณมีความคุ้นเคยกับ Cron บน Linux และคุณได้ยินจากเพื่อนร่วมงานว่ามีฟีเจอร์ที่เหมือนกันนี้บน Cisco เราท์เตอร์ ตอนนี้ได้เวลาของ Kron แล้ว!

Goal:

  • All IP addresses have been preconfigured for you.
  • Configure router Kron so it saves the running-config ever saturday at 20:00.

เป้าหมาย:

  • ไอพีแอดเดรสทั้งหมดได้ตั้งค่าไว้ให้คุณเรียบร้อยแล้ว
  • ทำการตั้งค่า Kron ให้ทำการเก็บค่า running-config ทุกวันเสาร์เวลา 20:00น.

IOS:

c3640-jk9s-mz.124-16.bin

Topology:

Video Solution:

 

ส่วนเสริม:

การใช้งาน Kron ในชีวิตจริงอุปกรณ์ควรจะมีการตั้งค่า NTP ไว้บนอุปกรณ์ด้วย เนื่องจาก Kron จะมีการใช้เวลาเป็นตัวอ้างอิงในการทำงานตามคำสั่งที่กำหนดไว้ ดังนั้นอย่าลืมตั้งค่าเวลาให้อุปกรณ์ทุกครั้งอย่างน้อยให้เป็น Local time ที่ใกล้เคียงกับเวลาจริง หรือทำการเปิดใช้งาน NTP บนอุปกรณ์ สำหรับการตั้งค่า NTP บนอุปกรณ์ Cisco หาอ่านเพิ่มได้จาก Link ในส่วนของ Reference ด้านล่างสุดครับ

Command Reference:

show commad

# show kron schedule

# show clock

 

configure command

(config)#clock set hh:mm:ss [Day of the month] month year

(config)# kron occurrence [WORD] at [hh:mm] [DAY] [oneshot, recurring]
(config-kron-occurrence)# policy-list [WORD]

(config)# kron policy-list [WORD]
(config-kron-policy)# cli [LINE]

 

debug command

# debug kron all

 

Reference:

Kron:

http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/cns/configuration/xe-3s/asr1000/cns-xe-3s-asr1000-book/cns-cmd-sched.pdf

NTP:

http://www.cisco.com/c/en/us/td/docs/ios/12_2/configfun/configuration/guide/ffun_c/fcf012.html#wp1001170

[GNS3Vault] EEM Scripting

Original post from GNS3Vault: http://gns3vault.com/network-management/eem-scripting/

Scenario:

Ever since you switched your career from Linux engineer to networking you missed your good old scripting tools. You just heard about network engineer about EEM scripting for Cisco routers and you can’t wait to try it out!

สถานการณ์จำลอง:

ตั้งแต่คุณเปลี่ยนหน้าที่จากวิศวกรด้าน Linux เป็นด้านระบบเครือข่าย คุณยังคงคิดถึง Script เครื่องมือที่ดีในสมัยก่อน เมื่อคุณได้ทราบว่าวิศวกรเครือข่ายเองก็มี EEM Script สำหรับเราท์เตอร์ Cisco เหมือนกัน ดังนั้นคุณก็ไม่รอช้าที่จะลองมันทันที!

Goal:

  • All IP addresses have been preconfigured for you.
  • Configure router Autobot so when the FastEthernet 0/0 interface goes down a script runs that also shuts down the FastEthernet1/0 interface.
  • You are only allowed to use EEM scripting to achieve this.

เป้าหมาย:

  • ไอพี่แอดเดรสได้ถูกตั้งค่าเตรียมไว้ให้คุณทั้งหมดแล้ว
  • ทำการตั้งค่าเราท์เตอร์ Autobot ให้เมื่ออินเตอร์เฟส F0/0 down ลงไปให้ Script ทำงานเพื่อทำการ down อินเตอร์เฟส F1/0 ลงไปด้วย
  • อนุญาตให้คุณใช้งาน EEM Script ได้เท่านั้น

IOS:

c3640-jk9s-mz.124-16.bin

 

Topology:

ส่วนเสริม:

ใน Lab นี้ตามโจทย์จะให้ทำการ Shutdown interface F1/0 โดยการใช้ EEM Script ในกรณีที่ Interface F0/0 โดน Shutdown ลงไป ลำดับแรกก่อนที่จะสามารถทำ Lab นี้ได้เราจะต้องมีความเข้าใจเกี่ยวกับลำดับการทำงานของ EEM Script ใน Lab นี้ก่อนครับ การทำงานของ EEM Script จะแบ่งเป็น 3 ส่วนใน Lab นี้ได้แก่

  • ตั้งชื่อ Script (Applet)
  • สร้าง Event (Input) ในกรณีนี้ Input ของ Lab นี้จะใช้การ Detect syslog event ที่เกิดจากการ Shutdown interface F0/0
  • สร้าง Action (Output) เมื่อได้ Event ที่ต้องการแล้วให้ “สร้าง Action เป็นลำดับขั้นตอน” เพื่อทำให้เกิด Output ตามที่เราต้องการ ในกรณีนี้คือ Shutdown interface F1/0

อ้างอิง: Reference:

https://supportforums.cisco.com/document/117596/cisco-eem-basic-overview-and-sample-configurations