สารบัญ

Image for post

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

GNS3 คืออะไร ?

GNS3 ย่อมาจาก Graphic Network Simulator 3 คือโปรแกรมที่จำลองการทำงานของซอฟท์แวร์ระบบปฏิบัติการในอุปกรณ์ network (IOS) ซึ่งจะช่วยให้เราสามารถออกแบบระบบเครือข่ายโดยที่ไม่ต้องใช้อุปกรณ์จริง ๆ กันเลยทีเดียว โปรแกรมนี้ จึงเหมาะสมสำหรับผู้ที่ทำงานด้าน network โดยตรง ไปจนผู้ที่อยากศึกษา เรียนรู้ด้านนี้ และผู้ที่ต้องการเตรียมตัวสอบประกาศนียบัตรของ Cisco ในระดับ CCNA (ถึงขั้น expert )

Netmiko คืออะไร ?

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

 

มาลองกันเถอะ !!

เอาละครับหลังจากพอจะรู้ว่าแต่ละตัวที่ผมพูดถึงในข้างต้นนั้นคืออะไรและทำอะไรได้บ่างแบบคร่าวๆแล้วนั้น ต่อไปเรามาเริ่มเตรียมตัวในการที่ใช้งานเจ้า GNS3 และ Netmiko ในการฝึกทำเขียน Network Automation กันเลย

1.ดาวโหลดและติดตั้งโปรแกรม GNS3

โดยสามารถดามโหลดได้ง่ายๆที่ Link นี้ https://www.gns3.com/software/download

เมื่อดาวโหลดเสร็จแล้วก็ทำการติดตั้งโปรแกรมได้เลยครับผม

  • กด Next ไปเลย ไม่ต้องคิดมาก
Image for post
Image for post
  • สามารถเลือกตำแหน่งที่ต้องการติดตั้งได้ แตแนะนำให้ว่าไม่ต้องเปลี่ยนดีกว่า
Image for post
Image for post
  • อย่าลืมกด Yes แล้วกด Next ด้วยนะ
Image for post
Image for post
  • กด Finish ได้เลย
Image for post
Image for post

เมื่อติดตั้งเสร็จแล้วกะไปขั้นตอนต่อไปกันเลยครับผม ><

2.ติดตั้ง VMware และ GNS3 VM

เพื่อให้เราสามารถ เพิ่ม IOS ของ Router ต่าง ๆได้เราจึงจำเป็นต้องลง VMware เพราะทาง GSN3 นั้นจะใช้ในการติดตั้ง IOS ต่าง ๆ

โดยอ่างแรกที่ต้องทำคือการดาวโหลด VMware Workstation 14.1.5 ที่ Link นี้ครับ https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/14_0|PLAYER-1415|product_downloads

เสร็จแล้วก็ทำการติดตั้งได้เลยครับผม

  • กด Next ได้เลยครับ ยาว ๆ
Image for post
Image for post
  • กดถูกตรงช่อง I accept the terms in the License Agreement จากนั้นกดปุ่ม Next ต่อไปเลยครับผม
Image for post
Image for post
Image for post
Image for post
  • กดปุ่ม Finish เป็นอันเสร็จเรียบร้อย
Image for post
Image for post

หลังจากทำการติดตั้ง Vmware เสร็จแล้ว ต่อไปให้ดาวโหลด VMware VIX 1.17.0 ที่ Link นี้ครับ https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/14_0|PLAYER-1415|drivers_tools

เมื่อโหลดเสร็จก็ทำการติดตั้งตามปกติ

  • กด Next ตามขั้นตอนไปเรื่อย ๆ
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
  • กดปุ่ม Finish ก็เสร็จเรียบร้อย
Image for post
Image for post

เมื่อทำการติดตั้งทั้งสองโปรแกรมเสร็จเรียบร้อยแล้ว ต่อไปจะเป็นการเพิ่ม VM ของ GNS3 กันนะครับ โดยต้องทำการดาวโหลดตัว GNS3 VM ที่

GNS3.VM.VMware.Workstation.2.2.7.zip

เมื่อดาวโหลดเสร็จแล้วก็ทำการ unzip ไฟล์ได้เลยครับหลังจากนั้นให้เปิดโปรแกรม VMware Workstation 14 Player ที่เราพึ่งทำการติดตั้งขึ้นมาครับ
เมื่อทำการเปิดโปรแกรมขึ้นมาก็จะพบกับหน้าตาของโปรแกรมแบบนี้

  • ให้กดที่ Open a Virtual Machine
Image for post
Image for post
  • จากนั้นให้ไปยังที่ Folder ของ GNS3 VM ที่ดามโหลดมาแล้วเลือกไฟล์ GNS3 VM.OVA เลยครับผม
Image for post
Image for post
  • กด Import และรอสักครู่
Image for post
Image for post
  • เพียงเท่านี้ก็เป็นอันเสร็จเรียบร้อยแล้วครับผม
Image for post
Image for post

3.ตั้งค่า GNS3 ให้เชื่อต่อกับ VMware

หลังจากเราติดตั้งทั้ง GNS3 และ VMware เสร็จแล้ว ต่อไปเราจะให้ทั้งสองโปรแกรมมองหากันเจอนะครับ เพื่อให้สามารถลง IOS ของ Router ที่เราต้องการได้ มาเริ่มกันเลยครับ

  • อย่างแรก เปิด Command Prompt หรือ cmd ขึ้นมาแล้วพิม
sc config npf start= auto

จากนั้น restart คอมพิวเตอร์ 1 รอบ ก่อนครับผมเพราะถ้าไม่ทำแบบนี้ ตัว GNS3 จะไม่สามารถเชื่อมต่อกับ VMware ได้ต่อให้หากันเจอแล้วก็ตาม

  • หลังจากที่ restart เสร็จแล้วให้เปิดโปรแกม VMware ขึ้นมาครับผมและกด Play virtual machine เลยครับ
Image for post
Image for post
  • เมื่อกด play เสร็จแล้วก้จะได้หน้านี้ขึ้นมา
Image for post
Image for post
  • จากนั้นให้เปิดโปรแกรม GNS3 ขึ้นมาโดยยังไม่ปิด VMware นะครับ เมื่อเปิดโปรแกรมขึ้นมาแล้วจะได้หน้าตาแบบนี้
Image for post
Image for post
  • สามารถกด Don’t show this again แล้วกด Next ได้เลยครับ
Image for post
Image for post
  • จากนั้นแก้ไข Host binding ให้เป็นแบบในภาพแล้วกด Next ต่อเลยครับ
Image for post
Image for post
  • กด Next ต่อไปได้เลยครับ
Image for post
Image for post
  • ในหน้านี้ คือหน้าที่เราจะเชื่อมต่อกับ VMware ที่เราได้รันเจ้า GNS3 VM ไว้นะครับสังเกตุว่าในช่อง VM name จะเลือก GNS3 VM อัตโนมัติ ถ้าหาเจอ หากไม่เจอลองกดปุ่ม Refresh ดูครับ หากเจอแล้วกดปุ่ม Next ต่อได้เลย
Image for post
Image for post
  • กด Finish ได้เลยครับผม
Image for post
Image for post

ปล. เมื่อทำการใช้งาน GNS3 ครั้งต่อไป ตัวโปรแกรมจะเปิด VMware ขึ้นมาให้อัตโนมัติโดยที่เราไม่ต้องกดเปิดเองเลยครับผม 😉

4.เพิ่ม Router ให้กับ GNS3

เนื่องจากตัว GNS3 นั้นไม่มี Router มาให้นะครับผม เราจึงต้องเพิ่มเอาเองด้วยการดาวโหลด IOS ของอุปกรณ์ที่เราต้องการ ในที่นี้ผมจะใช้ของ Cisco นะครับผม เป็นตัว Cisco IOSv โดยจะต้องจ่ายเงินเพื่อซื้อตัว image file เอานะครับ หรือหาดาวโหลดจากแหล่ง อื่น ๆ เอานะครับผม ในที่นี้ผมไม่ขอพูดนะครับ 😆

  • หลังจากเราสามารถหา image file ของ Cisco IOSv ได่แล้วนะครับให้กลับมาที่หน้าโปรแกรมและกด New Template
Image for post
Image for post
  • กด Next ได้เลยครับ
Image for post
Image for post
  • กดเลือกที่ Router แล้วเลือก Cisco IOSv แล้วกด Install
Image for post
Image for post
  • กด Next ได้เลยครับ
Image for post
Image for post
Image for post
Image for post
  • กด Import แล้วไปยัง image file ของ Cisco IOSv
Image for post
Image for post
  • เลือก ไฟล์ตามนี้แล้ว Open ได้เลยครับผม
Image for post
Image for post
  • กด Yes
Image for post
Image for post
  • จะเห็ฯได้ว่าเรามี IOS ที่พร้อมติดตั้งแล้ว สามารถเลือกแล้วกด Next ได้เลยครับ
Image for post
Image for post
  • เมื่อ Yes , Ok ไปตามขั้นตอนเสร็จแล้ว เราก็จะได้ Router ที่สามารถใช้งานได้แล้วครับผม 😉
Image for post
Image for post

5. ทำ Loopback Adapter เพื่อให้เราสามารถเชื่อมต่อกับ Router ใน GNS3 ได้

เพราะว่ามน GNS3 เราไม่สามารถเขียนโค้ด Netmiko ลงไปในนั้นทำให้เราต้องทำให้คอมพิมเตอร์ของเรานั้นสามารถรับส่งข้อมูลเข้าไปยังเครื่อข่ายที่เราสร้างขึ้นใน GNS3 ได้ โดยการทำ Loopback Adapter นั้นเอง โดย

  • พิม hdwwiz.exe ในช่องค้นหาแล้วเปิดมันขึ้นมา
Image for post
Image for post
  • กด Next แล้วเลือกตัวเลือกแรก จากนั้นกดปุ่ม Next อีกที
Image for post
Image for post
  • จากนั้นเลือก Network adapters แล้วกด next
Image for post
Image for post
  • ช่องซ้ายให้เลือก Microsoft จากนั้นช่องขวาให้เลือก Micrsoft KM-TEST Loopback Aapter แล้วกด Next ไปจนกว่าจะเสร็จ
Image for post
Image for post
  • เมื่อเสร็จแล้วไปที่ Control Panel → Network and Sharing Center → Change adapter settings แล้วดับเบิ้ลคลิกที่ Ethernet 2 แล้วกด Properties
Image for post
Image for post
  • กดที่ Internet Protocal Version 4 (TCP/IPv4) แล้วตั้งค่า Ip address ให้เรียบร้อย จากนั้นกดปุ่ม ok เป็นอันเสร็จสิ้น
Image for post
Image for post

6.ทดสอบการเชื่อมต่อระหว่างคอมพิมเตอร์ของเรากับอุปกรณ์

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

  • ไปที่โปรแกรม GNS3 แล้วเลือก Router ที่เราทำการเพิ่มเข้าไป และ Cloud ออกมาวางที่ Worksapcec แบบนี้
Image for post
Image for post
  • กดปุ่มรูปสายการเชื่อมต่อแล้ว กดที่ Clound จากนั้นเลือก Ethernet 2 และลากไปที่ Router แล้วเลือก Gi0/0 ตามลำดับ
Image for post
Image for post
Image for post
Image for post
  • จากกดปุ่มรันแล้วคลิ้กที่ Router เลือก Console
Image for post
Image for post
  • ทำการตั้ง ip address ให้ router โดยใช้คำสั่ง
Router#en
Router#conf t
Router(config)#int gigabitEthernet 0/0
Router(config-if)#ip address 192.168.60.2 255.255.255.0
Router(config-if)#no shut
Image for post
Image for post
  • เมื่อทำการตั้งค่า ip address เสร้จแล้ว ให้เปิด cmd ขึ้นมาแล้วลองใช้คำสั่ง ping เพื่อทดสอบว่าเราสามารถ ping ไปยัง router ใน GNS3 ได้หรือไม่
Image for post
Image for post

หลังจากนั้นเราจะทำการ Enable SSH ของrouter โดยศึกษาได้จากทีนี่ https://www.thegeekstuff.com/2013/08/enable-ssh-cisco/

เพียงเท่านี้ก็เป็นอันเสร็จเรียบร้อยพร้อมที่จะเริ่มใช้ Netmiko กันแล้ว 😉

 

การใช้ Netmiko เบื้องต้น

ตัวอย่างการใช้ Netmiko เพื่อเชื่อต่อกับอุปกร์ 1 ตัวแบบง่ายๆนะครับ ซึ่ง router ต้องเปิด ssh แล้วไม่เช่นนั้น Netmiko จะต่อไม่ติดนะครับผม

ตัวอย่างโค้ด แบบต่อ 1 อุปกรณ์

from netmiko import ConnectHandler# รายละเอียดของ R1R1={'device_type': 'cisco_ios','host': '192.168.60.2','username': 'admin','password': 'admin',}# สั่งให่เชื่อมต่อไปที่ R1router_conn = ConnectHandler(**R1)# ใช้คำสั่ง sh ip int brief ใน router แล้วให้ปริ้นออกมาprint(router_conn.send_command("sh ip int brief"))# ตัดการเชื่อมต่อrouter_conn.disconnect()

ผลลัพธ์ที่ได้

Image for post
Image for post

เรามาลองแก้ config เล็ก ๆน้อย ๆดูกันดีกว่าครับว่าทำยังไง โดยผมจะลองเปลี่ยน Hostname จาก R1 เป็น R99 โดยใช้โค้ดแบบนี้

from netmiko import ConnectHandler# รายละเอียดของ R1
R1={
'device_type': 'cisco_ios',
'host': '192.168.60.20',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}

# สั่งให่เชื่อมต่อไปที่ R1
net_connect = ConnectHandler(**R1)
net_connect.enable()
# ตั้งคำสั่งให้เปลี่ยนชื่อ Hostname
config_commands = ['hostname R99']
output = net_connect.send_config_set(config_commands)
print(output)
# ตัดการเชื่อมต่อ
net_connect.disconnect()

ผลลัพธ์ที่ได้คือ

Image for post
Image for post

เพียงแค่นี้ Hostname ก็ถูกเปลี่ยนเรีนยร้อยแล้ว ไม่ยากเลย 😆

เรามาลองเชื่อมต่อหลาย router พร้อมกันดูดีกว่า โดยผมจะใช้โค้ดแบบนี้

from netmiko import Netmiko
# รายละเอียดของ R1
R1={
'device_type': 'cisco_ios',
'host': '192.168.60.20',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
R2={
'device_type': 'cisco_ios',
'host': '192.168.60.30',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
R3={
'device_type': 'cisco_ios',
'host': '192.168.60.40',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
R4={
'device_type': 'cisco_ios',
'host': '192.168.60.50',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
R5={
'device_type': 'cisco_ios',
'host': '192.168.60.60',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
# วนให้เชื่อมที่ละตัว
for device in (R1, R2, R3, R4,R5):
net_connect = Netmiko(**device)
print(net_connect.find_prompt())
output = net_connect.send_command("show ip int brief")
print(output)
net_connect.disconnect()

ผลลัพธ์ที่ได้คือ

Image for post
Image for post

จะสังเกตูได้ว่า Netmiko จะเข้าไปเชื่อมต่อแต่ละอุปกรณ์และใช้คำสั่ง show ip int brief ทีละตัวๆ โดยที่เราเพียงแค่นั่งรอเฉยๆ แทนที่จะไปนั่งพิมคำสั่งนี้ในทุกๆ router ให้เสียเวลาอีกด้วยนะครับ

ต่อไปเราจะลองแก้ชื่อ hostname ให้เป็น Test999 กันทุกเลยดีกว่าโดยใช้โค้ด

from netmiko import Netmiko
# รายละเอียดของ R1
R1={
'device_type': 'cisco_ios',
'host': '192.168.60.20',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
R2={
'device_type': 'cisco_ios',
'host': '192.168.60.30',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
R3={
'device_type': 'cisco_ios',
'host': '192.168.60.40',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
R4={
'device_type': 'cisco_ios',
'host': '192.168.60.50',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
R5={
'device_type': 'cisco_ios',
'host': '192.168.60.60',
'username': 'admin',
'password': 'admin',
'secret' :'class',
}
# ตั้งคำสั่งให้เปลี่ยนชื่อ Hostname
config_commands = ['hostname Test999']
# สั่งให่เชื่อมต่อไปที่ R1
for device in (R1, R2, R3, R4,R5):
net_connect = Netmiko(**device)
net_connect.enable()
output = net_connect.send_config_set(config_commands)
print(output)
net_connect.disconnect()

ผลลัพธ์ที่ได้ก็คือ

Image for post
Image for post

สังเกตุได้เลยว่า router ทั้งหมดได้ถูกเปลี่ยน Hostname โดยที่เราไม่ต้องเข้าไปตั้งเองทีละตัวๆทำให้เพิ่มความสะดวกมากยิ่งขึ้น หากมีความจำเป็นที่จะต้องตั้งค่าเป็นร้อยๆเครื่องเราก็ไม่ต้องไปทำเองทั้งหมดร้อยเครื่อง

และนี้เป็นเพียง GNS3 และ Nemiko เบื้องต้นที่ผมได้ทำการศึกษาเอง และนำเขียนเป็นบทความที่จริงอยากจะเขียนให้มากกว่านี้แต่ยังไม่ได้ศึกษาให้เพียงพอในหลาย ๆอย่างจึงทำได้เพียงเท่านี้ 😢 หากผิดพลาดหรือขาดอะไรต้องอภัยด้วยนะครับ 🙏

สามรถศึกษาเกี่ยวกับ Nemiko เพิ่มเติมได้ที่
https://pynet.twb-tech.com/blog/automation/netmiko.html
https://github.com/ktbyers/netmiko

สามารถศึกษาเกี่ยวกับ GNS3 เพิ่มเติมได้ที่
https://docs.gns3.com/

 

เครดิต 

Kachawut Sopa

Kachawut Sopa