คลังเก็บหมวดหมู่: LAB

เนื้อหาเกี่ยวกับการสร้าง LAB หรือ LAB ที่สร้างสร้างขึ้น

ร่วมร่างไฟล์ให้กลับมาจากแพ็คเก็ตที่ได้จาก Wireshark ^^

กลับมาอีกครั้งหลังจากหายไปหลายอาทิตย์ ^^

รอบนี้กลับมาลองใช้ Wireshark ทำงานในส่วนของ Network forensics กันดูบ้างว่ามันจะเป็นเช่นไร……….

เข้าเรื่องกันเลยดีกว่าวันนี้เราจะขอเสนอฟังก์ชั่น “Export Objects” ซึ่งฟังก์ชั่นนี้จะทำหน้าที่ในการ “สกัด” สิ่งที่อยู่ในรูปแบบของแพ็คเก็ตที่ดูแล้ว “ไม่เข้าใจ” ให้ออกมาเป็นในรูปแบบของไฟล์ หรือ URL เนื่องจากวันนี้เราจะเน้นให้ทำการ “สกัด” เนื้อหาที่อยู่ในรูปแบบของ HTTP โปรโตคอลออกมานั่นเอง

โดยปกติแล้วเมื่อเปิด Wireshark ขึ้นมาและทำการจับข้อมูลที่วิ่งผ่านเข้ามาในเครื่องของเรา สิ่งที่เห็นจะมีรูปแบบในรูปด้านล่างนี้ คือ Source-Destination IP Address, Port, Packet information ซึ่งโดยปกติแล้วเราจะไม่มีทางรู้ได้เลยว่าข้อมูลที่อยู่ภายในนั้นคืออะไร ยกตัวอย่างเช่น URL อะไร หรือรูปที่เปิดขึ้นมาอยู่ที่ URL ไหน?

ยกตัวอย่างการใช้งานในรูปแบบของ Network forensic ในหัวข้อนี้จะลองทำการ “ประกอบร่าง” แพ็คเก็ตที่ได้มาจาก Wireshark ให้กลายเป็นข้อมูลที่สมบูรณ์และย้อนกลับไปได้ว่าไฟล์ที่เปิดขึ้นมาอยู่ที่ URL ใดและลองโหลดไฟล์ที่ได้จากการ “ประกอบร่าง” ลงมาในเครื่องของเราเพื่อทำการตรวจสอบต่อไปได้นั่นเอง

ก่อนที่จะใช้ฟังก์ชั่นนี้ได้อย่างสมบูรณ์เราจะต้องมาการเตรียมการให้เรียบร้อยก่อนตามขั้นตอนดังนี้

  • Protocol IPv4: Enable Reassemble fragmented IPv4 datagrams
  • Protocol TCP: Enable Validate the TCP checksum if possible
  • Protocol TCP: Enable Allow subdissector to reassemble TCP streams
  • Protocol SSL: Enable Reassemble SSL records spanning multiple TCP segments
  • Protocol SSL: Enable Reassemble SSL Aplication Data spanning multiple SSL records

โดยการตั้งค่าทั้งหมดนี้ให้เข้าไปทำที่เมนู Edit Preference… ตามรูปด้านล่างนี้

 

เมื่อทำการตั้งค่าทั้งหมดเสร็จเรียบร้อยแล้วให้เข้าไปที่เมนู File -> Export Objects -> HTTP ก็จะมีหน้าต่างเปิดขึ้นมาใหม่คือ “Wireshark: HTTP object list” โดยในหน้านี้จะแสดงรายละเอียดของสิ่งที่ได้จากการ “ประกอบร่าง” เช่น Hostname ซึ่งก็คือ เวบไซท์ที่เราได้เข้าไป Content Type คือชนิดของไฟล์ที่ได้จากการเข้าไปที่เวบไซท์นั้น Size คือขนาดของไฟล์ที่โหลดขึ้นมา และสุดท้าย Filename คือชื่อของไฟล์ที่โหลดมานั่นเอง

ในตัวอย่างนี้ผมจะทำการเซฟไฟล์ชื่อ “UNL%20diagram.png” ลงมาที่เครื่องโดยการเลือกที่ไฟล์ที่ต้องการและกด “Save As” จากนั้นให้ทำการเลือกตำแหน่งที่ต้องการเซฟลงในเครื่องและทำการตั้งชื่อตามที่ต้องการ หลังจากนั้นให้ทำการเปิดไฟล์ที่ได้จากการเซฟเมื่อสักครู่นี้ขึ้นมา สำหรับผมจะได้ผลจากการเปิดไฟล์ขึ้นมาตามรูปด้านล่างนี้ครับ

สำหรับตัวอย่างการประยุกต์ใช้งานในส่วนของ Network forensics คือการนำไปใช้หาข้อมูลการดาวน์โหลดไฟล์ที่ไม่ได้รับอนุญาตจากทั้งในส่วนของภายในและภายนอกบริษัท หรือในส่วนของตัวอย่างจะเป็นการดาวน์โหลดไฟล์จาก Internet มาซึ่งสามารถระบุได้ถึง Hostname และชื่อไฟล์ซึ่งเป็นหลักฐานที่ดีในระดับนึงเลยทีเดียว

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

หวังว่าคงจะได้แนวคิดในการนำไปประยุกต์ใช้งานกันต่อแล้วนะครับ ขอบคุณทุกท่านที่ติดตามนะคร้าบบบบบ _/|\_

ถ้าอ่านแล้วถูกใจอยากมาลองเรียนเพิ่มเติมกับเราตั้งแต่พื้นฐานจนทำให้ได้ผลลัพธ์ออกมาเป็นรูปร่างได้เหมือนในบทความและยังสามารถนำความรู้ไปต่อยอดได้ ลองมาเรียนกับเราได้โดยดูรายละเอียดได้ ที่นี่ นะครับ ^^

การทำ 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 ดังรูป

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

[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:

[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

 

 

[GNS3Vault] Backup Interface

Original post from GNS3Vault: http://gns3vault.com/network-management/backup-interface/

Scenario:
You are responsible for a number of routers of a network that connects multiple cities. Whenever router Barcelona sends traffic towards Boston it has to use the link to Tilburg. Unfortunately it is load balancing since the paths are equal. You don’t want to make any changes to the routing protocol because you don’t want to impact the whole network. You decide to configure a backup interface on router Bar

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

คุณมีหน้าที่รับผิดชอบเราท์เตอร์จำนวนหนึ่งที่ใช้ในการติดต่อระหว่างเมืองต่างๆ เมื่อไรก็ตามที่เราท์เตอร์บาเซโลนาส่งข้อมูลไปที่บอสตันจะต้องผ่านเส้นทางจากทิลเบิร์ก แต่น่าเสีดายที่มันเป็นการส่งข้อมูลแบบโหลดบาลานซ์เนื่องจากเส้นทางมีค่าเท่ากัน คุณไม่ต้องการที่จะเปลี่ยนเราท์ติ้งโปรโตคอลเนื่องจากไม่ต้องการให้มีผลกระทบกับระบบเน็ทเวิร์คทั้งหมด ดังนั้นคุณจึงตัดสินใจในการใช้แบ็คอัพอินเตอร์เฟสบนเราท์เตอร์บาเซโลนาแทน

Goal:

  • All IPv4 addresses have been preconfigured for you.
  • EIGRP has been configured for connectivity.
  • Configure router Barcelona so F1/0 is a backup interface. Whenever F0/0 goes down it should enable F1/0.

เป้าหมาย:

  • ไอพีแอดเดรสเวอร์ชั่น 4 ได้ถูกตั้งค่าไว้สำหรับคุณเรียบร้อยแล้ว
  • การเชื่อมต่อใช้โปรโตคอล EIGRP ได้ถูกตั้งค่าไว้ให้เรียบร้อยแล้ว
  • ให้ทำการตั้งค่าเราท์เตอร์บาเซโลนาอินเตอร์เฟส F1/0 เป็นแบ็คอัพอินเตอร์เฟส ในกรณีที่อินเตอร์เฟส S0/0 down ลงไปให้ทำการนำอินเตอร์เฟส F1/0 มาใช้งานแทน

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

Topology:

Video Solution:

ส่วนเสริม: Command Reference
show command
 show ip eigrp neighbor
 show ip int brief
 show backup
configure command
 (config)#int serial 0/0
 (config-if)#backup interface fastEthernet 1/0
debug command
 debug backup

 

เริ่มต้นกับ GNS3Vault video

ส่วนนี้เป็นเป็นการเกริ่นก่อนที่จะเริ่มทำการแปลและเขียนคำอธิบายเพิ่มเติมเกี่ยวกับ Video ของ GNS3 ขอให้คนที่สนใจไปสมัครสมาชิกของเวบ http://gns3vault.com กันก่อน เหตุผลที่ให้ไปสมัครสมาชิกไม่ได้มีจุดประสงค์แอบแฝงครับ เนื่องจาก Rene จะให้สมาชิกของเวบเขาสามารถทำการ Dowsload GNS3 topology file ได้เท่านั้น ดังนั้นจึงแนะนำให้ไปสมัครสมาชิกเวบเขาด้วยครับ ^^

 

สำหรับผมจะเขียนคำอธิบายเพิ่มเติมให้ในบางส่วนเพื่อทำให้สามารถทำ Lab ตามได้สะดวกมากขึ้น โดยอาจจะเป็นในรูปแบบของการอธิบาย Command หรือตัวอย่างต่างๆแล้วแต่กรณีไปครับ สำหรับส่วนแรกที่จะเริ่มทำการแปลกันคือในส่วนของ Network Management ซึ่งจะมีหัวข้อต่างๆประมาณนี้

 

การติดตั้ง Windows บน UnetLab: How to install Windows on UnetLab

ห่างหายจากการ Update blog ไปพักใหญ่ กลับมา Update กันต่อดีกว่าครับ ^^

วันนี้มาแนวอินดี้เช่นเคยเพราะเราไม่ค่อยชอบเขียนเรื่องซ้ำกับใคร หัวข้อคือการติดตั้ง Windows ทุกตระกูลบน UnetLab ก่อนอื่นมาลองดูโครงสร้างของ UnetLab พี่ผมลองสรุปมาในแบบของผมเองก่อนตามรูปด้านล่างนี้ครับ (รูปนี้ผมสรุปขึ้นมาเองไม่เกี่ยวกับทางเวบ UnetLab อาจจะมีผิดพลาดไปบ้าง)

Hi Folks, Welcome to my site: VirtualNetSystems (VNS). First of all I would like to say sorry for my English language, because this is my second language.

Lat’s back to our topic. This is how to install Windows on UnetLab. Below picture is overall UnetLab architecture that I summarized by myself not from official UnetLab site. So, maybe it have some mistake.

จากรูปในส่วนของ Backend จะมีส่วนประกอบอยู่หลายส่วน ในตอนนี้จะสนใจแค่ในส่วนของ QEMU กันเป็นหลักเนื่องจากเราจะติดตั้ง Windows ลงในส่วนของ QEMU กันครับ

From above picture, We’ll focus in backend section that include QEMU. Because QEMU always used for emulate devices in UnetLab. So, we’ll used QEMU for install Windows as well.

 

มาเตรียมพร้อมกันก่อน

ทำไมผมถึงต้องทำรูปนี้ออกมา?? เนื่องจาก UnetLab เปิดกว้างให้ได้เข้าไปดู Code ต่างๆที่เขาเขียนขึ้นมาทำให้เราสามารถเข้าไปดู Code และทำความเข้าใจได้มากขึ้น และเมื่อเราพอจะเข้าใจสิ่งที่เราใช้งานกันมากขึ้นเราก็สามารถที่จะปรับปรุงหรือประยุกต์ใช้งานมันได้ดีมากขึ้นนั่นเองครับ

Before start!

Why I’m created above picture? Because, Andrea (UnetLab’s project owner) allow us to access to his code for studies and finding bugs. The first benefit is we can help him to finding new bugs reports to his team, the second benefits is we can try to tweak some feature that we need such as try to install or create own device images by ourselves.

 

เริ่มต้นที่ Backend

ทำไมต้องเริ่มที่ Backend จากตัวอย่างการเพิ่ม Image ของอุปกรณ์ต่างๆของ UnetLab จาก Link นี้จะเห็นว่าก่อนที่จะใช้งานอุปกรณ์ต่างๆใน Web-UI ได้จะต้องมาสร้าง Folder ใน Path /opt/unetlab/addons/qemu/[device name] กันก่อน โดย [device name] เป็นชื่อของอุปกรณ์ที่ต้องการให้ไปแสดงผลใน Web-UI ผมจะขอเรียก [device name] ตรงนี้ว่า Prefix แล้วกันนะครับถึงจะไม่ถูกต้องเต็ม 100% นักก็ตาม สำหรับการลง Windows version ต่างๆ Prefix จะขึ้นต้นด้วย “win-” ไม่ต้องมีเครื่องหมาย ” นะครับ และหลังเครื่องหมาย “-” จะเป็นตัวหนังสืออะไรก็ได้ ดังนั้นเราจะใช้ Windows version ในการระบุ Device image ที่ต้องการให้ไปแสดงผลที่ Web-UI กรณีของผมจะแสดงตัวอย่างโดยใช้ Windows 7 ดังนั้นผมจะตั้งชื่อ Folder เป็น “win-7″ ขั้นตอนการสร้างก็จะเป็ตามนี้ครับ (ขั้นตอนต่อไปนี้เป็นการติดตั้ง Device image แบบหนึ่งเท่านั้น ผมขอเรียกว่า”แบบดิบๆ” แล้วกันนะครับ)

  • สร้าง 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” เท่านั้น
  • ใช้ Command /opt/unetlab/wrappers/unl_wrapper -a fixpermissions เพื่อ fix parameter ต่างๆให้ Unetlab นำไปใช้งานได้

Start from Backend.

As you can seen in UnetLab official site. They will prepare image device from backend at path “/opt/unetlab/addons/qemu/” in this case we need to create folder “win-X” for Windows image where X is Windows version that you preferred. In this case I’ll create folder name “win-7” for install Windows 7. Detail instructions are below:

  • Create Windows 7 sub folder under path “/opt/unetlab/addons/qemu/” by using command “mkdir win-7”
  • Create new QEMU disk by using this command ” /opt/qemu-2.0.2/bin/qemu-img create -f qcow2 hda.qcow2 15G”
  • Copy Windows 7 installation image to path “/opt/unetlab/addons/qemu/win-7” and rename image to “cdrom.iso”
  • issue command “/opt/unetlab/wrappers/unl_wrapper -a fixpermissions”

ต่อกันที่ Web-UI

หลังจากเตรียมความพร้อมที่ Backend เสร็จแล้วให้เข้าไปที่ Web-UI และทำขั้นตอนดังนี้

  • สร้างไฟล์สำหรับ Lab
  • เข้าไปที่ Lab และทำการเลือกอุปกรณ์ลงมาวาง กรณีนี้ให้เราเลือกเป็น win-7 ตามรูป
  • ทำการ Start อุปกรณ์
  • คลิกไปที่ตัวอุปกรณ์ UnetLab จำทำการเปิด VNC console ขึ้นมาเพื่อให้เราสามารถ Console เข้าไปที่อุปกรณ์ได้
  • ทำการติดตั้ง Windows ตามปกติ

จากนั้นก็สามารถใช้งานตามขั้นตอนได้ปกติครับ

Next step from Web-UI

After we prepared windows image from QEMU. Next step we need to start windows installation from Web-UI. Detail instructions are below:

  • Create new lab file.
  • Access to lab file and select device -> windows -> win-7 that we create from backend.
  • Start device.
  • Click on device UnetLab will popup VNC console for console to device.
  • Install Windows as normal operations.

หมายเหตุ

– การติดตั้งแบบนี้จะได้ Base image คือ Image ที่สามารถนำไปใช้ต่อได้เลยใน Version เก่าๆเท่านั้น

– สำหรับ Version ใหม่การทำแบบนี้จะใช้ได้เฉพาะใน Lab ที่สร้างขึ้นมาเท่านั้น ไม่สามารถนำไปใช้ใน Lab อื่นๆที่สร้างมาทีหลังได้

Remark

– This instructions will create for each lab only. We cannot used this Windows image as base image for every lab!!!

– I’ll provide how to create Windows base image in next topic.

สำหรับการสร้าง Base image สำหรับ UnetLab version 0.9.0-54 ขึ้นไปเดี๋ยวผมจะมาบอกอีกทีว่าสร้างยังไง รอติดตามกันอีกนิดนะครับ บอกวิธีการนิดนึงว่าเราจะต้องไปเล่นที่ Backend กันมากขึ้นกว่าเดิมนิดนึง ยังไงก็รอติดตามกันต่อนะครับ

 

สวัสดี ^^

Bye.


					

Service Provider Lab Series Part 3

วันนี้กลับมาต่อกับ Service Provider ในตอนที่ 3

ใช้ Diagram เดิมในตอนที่แล้วแบบนี้ครับกันลืม

ในตอนนี้เราจะมาเริ่มทำการ Configure MPLS กันครับ โดยมีข้อกำหนดเพิ่มเติมดังนี้

กำหนดให้แต่ละอุปกรณ์มี Label ในช่วงต่างๆดังนี้

P-XR-1     = 100000 – 199999

P-XR-2     = 200000 – 299999

PE-IOU-1 = 300 – 399

PE-IOU-2 = 400 – 499

PE-IOU-3 = 500 – 599

PE-IOU-4 = 600 – 699

การกำหนดช่วงของ Label มีประโยชน์เพื่อให้การตรวจสอบการทำงานของ MPLS ใน Lab นี้สามารถเห็นการทดลองได้ชัดเจนขึ้นเท่านั้น ห้ามทำในการใช้งานจริงเด็ดขาด

เริ่มต้นการ Configure อุปกรณ์โดยเริ่มจาก P-XR-1 ก่อนและทำให้ครบทุกอุปกรณ์ตามด้านล่างนี้

=== P-XR-1 ===

mpls ldp
router-id 1.1.1.1
interface GigabitEthernet0/0/0/0
interface GigabitEthernet0/0/0/1
interface GigabitEthernet0/0/0/2
interface GigabitEthernet0/0/0/3
mpls label range table 0 100000 199999

=== P-XR-2 ===

mpls ldp
router-id 2.2.2.2
interface GigabitEthernet0/0/0/0
interface GigabitEthernet0/0/0/1
interface GigabitEthernet0/0/0/2
interface GigabitEthernet0/0/0/3
mpls label range table 0 200000 299999

=== PE-IOU-1 ===

mpls label range 300 399
mpls label protocol ldp
interface Ethernet0/0
mpls ip
interface Ethernet0/1
mpls ip
mpls ldp router-id Loopback0 force

=== PE-IOU-2 ===

mpls label range 400 499
mpls label protocol ldp
interface Ethernet0/0
mpls ip
interface Ethernet0/1
mpls ip
mpls ldp router-id Loopback0 force

=== PE-IOU-3 ===

mpls label range 500 599
mpls label protocol ldp
interface Ethernet0/0
mpls ip
interface Ethernet0/1
mpls ip
mpls ldp router-id Loopback0 force

=== PE-IOU-4 ===

mpls label range 600 699
mpls label protocol ldp
interface Ethernet0/0
mpls ip
interface Ethernet0/1
mpls ip
mpls ldp router-id Loopback0 force

 

เมื่อทำการ Configure MPLS เบื้องต้นเสร็จแล้วให้ทำการตรวจสอบ MPLS neighbor ของอุปรณ์ดังในตัวอย่างด้านล่างนี้

== show mpls ldp neighbor ===

=== P-XR-1 ===

เนื่องจาก Output มีรายละเอียดเยอะมากเราสามารถใช้ | ร่วมด้วยเพื่อ filter เฉพาะข้อมูลที่ต้องการได้ดังนี้

=== PE-IOU-4 ===

กรณีที่ MPLS neighbor ไม่เป็นไปตามที่ต้องการใให้ทำการตรวจสอบการ Enable MPLS ที่แต่ละ Interface ในทุกๆอุปกรณ์ด้วย Command

=== show mpls interfaces ===

=== P-XR-1 ===

=== PE-IOU-2 ===

ต่อมาลองดูตัวอย่างของการ Map Label เข้ากับ IP/Prefix ที่ Router โดยใช้ Command

=== show mpls ldp bindings ===

=== P-XR-1 === (ตัด Output บางส่วน)

=== PE-IOU-1 ===

จาก Output ของ PE-IOU-1 แสดง Label บางส่วนเป็น imp-null แสดงให้เห็นว่า PE-IOU-1 เป็นเข้าของ Prefix นั้นเองทำให้ไม่มีการกำหนด Label ให้กับ Prefix นั้นๆ

สำหรับตอนที่ 3 ขอจบเพียงเท่านี้ครับ _/|\_

 

สำหรับข้อมูลเพิ่มเติมใน Internet ได้จาก Keyword ดังต่อไปนี้ : MPLS, Implicit Null Labels (imp-null), MPLS Reserved Labels, Penultimate Hop Popping (PHP)

Service Provider Lab Series Part 2

วันนี้กลับมาต่อกับ Service Provider ในตอนที่ 2

ใช้ Diagram เดิมในตอนที่แล้วแบบนี้ครับกันลืม

ในตอนนี้เราจะมาทำการ Configure OSPF เพิ่มเติมอีกเล็กน้อยคือการให้ P และ PE Router ทำการ Advertised Loopback 0 ของตัวเองออกมาใน Routing table และเพิ่ม Router ID ให้เป็น Loopback 0 IP address เช่นกัน โดยใช้ Command ดังนี้

=== P-XR-1 ===

interface loopback 0
ip address 1.1.1.1 255.255.255.0
router ospf LAB
router-id 1.1.1.1
area 0.0.0.0
interface Loopback0

=== P-XR-2===

interface loopback 0
ip address 2.2.2.2 255.255.255.0
router ospf LAB
router-id 2.2.2.2
area 0.0.0.0
interface Loopback0

=== PE-IOU-1 ===

interface loopback 0
ip address 3.3.3.3 255.255.255.0
router ospf 1
router-id 3.3.3.3
network 3.3.3.3 0.0.0.0 area 0

=== PE-IOU-2 ===

interface loopback 0
ip address 4.4.4.4 255.255.255.0
router ospf 1
router-id 4.4.4.4
network 4.4.4.4 0.0.0.0 area 0

=== PE-IOU-3 ===

interface loopback 0
ip address 5.5.5.5 255.255.255.0
router ospf 1
router-id 5.5.5.5
network 5.5.5.5 0.0.0.0 area 0

=== PE-IOU-4 ===

interface loopback 0
ip address 6.6.6.6 255.255.255.0
router ospf 1
router-id 6.6.6.6
network 6.6.6.6 0.0.0.0 area 0

ทำการ Advertised Loopback IP Address เข้าไปที่ IP Address ของ P และ PE Router เข้าไปใน OSPF จากนั้นทำการเช็ค Routing table บน P-XR-1 จะได้ผลดังนี้

กรณีที่ตรวจสอบแล้วผลลัพธ์ไม่ได้แบบในภาพให้ทำการ Clear OSPF process โดยใช้ Command ดังนี้

#clear ip ospf process

ให้ลองทำการเช็ค OSPF neighbor บน P-XR-1 หลังจากทำการแก้ OSPF Router ID บน PE-IOU-1 จะได้ผลดังนี้

 

เมื่อทำการ Configure OSPF เสร็จแล้วให้ทำการ Configure BGP ต่อโดยใช้เงื่อนไขดังนี้

  • กำหนดให้ P-XR-1 และ P-XR-2 เป็น Route reflector server
  • กำหนดให้ PE-IOU-1 ถึง PE-IOU-4 เป็น Route reflector client
  • กำหนดให้ทำการ Peer BGP ด้วย Interface Loopback 0

=== P-XR-1 ===

router bgp 100
bgp router-id 1.1.1.1
address-family ipv4 unicast
neighbor 2.2.2.2
remote-as 100
update-source Loopback0
address-family ipv4 unicast
neighbor 3.3.3.3
remote-as 100
update-source Loopback0
address-family ipv4 unicast
route-reflector-client
neighbor 4.4.4.4
remote-as 100
update-source Loopback0
address-family ipv4 unicast
route-reflector-client
neighbor 5.5.5.5
remote-as 100
update-source Loopback0
address-family ipv4 unicast
route-reflector-client
neighbor 6.6.6.6
remote-as 100
update-source Loopback0
address-family ipv4 unicast
route-reflector-client

=== P-XR-2 ===

router bgp 100
bgp router-id 2.2.2.2
address-family ipv4 unicast
neighbor 1.1.1.1
remote-as 100
update-source Loopback0
address-family ipv4 unicast
neighbor 3.3.3.3
remote-as 100
update-source Loopback0
address-family ipv4 unicast
route-reflector-client
neighbor 4.4.4.4
remote-as 100
update-source Loopback0
address-family ipv4 unicast
route-reflector-client
neighbor 5.5.5.5
remote-as 100
update-source Loopback0
address-family ipv4 unicast
route-reflector-client
neighbor 6.6.6.6
remote-as 100
update-source Loopback0
address-family ipv4 unicast
route-reflector-client

=== PE-IOU-1 ===

router bgp 100
bgp router-id 3.3.3.3
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback0
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback0
address-family ipv4
neighbor 1.1.1.1 activate
neighbor 2.2.2.2 activate
exit-address-family

=== PE-IOU-2 ===

router bgp 100
bgp router-id 4.4.4.4
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback0
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback0
address-family ipv4
neighbor 1.1.1.1 activate
neighbor 2.2.2.2 activate
exit-address-family

=== PE-IOU-3 ===

router bgp 100
bgp router-id 5.5.5.5
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback0
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback0
address-family ipv4
neighbor 1.1.1.1 activate
neighbor 2.2.2.2 activate
exit-address-family

=== PE-IOU-4 ===

router bgp 100
bgp router-id 6.6.6.6
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback0
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback0
address-family ipv4
neighbor 1.1.1.1 activate
neighbor 2.2.2.2 activate
exit-address-family

เมื่อทำการ Configure BGP ตามข้อกำหนดเสร็จแล้วให้ทำการตรวจสอบ BGP peer ที่ P-XR-1 และ PE-IOU-4 ดังนี้

=== P-XR-1 ===

sh bgp summary

=== PE-IOU-1 ===

sh ip bgp summary

เมื่อทำการ Peer BGP ครบเรียบร้อยแล้วให้ลองทดสอบการทำงานของ Route reflector ที่ได้ทำการ Configure ไว้โดยลองให้ PE-IOU-1 ทำการเพิ่ม Interface Loopback 100 และทำการ Advertised network เข้าไปใน BGP

=== PE-IOU-1 ===

interface Loopback100

ip address 100.100.100.100 255.255.255.0

router bgp 100

address-family ipv4

network 100.100.100.0 mask 255.255.255.0

หลังจากนั้นให้ทำการตรวจสอบโดยการ Verify ฺBGP route ที่ PE-IOU-4 ดังนี้

=== PE-IOU-4 ===

show ip bgp sum

show ip bgp

จากผลการ Verify โดยใช้ Command “show ip bgp sum” จะเห็นได้ว่า PE-IOU-4 จะเห็น Prefix เข้ามาจาก Neighbor 1.1.1.1 (P-XR-1) และ 2.2.2.2 (P-XR-2) ตัวละ 1 Route ซึ่งเป็น Route reflector server ทั้งคู่

และเมื่อใช้ Command “show ip bgp” จะเห็น Route 100.100.100.0/24 เข้ามา 2 Route และมี 1 Route เป็น Best path

กรณีที่ต้องการหาว่า Best route 100.100.100.0/24 ที่ BGP เลือกไปใส่ลงใน Routing table มาจาก Router ตัวใดให้ใช้ Command “sh ip bgp 100.100.100.0” ที่ PE-IOU-4 จะได้ผลดังนี้

 

จากรูปจะเห็นได้ว่า Route 100.100.100.0/24 ที่เป็น Best route ได้มากจาก Neighbor 1.1.1.1 (P-XR-1) จาก Keyword “best” ในรูปด้านบน

วันนี้จบตอนนี้ 2 ในส่วน BGP เท่านี้ครับ ^^