ยินดีต้อนรับสู่ show running-config ครับ
Monday, April 13, 2015
Traceroute คืออะไร? และทำไมต้อง Timeout?
Wednesday, December 24, 2014
ทำความรู้จักกับชนิดของ LSA บน OSPFv2 กันครับ
OSPF เป็น routing protocol ชนิด link-state ที่นิยมใช้งานกันอย่างแพร่หลาย เนื่องจากเป็น routing protocol ที่เป็นมาตรฐานกลาง (RFC 2328) และมีข้อดีคือที่เป็นธรรมชาติของ routing protocol แบบ link-state ก็คือ จะไม่มีโอกาสเกิด routing loop ขึ้นในระบบเครือข่าย เนื่องจากมันจะสามารถมองเห็น topology ของระบบเครือข่ายได้ ก่อนที่จะทำการคัดเลือกเส้นทางที่ดีที่สุดที่จะใช้ไปยังแต่ละปลายทาง โดยในการที่เราเตอร์ OSPF จะสามารถมองเห็น topology ของระบบเครือข่ายได้นั้น ก็จะต้องมีการแลกเปลี่ยนข้อมูลเส้นทางและสถานะของ link ต่าง ๆ ในระบบ ระหว่างเราเตอร์ OSPF แต่ละตัว ซึ่งข้อมูลที่แลกเปลี่ยนกันนี้ก็คือ LSA (link-state advertisement) นั่นเองครับ
Thursday, November 27, 2014
NAT Virtual Interface (NVI) คืออะไร?
Monday, October 6, 2014
ทำความรู้จักกับ Switching Path บน Cisco IOS Router
Tuesday, August 19, 2014
การใช้งาน Routing-context บน Cisco IOS
ในวันนี้ขอเสนอบทความสั้น ๆ โดยเป็นบทความที่มีเนื้อหาต่อเนื่องมาจากบทความเรื่อง VRF Lite คืออะไร? นะครับ โดยปกติแล้วเมื่อเราทำการตั้งค่า VRF เพื่อแบ่งแยกขอบเขตของระบบเครือข่ายแล้ว เมื่อต้องการตรวจสอบการทำงานของอุปกรณ์ด้วยการใช้คำสั่งบน EXEC mode เคยรู้สึกเหมือนกับผมบ้างมั้ยครับ ว่าใช้งานยากและไม่สะดวกเอาเสียเลย เนื่องจากจะต้องทำการเพิ่มคำสั่ง "vrf" ตามด้วยชื่อของ VRF ไปด้วยในทุก ๆ คำสั่งที่ใช้งานบน EXEC mode ในวันนี้ผมจึงจะมาแนะนำให้รู้จักกับคุณสมบัติ routing-context ที่จะช่วยให้สามารถทำการตรวจสอบการทำงานของแต่ละ VRF ด้วยการใช้คำสั่งบน EXEC mode ได้อย่างสะดวกมากยิ่งขึ้นกันครับ
Monday, July 14, 2014
CCNA Student Lab Manual
Thursday, January 3, 2013
BGP Handbook : คู่มือ BGP Routing ขั้นพื้นฐาน
เป็นเอกสารที่ผมแปลมาจาก CCNP Route Study Guide นะครับ สำหรับใครที่กำลังศึกษาเกี่ยวกับ BGP อยู่ ลองดาวน์โหลดไปอ่านดูนะครับ และถ้าหากมีข้อเสนอแนะหรือข้อผิดพลาดในส่วนใดก็บอกมาได้เลยครับ
link download : ดาวน์โหลด (4shared)
Sunday, May 22, 2011
ทำความรู้จักกับค่า Configuration Register บน Cisco IOS Router
Use of the configuration register on Cisco IOS Router
สวัสดีครับเพื่อน ๆ ในวันนี้ผมก็มีเรื่องราวดี ๆ ที่จะมาแนะนำให้เพื่อน ๆ ได้รู้จักกันเช่นเคยนะครับ สำหรับเรื่องราวที่อยากจะมาแนะนำให้เพื่อน ๆ ได้ทำความรู้จักกันในวันนี้นั่นก็คือ การทำงานและวิธีการใช้งานค่า Configuration Register ซึ่งเป็นค่าที่เราเตอร์ซิสโก้ใช้ในการกำหนดค่าหลาย ๆ อย่างครับ ไม่ว่าจะเป็นขั้นตอนที่ใช้ในการบูต, การกำหนดค่า baud rate หรือการกำหนดค่า broadcast address ซึ่งล้วนแล้วแต่เป็นค่าที่ควรเรียนรู้เอาไว้ เพื่อนำไปใช้งานในการตรวจสอบและแก้ไขปัญหาที่เกิดขึ้นกับตัวอุปกรณ์ของเพื่อน ๆ ได้ครับ
เราสามารถใช้ค่า Configuration Register นี้ เพื่อจุดประสงค์ต่าง ๆ ดังต่อไปนี้ครับ
- กำหนดให้เราเตอร์บูตไปยัง ROM Monitor
- การเลือกไฟล์และสถานที่ในการจัดเก็บไฟล์ IOS ที่จะทำการบูต
- เปิดหรือปิดการทำงานของ Break Function
- การกำหนดค่า Broadcast Address
- การกู้คืน password ในกรณีที่ลืม password
- กำหนดค่า Console line speed (baud rate)
ค่า Configuration Register นี้ มีขนาด 16 bits โดยเมื่อเขียนอยู่ในรูปของเลขฐานสองจะเรียงลำดับจาก 0 ถึง 15 โดยเริ่มต้นจากทางด้านขวามาด้านซ้าย ดังนี้
และในทุก ๆ 4 bits จะถูกแปลงเป็นเลขฐานสิบหก (วิธีการแปลงไม่ขอพูดถึงนะครับ) ดังตัวอย่างด้านล่าง
ค่า Configuration Register บนเราเตอร์ซิสโก้ โดยปกติ (default) จะมีค่าเท่ากับ 0x2102 ซึ่งมีขนาด 16 บิต สามารถเขียนอยู่ในรูปของเลขฐานสองได้เท่ากับ 0010 0001 0000 0010 ซึ่งในแต่ละบิตก็จะกำหนดถึงการทำงานต่าง ๆ ที่ต่างกันออกไป เรามาดูกันดีกว่าครับ ว่าในแต่ละบิตนั้นมีการทำงานอย่างไร รายละเอียดตามตารางด้านล่างเลยครับ
ในเฉพาะส่วนของ boot field ซึ่งประกอบไปด้วย 4 bit แรกของค่า Configuration Register (bits 3,2,1 และ 0) นั้นจะเป็นตัวกำหนดวิธีการที่เราเตอร์จะดาวน์โหลดไฟล์ system image มาใช้งาน โดยมีรายละเอียด ดังนี้
ในส่วนของบิตที่ทำหน้าที่เกี่ยวกับการกำหนดค่า IP Broadcast Address ซึ่งก็คือบิตทที่ 10 และ 14 ก็จะเป็นตัวกำหนดถึงค่า IP Broadcast Address ที่เราเตอร์ตัวนี้จะใช้งาน ซึ่งโดยปกติเราจะใช้ค่า IP Broadcast Address เป็น all one (ทุก ๆ บิตเป็น 1) แต่เราสามารถทำการกำหนดค่า IP Broadcast Address ในรูปแบบอื่น ๆ ได้ ตามตารางด้านล่างครับ
ในส่วนของบิตที่ทำหน้าที่ในการกำหนด console line speed หรือก็คือค่า baud rate ที่เราจะต้องทำการตั้งค่าเมื่อทำการเชื่อมต่อสาย console จาก PC ของเราไปยัง console port ของเราเตอร์นั้นก็คือบิตที่ 5, 11 และ 12 ซึ่งโดยปกติ (default) เราจะใช้ค่า baud rate เท่ากับ 9600 ซึ่งก็คือทั้งสามบิตที่ว่ามา จะมีค่าเป็น 0 แต่เราก็สามารถที่จะทำการกำหนดค่า baud rate เป็นค่าอื่น ๆ ได้ตามตารางด้านล่างนี้เลยครับ
เมื่อทำความรู้จักกับค่า Configuration Register กันไปบ้างแล้ว ผมก็ขอยกตัวอย่างค่า Configuration Register ที่มีการใช้งานในเราเตอร์หลาย ๆ รุ่นมาให้เพื่อน ๆ ดูกันบ้างนะครับ
ทีนี้ก็มาถึงขั้นตอนในการตั้งค่า Configuration Register นะครับ ซึ่งสามารถทำการตั้งค่าได้ทั้งในหน้า ROM Monitor หรือบน Cisco IOS CLI นะครับ ซึ่งในวันนี้ผมจะขอแนะนำการตั้งค่าบน Cisco IOS CLI กันก่อนนะครับ สำหรับขั้นตอนการตั้งค่า Configuration Register ตั้งแต่การเริ่มต้นก็มีดังนี้ครับ
1. เชื่อมต่อ PC ไปยังเราเตอร์ผ่านทาง console port
2. ทำการตั้งค่า baud rate เท่ากับ 9600, 8 data bits, no parity และ 2 stop bits
3. เปิดการทำงานของเราเตอร์
4. จากนั้นเราเตอร์จะบูต ก็ให้รอจนกว่าจะบูตเสร็จนะครับ และเมื่อบูตเสร็จแล้ว ถ้าเป็นเราเตอร์ที่ยังไม่ได้ทำการตั้งค่าอะไรไว้เลย ก็จะมีคำถามขึ้นมาว่าต้องการใช้ initial dialog หรือไม่ ก็ให้ตอบ no ไปนะครับ
ตัวอย่าง
Would you like to enter the initial dialog? [yes]: no
5. จากนั้นจะเข้าสูโหมด user EXEC ครับ ก็ให้ใช้คำสั่ง "enable" เพื่อเข้าสู่ privileged EXEC mode นะครับ
ตัวอย่าง
Router> enable
Password: *****
Router#
6. จากนั้นให้เข้าสู่ golbal configuration mode ด้วยการใช้คำสั่ง "configure terminal" ใน privileged mode ครับ
ตัวอย่าง Enter configuration commands, one per line.
Router# configure terminal
Edit with DELETE, CTRL/W, and CTRL/U; end with CTRL/Z
7. เมื่อเข้าสู่ global configuration mode แล้ว ก็ให้ใช้คำสั่ง "config-register <value>" ในการเปลี่ยนค่า configuration register นะครับ โดยจะต้องระบุค่า configuration register ในรูปของเลขฐานสิบหก ที่มี "0x" นำหน้านะครับ
ตัวอย่าง
Router(config)#config-register 0x2142
8. เมื่อทำการกำหนดค่า configuration register เรียบร้อยแล้ว ก็ให้ออกจาก global configuration mode เพื่อเข้าสู่ privileged EXEC mode ด้วยการใช้คำสั่ง end หรือ exit นะครับ
ตัวอย่าง
Router(config)# end
Router#
9. จากนั้นให้ทำการ save ค่า configuration ที่เราได้ทำการแก้ไขไปยัง NVRAM ครับ
ตัวอย่าง
Router#copy running-config startup-config
10. และเพื่อน ๆ สามารถใช้คำสั่ง show version เพื่อตรวจสอบถึงค่า configuration register ที่ได้ทำการกำหนดได้ครับ โดยเมื่อใช้คำสั่ง show version แล้ว ขอให้เพื่อน ๆ สังเกตุในบรรทัดล่างสุดนะครับ จะแสดงถึงค่า configuration register ในปัจจุบันของอุปกรณ์ และถ้ามีการแก้ไขค่า configuration register ก็จะแสดงให้เห็นค่า configuration register ที่จะเปลี่ยนแปลงไปเมื่อทำการรีบูตเราเตอร์ด้วยครับ
ตัวอย่าง ROM: System Bootstrap, Version 12.1(3r)T2, RELEASE SOFTWARE (fc1) System returned to ROM by power-on This product contains cryptographic features and is subject to United A summary of U.S. laws governing Cisco cryptographic products may be found at: If you require further assistance please contact us by sending email to cisco 2811 (MPC860) processor (revision 0x200) with 60416K/5120K bytes of memory Configuration register is 0x2102(will be 0x2142 at next reload)
Router#show version
Cisco IOS Software, 2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Wed 18-Jul-07 06:21 by pt_rel_team
Copyright (c) 2000 by cisco Systems, Inc.
System image file is "c2800nm-advipservicesk9-mz.124-15.T1.bin"
States and local country laws governing import, export, transfer and
use. Delivery of Cisco cryptographic products does not imply
third-party authority to import, export, distribute or use encryption.
Importers, exporters, distributors and users are responsible for
compliance with U.S. and local country laws. By using this product you
agree to comply with applicable laws and regulations. If you are unable
to comply with U.S. and local laws, return this product immediately.
http://www.cisco.com/wwl/export/crypto/tool/stqrg.html
export@cisco.com.
Processor board ID JAD05190MTZ (4292891495)
M860 processor: part number 0, mask 49
2 FastEthernet/IEEE 802.3 interface(s)
239K bytes of NVRAM.
62720K bytes of processor board System flash (Read/Write)
11. เพียงเท่านี้ เมื่อทำการรีบูตเราเตอร์ใหม่ด้วยคำสั่ง "reload" ก็จะทำให้เราเตอร์ของเราเปลี่ยนไปใช้ค่า configuration register จาก 0x2102 เป็น 0x2142 แล้วครับ
ตัวอย่าง
Router#reload
Proceed with reload? [confirm]
%SYS-5-RELOAD: Reload requested by console. Reload Reason: Reload Command.
เราควรที่จะทำความรู้จักกับค่า Configuration Register นี้เอาไว้ก็ดีนะครับ ถึงจะไม่ค่อยได้ใช้งานก็เถอะ แต่ในบางครั้ง เราอาจจะมีความจำเป็นที่จะต้องใช้เจ้าค่า Configuration Register ที่ว่านี้ ในการแก้ไขปัญหาในหลาย ๆ เรื่องนะครับ ไม่ว่าจะเป็นในกรณีที่ลืมหรือไม่ทราบ password ในการเข้าใช้งานเราเตอร์ หรือไม่ว่าจะกรณีอื่น ๆ อย่างที่ผมเคยเจอมาก็เช่น มีลูกค้าเจ้านึงมีการนำเราเตอร์ไปติดตั้งใช้งานที่โรงงาน ซึ่งค่อนข้างมีปัญหาเกี่ยวกับระบบไฟฟ้า (ไฟฟ้าตก กระชากบ่อย ๆ) อยู่มาวันนึง เจ้าเราเตอร์ตัวที่ว่าเกิดใช้งานไม่ได้ขึ้นมา เมื่อตรวจสอบดูก็พบว่าเราเตอร์ตัวนี้ไม่มีค่า running-config อยู่เลย แต่เมื่อทดลองใช้คำสั่ง "show startup-config" ก็พบว่ายังมี configuration อยู่ และเมื่อลอง reload เราเตอร์ดู ก็พบว่าเราเตอร์ไม่นำค่า startup-config มาใช้งาน ค้นไปค้นมาปรากฎว่า เกิดจากค่า Configuration Register ของเราเตอร์เกิดการเปลี่ยนแปลงไป เนื่องจากเกิดไฟตก ไฟกระชากบ่อย ๆ นั่นเองครับ จึงได้ทำการแก้ไขเบื้องต้นโดยการเปลี่ยนค่า Configuration Register กลับเป็นค่า default (0x2102) ก็พบว่าเราเตอร์สามารถกลับมาใช้งานได้ตามปกติ จากนั้นจึงค่อยนำ UPS มาติดตั้งเพื่อป้องกันปัญหาที่เกิดจากระบบไฟฟ้าต่อไปครับผม ซึ่งนี่ก็เป็นเพียงตัวอย่างเพียงเล็กน้อยในการใช้งานเจ้าค่า Configuration Register นี้ในการแก้ไขปัญหานะครับ
ในวันนี้ ก็หวังว่าเพื่อน ๆ ที่ (หลง) เข้ามาอ่านบทความนี้ ก็คงได้ความรู้ติดตัวไปบ้าง ไม่มากก็น้อยนะครับ สำหรับบทความนี้ก็ขอจบเพียงเท่านี้ครับ สวัสดีครับผม ^_^
Sunday, May 15, 2011
ทำความรู้จักและตั้งค่า Secure Shell (SSH) บนอุปกรณ์ Cisco IOS
Introduction and configure Secure Shell (SSH) Server on Cisco IOS
ในการเข้าใช้งานในหน้า CLI (Command Line Interface) ของอุปกรณ์ Cisco IOS ในครั้งแรกนั้น เราก็จะต้องใช้งานผ่าน Console port โดยการเสียบสาย Console ไปยังตัวอุปกรณ์โดยตรงใช่มั้ยครับ แต่เมื่อเราทำการตั้งค่าเสร็จเรียบร้อยและนำไปติดตั้งยังสถานที่ติดตั้งแล้ว ซึ่งในบางครั้งก็จะติดตั้งในสถานที่ที่เข้าถึงลำบาก หรือสถานที่ที่อยู่ห่างไกลออกไป เพื่อความสะดวกในการที่เราจะเข้าไปจัดการ หรือดูสถานะต่าง ๆ ของอุปกรณ์ ส่วนมากก็จะใช้วิธีการรีโมต เพื่อเข้าถึงอุปกรณ์โดยไม่ต้องไปเสียบสาย Console เอา ซึ่งจะเพิ่มความสะดวกและความรวดเร็วในการจัดการอุปกรณ์ของเราได้เป็นอย่างดี และโปรโตคอลที่ใช้ในการรีโมต ที่ใช้งานกันโดยส่วนมากก็คือโปรโตคอล Telnet นั่นเอง แต่ในวันนี้ผมจะขอแนะนำอีกหนึ่งโปรโตคอลที่มีการรักษาความปลอดภัยที่เหนือกว่าการใช้งาน Telnet นั่นก็คือโปรโตคอล Secure Shell (SSH) นั่นเองครับ
เมื่อทดลองโดยการใช้ Wireshark ดักจับ packet ในขณะที่ใช้งานโปรโตคอล Telnet
เมื่อทดลองโดยการใช้ Wireshark ดักจับ packet ในขณะที่ใช้งานโปรโตคอล SSH
เมื่อผู้ดูแลระบบต้องการที่จะเข้าสู่หน้า CLI ของอุปกรณ์เพื่อทำการตั้งค่า, ตรวจสอบการทำงาน หรือแก้ไขปัญหาต่าง ๆ ทาง Cisco ได้แนะนำว่าให้เชื่อมต่อโดยใช้ SSH ซึ่งมีการรักษาความปลอดภัยที่สูงกว่าการใช้งาน Telnet ตามเหตุผลที่ว่ามาข้างต้น ซึ่งระหว่างขั้นตอนในการตั้งค่า SSH บนอุปกรณ์ของเรานั้น จะต้องมีการสร้าง RSA keys เพื่อนำมาใช้ในการเข้ารหัสข้อมูลที่รับ-ส่งกันใน SSH session ของเรา โดยขนาดของ RSA Keys ที่ทาง Cisco แนะนำนั้นคือไม่ควรจะต่ำกว่า 1024 bits ซึ่งเมื่อเราทำการสร้าง RSA Keys แล้ว อุปกรณ์ของเราจะเปิดการทำงานของ SSH ให้โดยอัตโนมัติ (ถ้าอุปกรณ์ในรุ่นนั้น ๆ รองรับ) โดยตั้งแต่ Cisco IOS 12.1(1)T เป็นต้นมาจะรองรับการใช้งาน SSH version 1 และสำหรับ SSH version 2 จะรองรับใน Cisco IOS 12.3(4)T เป็นต้นมา และในการที่จะ enable SSH version 2 ได้นั้น เราจะต้องใช้ RSA Keys ที่มีขนาดอย่างน้อย 768 bits ขึ้นไป
SSH ทำงานผ่าน TCP หมายเลข Port 22 โดยเมื่อเราทำการตั้งค่าให้ใช้งาน SSH บนอุปกรณ์ของเราแล้ว อุปกรณ์ของเราจะทำงานเป็น SSH Server โดยทางฝั่งผู้ใช้จะต้องใช้งาน SSH Client Software อย่างเช่น Putty หรือ SecureCRT ในการสร้างการเชื่อมต่อมายังอุปกรณ์ ซึ่งขั้นตอนของการตั้งค่า SSH Server บนอุปกรณ์ Cisco IOS มีดังนี้ครับ
- ทำการตั้งค่า hostname
- ทำการตั้งค่า IP domain name
- ทำการตั้งค่า aaa new-model
- ทำการตั้งค่า username และ password
- ทำการลบ RSA Keys อันเก่าออกไป
- ทำการสร้าง RSA Keys อันใหม่ โดยค่าที่ Cisco แนะนำเป็นอย่างต่ำคือ 1024 bits
- (ทางเลือก)ทำการตั้งค่า SSH Version ซึ่งโดย default จะสามารถเชื่อมต่อได้ทั้ง version 1 และ version 2 แต่เราสามารถกำหนดว่าจะใช้งาน version ใด version หนึ่งได้ครับ
- (ทางเลือก)ทำการตั้งค่าระยะเวลา SSH timeout
- (ทางเลือก)ทำการกำหนดจำนวนครั้งในการพิสูจน์ตัวตน
- (ทางเลือก)ทำการป้องกันไม่ให้มีการใช้งาน telnet ในการ remote เข้ามาใช้งาน
- (ทางเลือก)ทำการกำหนดให้ใช้ SSH ในการ remote เข้ามาใช้งาน
แต่ก่อนที่เราจะเริ่มดูตัวอย่างการตั้งค่าในวันนี้ ผมก็ขอแนะนำเทคนิคเล็ก ๆ น้อย ๆ สำหรับการตรวจสอบการการตั้งค่า SSH บนอุปกรณ์เครือข่ายในปัจจุบันของเรากันก่อนนะครับ นั่นก็คือการใช้คำสั่ง "show ip ssh" ครับ ซึ่งสามารถบอกข้อมูลการตั้งค่า SSH บนอุปกรณ์ของเราได้หลายอย่างเลยทีเดียว ซึ่งเพื่อน ๆ สามารถทดลองใช้งานคำสั่งนี้กับอุปกรณ์ของเพื่อน ๆ เพื่อที่จะได้ทราบถึงการตั้งค่า SSH บนอุปกรณ์ของเพื่อน ๆ ได้ครับ
ถ้าบนอุปกรณ์ของเรายังไม่ได้ทำการสร้าง RSA Keys เมื่อเราใช้คำสั่ง "show ip ssh" จะปรากฎผลลัพธ์ ดังนี้ครับ
ตัวอย่าง
Running-config#show ip ssh
SSH Disabled - version 1.5
%Please create RSA keys (of atleast 768 bits size) to enable SSH v2.
Authentication timeout: 120 secs; Authentication retries: 3
SSH จะอยู่ในสถานะ Disabled อยู่ ถ้าเพื่อน ๆ เจอสถานะดังนี้ ก็ให้ไปทำการสร้าง RSA Keys ก่อนนะครับ ซึ่งถ้าต้องการที่จะใช้งาน SSH version 2 ก็จะต้องใช้ RSA Keys ที่มีขนาดอย่างน้อย 768 bits ขึ้นไปนะครับ และเมื่อเพื่อน ๆ ทำการสร้าง RSA Keys แล้ว อุปกรณ์ก็จะไปทำการ Enabled SSH ให้โดยอัตโนมัติครับ
ถ้าการตั้งค่าบนอุปกรณ์ของเรารองรับ SSH Connection ทั้ง version 1 และ version 2 เมื่อเราใช้คำสั่ง "show ip ssh" จะปรากฎผลลัพธ์ ดังนี้ครับ
ตัวอย่าง
Running-config#show ip ssh
SSH Enabled - version 1.99
Authentication timeout: 120 secs; Authentication retries: 3
จะพบว่า SSH อยู่ในสถานะ Enabled อยู่ โดยเป็นผลลัพธ์มาจากการสร้าง RSA Keys ซึ่งจะไปทำการ Enabled SSH ให้โดยอัตโนมัติ และจะเห็นว่า version ที่แสดงจะเป็น 1.99 ซึ่งหมายถึงรองรับการใช้งานทั้ง SSH Version 1 และ Version 2 ซึ่งเป็นค่าโดย default บนอุปกรณ์ของเราครับ
ถ้าการตั้งค่าบนอุปกรณ์ของเรารองรับ SSH Connection เฉพาะ version 1 เท่านั้น เมื่อเราใช้คำสั่ง "show ip ssh" จะปรากฎผลลัพธ์ ดังนี้ครับ
ตัวอย่าง
Running-config#show ip ssh
SSH Enabled - version 1.5
Authentication timeout: 120 secs; Authentication retries: 3
จะพบว่า SSH อยู่ในสถานะ Enabled อยู่ โดยเป็นผลลัพธ์มาจากการสร้าง RSA Keys ซึ่งจะไปทำการ Enabled SSH ให้โดยอัตโนมัติ และจะเห็นว่า version ที่แสดงจะเป็น 1.5 ซึ่งหมายถึงรองรับการใช้งานเฉพาะ SSH Version 1 ซึ่งมาจากการใช้คำสั่ง "ip ssh version 1" ใน global configuration mode ครับ
ถ้าการตั้งค่าบนอุปกรณ์ของเรารองรับ SSH Connection เฉพาะ version 2 เท่านั้น เมื่อเราใช้คำสั่ง "show ip ssh" จะปรากฎผลลัพธ์ ดังนี้ครับ
ตัวอย่าง
Running-config#show ip ssh
SSH Enabled - version 2.0
Authentication timeout: 120 secs; Authentication retries: 3
จะพบว่า SSH อยู่ในสถานะ Enabled อยู่ โดยเป็นผลลัพธ์มาจากการสร้าง RSA Keys ซึ่งจะไปทำการ Enabled SSH ให้โดยอัตโนมัติ และจะเห็นว่า version ที่แสดงจะเป็น 2.0 ซึ่งหมายถึงรองรับการใช้งานเฉพาะ SSH Version 2 ซึ่งมาจากการใช้คำสั่ง "ip ssh version 2" ใน global configuration mode ครับ
เอาล่ะครับ เรามาเริ่มดูตัวอย่างการตั้งค่ากันเลยดีกว่านะครับ ในขั้นตอนแรกนี้ก็จะเป็นการตั้งชื่อ hostname และ ip domain-name ของอุปกรณ์ครับ ซึ่งทั้งสองสิ่งนี้จะเป็นสิ่งที่จำเป็นสำหรับการสร้าง RSA Keys ครับ
ตัวอย่าง
Router(config)#hostname Running-config
Running-config(config)#ip domain-name blogspot.com
จากนั้นในขั้นตอนต่อมาจะเป็นการตั้งค่าที่เกี่ยวกับ AAA ครับ และสำหรับเพื่อน ๆ ที่ยังไม่ทราบว่า AAA คืออะไร ก็ขอให้ติดตามบทความ : ทำความรู้จักกับ AAA model กันก่อนนะครับ
ตัวอย่าง
Running-config(config)#aaa new-model
Running-config(config)#aaa authentication login default local-case
Running-config(config)#aaa authorization exec default local
Running-config(config)#username admin privilege 15 secret *****
จากตัวอย่างด้านบน เป็นการตั้งค่าการเปิดใช้งาน aaa model โดยกำหนดให้ใช้การพิสูจน์ตัวตน และการกำหนดสิทธิการใช้งาน โดยดูข้อมูลผู้ใช้จากบนตัวอุปกรณ์ (local) ครับ ซึ่งเราจะต้องทำการกำหนด username เข้าไปในตัวอุปกรณ์ ด้วยการใช้คำสั่ง username ตามตัวอย่างด้านบนครับ
จากนั้นจะเป็นการสร้าง RSA Keys เพื่อนำมาใช้สำหรับการเข้ารหัสข้อมูลที่รับ-ส่งกันใน SSH session ครับ แต่ก่อนที่จะทำการสร้าง เพื่อไม่ให้เกิดความซ้ำซ้อน ก็ขอแนะนำให้ใช้คำสั่ง "crypto key zeroize rsa" เพื่อลบค่า RSA Keys อันเก่า ๆ ออกไปก่อนครับ จากนั้นจึงค่อยทำการสร้าง RSA Keys อันใหม่ขึ้นมาครับผม
ตัวอย่าง
Running-config(config)#crypto key zeroize rsa
% All RSA keys will be removed.
% All router certs issued using these keys will also be removed.
Do you really want to remove these keys? [yes/no]: yes
*Mar 1 03:19:11.539: %SSH-5-DISABLED: SSH 2.0 has been disabled
จากตัวอย่างด้านบน เป็นการลบ RSA Keys ออกจากตัวอุปกรณ์ ซึงเมื่อทำการลบ RSA Keys ออกไปแล้ว จะเป็นการ Disbled SSH ไปด้วย โดยจะมี log แสดงขึ้นมาตามตัวอย่างด้านบน จากนั้นเราจึงค่อยทำการสร้าง RSA Keys อันใหม่ขึ้นมาทดแทนครับผม
ตัวอย่าง
Running-config(config)#crypto key generate rsa
The name for the keys will be: Running-config.blogspot.com
Choose the size of the key modulus in the range of 360 to 2048 for your
General Purpose Keys. Choosing a key modulus greater than 512 may take
a few minutes.
How many bits in the modulus [512]: 1024
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
*Mar 1 03:41:47.555: %SSH-5-ENABLED: SSH 1.99 has been enabled
จากตัวอย่างด้านบน เป็นการสร้าง RSA Keys ที่มีขนาด 1024 bits โดยเมื่อสร้าง RSA Keys แล้ว ตัวอุปกรณ์จะไปทำการ Enabled SSH ให้โดยอัตโนมัติครับ
จากนั้นจะเป็นการตั้งค่า SSH version ซึ่งโดย default อุปกรณ์จะอนุญาตให้เชื่อมต่อมาได้ทั้ง version 1 และ version 2 แต่เราสามารถกำหนดให้ใช้แต่ version ใด version หนึ่งได้ครับ และจากนั้นจะเป็นการปรับตั้งค่า Timeout, การกำหนดจำนวนครั้งที่อนุญาตในการพิสูจน์ตัวตน ซึ่งการตั้งค่าในส่วนนี้จริง ๆ แล้วก็ไม่จำเป็นที่จะต้องทำการตั้งค่าก็ได้ครับ เนื่องจากโดย default ก็จะมีการตั้งค่านี้มาแล้ว (Authentication timeout: 120 secs; Authentication retries: 3)
ตัวอย่าง
Running-config(config)#ip ssh version 2
Running-config(config)#ip ssh time-out 60
Running-config(config)#ip ssh authentication-retries 5
เพียงเท่านี้ก็จะสามารถใช้งาน SSH เพื่อเข้าสู่หน้า CLI ของอุปกรณ์ของเราได้แล้วครับ ซึ่งโดย default แล้ว โปรโตคอลที่อนุญาตให้ใช้งานผ่าน line vty จะมีดังนี้ครับ lat, pad, telnet, rlogin, lapb-ta, mop, v120, ssh ซึ่งถ้าเราต้องการที่จะอนุญาตให้เข้าใช้งานเฉพาะ SSH ก็สามารถทำได้ ด้วยการใช้คำสั่ง "transport input ssh" ใน line vty ครับ
ตัวอย่าง
Running-config(config)#line vty 0 4
Running-config(config-line)#transport input ssh
เพียงเท่านี้ ก็จะเป็นการกำหนดให้ใช้งานเฉพาะโปรโตคอล SSH เท่านั้น ในการเชื่อมต่อสู่ line vty ซึ่งในส่วนนี้ ถ้าหากต้องการอนุญาตเฉพาะ SSH กับ Telnet ก็สามารถกำหนดโปรโตคอลดังกล่าวไปด้วย เช่น transport input ssh telnet เป็นต้น
เราสามารถตรวจสอบการทำงานและการตั้งค่าของ ssh และ line vty ได้ด้วยการใช้คำสั่ง ดังนี้ครับ
- show ssh
- show ip ssh
- show crypto key mypubkey rsa
- show line vty 0
ตัวอย่าง
Running-config#show ssh
Connection Version Mode Encryption Hmac State Username
0 2.0 IN aes256-cbc hmac-sha1 Session started admin
0 2.0 OUT aes256-cbc hmac-sha1 Session started admin
%No SSHv1 server connections running.
Running-config#show ip ssh
SSH Enabled - version 2.0
Authentication timeout: 60 secs; Authentication retries: 5
Running-config#show crypto key mypubkey rsa
% Key pair was generated at: 03:41:47 UTC Mar 1 2002
Key name: Running-config.blogspot.com
Usage: General Purpose Key
Key is not exportable.
Key Data:
30819F30 0D06092A 864886F7 0D010101 05000381 8D003081 89028181 00C8C948
BF90A643 8D04ED89 311EBF5D 21AC4FA5 98ECDFD5 9436BEEB 6EB3977B BF585E9D
7C123BD1 B30FD29D 297D35F5 CFC03525 63CDF4C8 8DB92D93 17437870 385E83F9
1F16FC48 983A2221 1D4A9B55 3C1A31DB 567A4C14 025D721C F9C8D418 B6DB4F90
E79F04EE F5C5B01E C6EEE6E0 F9B7A293 B8CF300C 48B870F1 10C12114 11020301 0001
% Key pair was generated at: 03:41:48 UTC Mar 1 2002
Key name: Running-config.blogspot.com.server
Usage: Encryption Key
Key is not exportable.
Key Data:
307C300D 06092A86 4886F70D 01010105 00036B00 30680261 00CB3891 BB086928
1F875B8F 62C7A149 0669B90B 795C36FC 2DB6B29B 01CBD7F4 856A24F2 7B56AC5A
B193ADD0 9FF52063 74243CE4 73017006 CDF79DCA 9746E421 D8B0E75B 3A28DF34
F7FFE7EB 03A76FEB 7CF193FC 74599851 A9596405 15FBEF56 6F020301 0001
Running-config#show line vty 0
Tty Typ Tx/Rx A Modem Roty AccO AccI Uses Noise Overruns Int
* 98 VTY - - - - - 7 0 0/0 -
Line 98, Location: "", Type: "vt100"
Length: 49 lines, Width: 132 columns
Baud rate (TX/RX) is 9600/9600
Status: PSI Enabled, Ready, Active, No Exit Banner, Automore On
Notify Process
Capabilities: none
Modem state: Ready
Group codes: 0
Special Chars: Escape Hold Stop Start Disconnect Activation
^^x none - - none
Timeouts: Idle EXEC Idle Session Modem Answer Session Dispatch
00:10:00 never none not set
Idle Session Disconnect Warning
never
Login-sequence User Response
00:00:30
Autoselect Initial Wait
not set
Modem type is unknown.
Session limit is not set.
Time since activation: 00:17:22
Editing is enabled.
History is enabled, history size is 20.
DNS resolution in show commands is enabled
Full user help is disabled
Allowed input transports are ssh.
Allowed output transports are lat pad telnet rlogin lapb-ta mop v120 ssh.
Preferred transport is lat.
No output characters are padded
No special data dispatching characters
โดยเพื่อน ๆ สามารถทำการสร้าง SSH Session จากอุปกรณ์ Cisco ตัวอื่น ๆ (ที่รองรับ SSH) มายัง SSH Server ที่ได้สร้างไว้นี้ ด้วยการใช้คำสั่ง "ssh -l <username> -v <1|2> <ip address>" ใน Privilage Mode ครับ
ตัวอย่าง
Router#ssh -l admin -v 2 11.0.0.1
Password:
Running-config#
Saturday, February 12, 2011
การทำ Inter VLAN โดยการใช้ Cisco IOS Router
Configure Inter Vlan on Cisco IOS Router
สวัสดีครับเพื่อน ๆ ในวันนี้ผมจะมาแนะนำการตั้งค่า Inter VLAN โดยการใช้ Cisco IOS Router กันนะครับ หลังจากที่ก่อนหน้านี้ได้แนะนำให้เพื่อน ๆ รู้จักกับการทำ Inter VLAN ด้วยการใช้ Switch Layer 3 กันไปแล้วในบทความ การทำ Inter VLAN Routing ด้วย Switch Layer 3 นะครับ ซึ่งหลักการในการทำงานก็จะเหมือนกัน โดยจะต่างกันเพียงแค่อุปกรณ์ที่จะนำมาใช้ในการหาเส้นทางระหว่าง VLAN เป็น Router แทนที่ Switch Layer 3 นะครับ
สำหรับเพื่อน ๆ ที่ยังไม่รู้จักกับ VLAN หรือ Broadcast Domain หรือ Collision Domain นั้นก็ขอให้กลับไปอ่านบทความ การทำ Inter VLAN Routing ด้วย Switch Layer 3 กันก่อนนะครับ เพื่อจะได้เข้าใจในวิธีการทำงานมากขึ้นครับ
การแบ่ง VLAN หรือ Virtual Lan นั้นจะเป็นการแบ่ง Broadcast Domain ของเครือข่ายออกจากกัน จะทำให้โฮสต์จะสามารถติดต่อสื่อสารกับโฮสต์อื่น ๆ ใน VLAN เดียวกันได้เท่านั้น แต่การที่จะทำให้โฮสต์สามารถติดต่อสื่อสารกับโฮสต์ใน VLAN อื่น ๆ ได้นั้น ก็จะต้องใช้วิธีการที่เรียกว่า Inter VLAN Routing ครับ ซึ่งก็คือการใช้อุปกรณ์ Layer 3 มาช่วยในการทำ Routing ระหว่าง VLAN ให้นั่นเองครับ
และก่อนที่จะเข้าสู่ขั้นตอนในการตั้งค่า ผมก็จะขอแนะนำให้เพื่อน ๆ รู้จักกับ รูปแบบของพอร์ตที่มีการตั้งค่าเพื่อใช้งานกันก่อนนะครับ โดยจะมีอยู่ 2 รูปแบบ คือ Access Port และ Trunk Port ครับ
- Access Port คือพอร์ตที่สามารถรับ-ส่งข้อมูล ได้เพียง VLAN เดียว ซึ่งโดยปกติจะใช้กับพอร์ตที่เชื่อมต่อไปยังโฮสต์หรือเครื่องของผู้ใช้ เพราะเครื่องของผู้ใช้แต่ละเครื่องส่วนมากก็จะถูกกำหนดให้อยู่ใน VLAN ใด VLAN หนึ่งเพียง VLAN เดียวเท่านั้น
- Trunk Port คือพอร์ตที่สามารถรับ-ส่งข้อมูล ได้หลาย VLAN โดยปกติจะใช้กับพอร์ตที่เชื่อมต่อระหว่าง Switch หรืออุปกรณ์เครือข่ายด้วยกัน เพื่อที่จะสามารถส่งข้อมูลในหลาย ๆ VLAN ไปยังอุปกรณ์ตัวอื่น ๆ ได้ โดยใช้เพียงอินเทอร์เฟสเดียวเท่านั้นได้
เอาล่ะครับเรามาเริ่มดูตัวอย่างการตั้งค่ากันเลยดีกว่านะครับ สำหรับขั้นตอนการตั้งค่า VLAN และทำ Inter VLAN ด้วย Cisco IOS Router ก็มีดังนี้
- ทำการสร้าง VLAN ลงบนสวิตซ์ทุกตัวที่ VLAN นั้น ๆ ใช้เป็นเส้นทางในการส่งข้อมูล
- ทำการกำหนดพอร์ตบนสวิตซ์ที่เชื่อมต่อไปยังเครื่องผู้ใช้ให้เป็นสมาชิกของ VLAN ที่ต้องการ
- ทำการกำหนดพอร์ตบนสวิตซ์ที่เชื่อมต่อไปยังสวิตซ์หรืออุปกรณ์เครือข่ายตัวอื่น ๆ ให้เป็น Trunk port
- ทำการตั้งค่าอินเทอร์เฟสบนเราเตอร์ให้ encapsulation เป็น dot1q เพื่อให้อินเทอร์เฟสนั้นเป็น Trunk port
- ทำการกำหนด IP Address ให้กับแต่ละอินเทอร์เฟสย่อย (Subinterface) เพื่อใช้เป็น Gateway ของแต่ละ VLAN
ในขั้นตอนแรกนี้ ก็เหมือนกับการตั้งค่า InterVLAN บน Switch Layer 3 นะครับ คือการสร้าง VLAN ลงบนสวิตซ์ทุก ๆ ตัวที่ใช้งาน VLAN นั้น ๆ ครับ ซึ่งในตัวอย่างนี้จะมีการใช้งาน VLAN อยู่ 2 VLAN คือ VLAN 10 และ VLAN 20 ครับ ก็ให้ไปทำการสร้างทั้งสอง VLAN นี้ลงบนสวิตซ์ทุก ๆ ตัวครับ และเมื่อทำการสร้าง VLAN ให้กับสวิตซ์แต่ละตัวเสร็จแล้วเราก็สามารถตรวจสอบได้โดยการใช้คำสั่ง "show vlan" ครับ
ตัวอย่าง
Switch(config)#vlan 10
Switch(config-vlan)#name Room-01
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#name Room-02
Switch(config-vlan)#exit
Switch(config)#do show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/10, Fa0/11, Fa0/12
Fa0/13, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/20
Fa0/21, Fa0/22, Fa0/23, Fa0/24
Gig1/1, Gig1/2
10 Room-01 active
20 Room-02 active
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
เมื่อทำการสร้าง VLAN แล้ว ในขั้นตอนต่อมาก็จะเป็นการกำหนดค่าให้อินเทอร์เฟสที่ใช้ในการเชื่อมต่อไปยังเครื่องของผู้ใช้นั้นเป็นสมาชิกของ VLAN ที่กำหนดนะครับ
ตัวอย่าง
Switch(config)#int fa0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Switch(config)#int fa0/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20
Switch(config-if)#exit
จากตัวอย่างด้านบน เป็นการตั้งค่าให้อินเทอร์เฟส FastEthernet0/1 เป็นสมาชิกของ VLAN 10 และอินเทอร์เฟส FastEternet0/2 เป็นสมาชิกของ VLAN 20 ครับ โดยการตั้งค่านี้จะต้องทำการกำหนดค่าให้กับสวิตซ์ทุกตัวและทุก ๆ อินเทอร์เฟสที่เชื่อมต่อไปยังเครื่องของผู้ใช้นะครับ
จากนั้นก็จะเป็นการกำหนดให้อินเทอร์เฟสที่เชื่อมต่อระหว่างอุปกรณ์เครือข่ายด้วยกัน(รวมถึงอินเทอร์เฟสที่เชื่อมต่อไปยังเราเตอร์ด้วยนะครับ) ให้ทำงานในโหมด Trunk นะครับ เพื่อที่จะได้สามารถส่งต่อข้อมูลของหลาย ๆ VLAN ไปในอินเทอร์เฟสเพียงอินเทอร์เฟสเดียวได้ครับ และเราสามารถตรวจสอบการตั้งค่าได้โดยการใช้คำสั่ง "show interface trunk" ครับ
ตัวอย่าง
Switch(config)#interface gigabitEthernet 1/1
Switch(config-if)#switchport mode trunk
Switch(config-if)#exit
Switch(config)#do show interface trunk
Port Mode Encapsulation Status Native vlan
Gig1/1 on 802.1q trunking 1
Port Vlans allowed on trunk
Gig1/1 1-1005
Port Vlans allowed and active in management domain
Gig1/1 1,10,20
Port Vlans in spanning tree forwarding state and not pruned
Gig1/1 1,10,20
จากตัวอย่างด้านบน เป็นการตั้งค่าให้อินเทอร์เฟส GigabitEthernet 1/1 ทำงานในโหมด Trunk นะครับ ซึ่งเราจะต้องทำการตั้งค่าบนอุปกรณ์ทั้งสองฝั่งของแต่ละ Link ให้ทำงานในโหมด Trunk นะครับ จึงจะสามารถใช้งานได้ และก็จะต้องทำการตั้งค่าบนอุปกรณ์ทุก ๆ ตัวนะครับ
เมื่อทำการตั้งค่าอินเทอร์เฟส Trunk บนสวิตซ์ทุก ๆ ตัวเรียบร้อยแล้ว ในขั้นต่อมาจะเป็นการตั้งค่าอินเทอร์เฟส Trunk บนเราเตอร์ เพื่อให้เราเตอร์สามารถคุยกับสวิตซ์ที่ encapsulation ข้อมูลมาในรูปแบบของโปรโตคอล 802.1q ได้ครับ โดยเราจะต้องทำการตั้งค่า Subinterface บนเราเตอร์ก่อนครับ(โดยการใส่หมายเลข subinterface ไว้ข้างหลัง physical interface ครับ เช่น Fa0/0.1 (โดยตัวเลขนี้เป็นลำดับเลขอะไรก็ได้ ไม่จำเป็นที่จะต้องตรงกับ VLAN ที่เราจะตั้งค่า แต่เพื่อความสะดวกส่วนมากก็จะทำการตั้งค่าให้เลขนี้ตรงกับ VLAN ที่เราจะใช้ครับ)) จากนั้นก็ให้ทำการกำหนดให้แต่ละ Subinterface เป็นสมาชิกของ VLAN ที่ต้องการ โดยการใช้คำสั่ง "encapsulation dot1Q <vlan number>" ครับ
ตัวอย่าง
Router(config)#interface FastEthernet 0/0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface FastEthernet 0/0.10
Router(config-subif)#encapsulation dot1Q 10
Router(config-subif)#exit
Router(config)#interface FastEthernet 0/0.200
Router(config-subif)#encapsulation dot1Q 20
Router(config-subif)#exit
จากตัวอย่างด้านบน เป็นการสร้าง Subinterface บนอินเทอร์เฟส FastEthernet 0/0 โดยให้ Subinterface Fa0/0.10 เป็นสมาชิกของ VLAN 10 และ Subinterface Fa0/0.200 เป็นสมาชิกของ VLAN 20 ครับ
เมื่อทำการสร้าง Subinterface บนเราเตอร์เรียบร้อยแล้ว ในขั้นตอนต่อมาเราก็จะทำการกำหนดหมายเลข IP Address ให้กับแต่ละ Subinterface กันครับ เพื่อที่จะได้นำมาใช้เป็น Gateway IP Address ของแต่ละ VLAN ครับ และเมื่อทำการตั้งค่าเสร็จแล้วเราสามารถใช้คำสั่ง "show ip interface brief" เพื่อตรวจสอบได้ครับ
ตัวอย่าง
Router(config)#interface FastEthernet 0/0.10
Router(config-subif)#ip address 10.10.10.1 255.255.255.0
Router(config-subif)#exit
Router(config)#interface FastEthernet 0/0.200
Router(config-subif)#ip address 10.10.20.1 255.255.255.0
Router(config-subif)#exit
Router(config)#exi
Router#show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES unset up up
FastEthernet0/0.10 10.10.10.1 YES manual up up
FastEthernet0/0.200 10.10.20.1 YES manual up up
FastEthernet0/1 unassigned YES unset administratively down down
Vlan1 unassigned YES unset administratively down down
เพียงเท่านี้ก็เสร็จสิ้นการตั้งค่า Inter VLAN บน Cisco IOS Router แล้วครับ ต่อจากนี้ก็ให้ไปทำการตั้งค่าบนเครื่องของผู้ใช้ในแต่ละ VLAN ให้ชี้ gateway มาที่ IP Address ที่กำหนดนี้ก็สามารถที่จะติดต่อสื่อสารกันระหว่างเครื่องที่อยู่ต่าง VLAN กันได้แล้ว ไม่ยากเลยใช่มั้ยครับ
Monday, January 3, 2011
การตั้งค่า DHCP Server บนอุปกรณ์ Cisco IOS
Configuration DHCP Server on Cisco IOS Devices
สวัสดีครับเพื่อน ๆ ในวันนี้ผมก็มีเทคนิคการตั้งค่าอุปกรณ์ Cisco มาแนะนำกันอีกเช่นเคยนะครับ โดยหัวข้อที่จะมาแนะนำเพื่อน ๆ ในวันนี้ก็คือ การตั้งค่า DHCP Server บนอุปกรณ์ Cisco IOS ของเรานะครับ สำหรับเพื่อน ๆ ที่ยังไม่ทราบว่า DHCP Server คืออะไรนะครับ DHCP ย่อมาจาก Dynamic Host Configuration Protocol เป็นโปรโตคอลที่ใช้สำหรับแจก IP Address และรายละเอียดอื่น ๆ เช่น DNS Server หรือ WINS Server ให้แก่เครื่องภายในเครือข่ายโดยอัตโนมัติครับ
การทำงานของโปรโตคอล DHCP นั้นจะเริ่มต้นเมื่อเครื่องผู้ใช้ที่ทำการตั้งค่าให้ใช้งาน DHCP นั้นมีการเชื่อมต่อสู่ระบบเครือข่าย โดยฝั่งเครื่องผู้ใช้จะทำการ Broadcast มาร้องขอ IP Address จาก Server โดยภายใน packet ที่ส่งมานั้นจะมีการส่ง mac address ของเครืองผู้ใช้มาด้วย และเมื่อ packet นั้นเดินทางมาถึง DHCP Server ทางฝั่ง Server ก็จะทำการส่ง IP Address กลับไปให้ยังเครืองผู้ใช้ และจะทำการบันทึกเอาไว้ว่าได้ทำการแจก IP Address อะไรไปยังเครื่องที่มี Mac Address ใด
การตั้งค่า DHCP Server บนอุปกรณ์ Cisco IOS นี้ก็เหมาะกับเครือข่ายที่มีขนาดไม่ใหญ่มากนักถ้าใช้งานในเครือข่ายขนาดใหญ่ที่มีเครื่องผู้ใช้จำนวนมากก็ควรที่จะใช้ Server ที่แยกต่างหากไปจะดีและเหมาะสมกว่านะครับ สำหรับการตั้งค่า DHCP Server บนอุปกรณ์ Cisco IOS นี้ สามารถทำได้ตั้งแต่ Cisco IOS Version 12.0(1)T เป็นต้นมาครับ
ขั้นตอนในการตั้งค่า DHCP Server บนอุปกรณ์ Cisco IOS มีดังนี้
- ทำการสร้าง dhcp pool ขึ้นมาและกำหนดรายละเอียดต่าง ๆ ดังนี้
- กำหนด subnet ที่จะทำการแจก ip address ให้กับเครื่องผู้ใช้
- หมายเลข ip address ที่จะใช้งานเป็น gateway ให้กับเครื่องผู้ใช้
- หมายเลข ip address ที่จะใช้งานอื่น ๆ เช่น DNS Server
- กำหนดช่วงของ ip address ที่ยกเว้นไม่ให้ทำการแจก ip address
ในขั้นตอนแรก เป็นการสร้าง dhcp pool ขึ้นมา โดยใช้คำสั่ง "ip dhcp pool <ชื่อ pool>" และทำการกำหนดรายละเอียดของ ip address ต่าง ๆ ที่จะทำการแจกให้กับเครื่องของผู้ใช้
ตัวอย่าง
Core-Switch(config)#ip dhcp pool inside-network
Core-Switch(dhcp-config)#network 172.16.0.0 255.255.255.0
Core-Switch(dhcp-config)#default-router 172.16.0.254
Core-Switch(dhcp-config)#dns-server 203.144.207.29
Core-Switch(dhcp-config)#exit
จากด้านบนเป็นการสร้าง dhcp pool ที่มีชื่อว่า "inside-network" โดยจะทำการแจก ip address ให้กับเครื่องผู้ใช้ใน subnet 172.16.0.0/24 และจะกำหนด default-gateway เป็น 172.16.0.254 และ dns server เป็น 203.144.207.29
ในขั้นตอนต่อมา เป็นการกำหนดช่วงของหมายเลข ip address ที่ยกเว้นเอาไว้ว่าไม่ต้องทำการแจกไปยังเครื่องของผู้ใช้ โดยเราอาจจะเว้นไว้ใช้สำหรับเครื่อง Server หรือไว้สำหรับเครื่องผู้ใช้บางเครื่องที่ไม่ต้องการให้รับ DHCP เป็นต้น
ตัวอย่าง
Core-Switch(config)#ip dhcp excluded-address 172.16.0.200 172.16.0.254
จากตัวอย่างด้านบน เป็นการตั้งค่าไม่ให้อุปกรณ์ทำการแจก ip address ในช่วง 172.16.0.200 ถึง 172.16.0.254 ให้แก่เครื่องของผู้ใช้
เอาล่ะครับ เพียงเท่านี้ก็เสร็จแล้วครับ จะเห็นว่ามีเพียงการตั้งค่าไม่กี่ขั้นตอนเท่านั้นก็สามารถสร้าง DHCP Server บนอุปกรณ์ Cisco IOS ของเราได้แล้วครับ สำหรับใครที่อยากจะทดสอบการตั้งค่าดู ก็สามารถ download LAB(Packet Tracer) ในเรื่องนี้ได้ตาม Link ด้านล่างนี้เลยครับ
Packet Tracer Lab : DHCP Server Lab
Saturday, December 25, 2010
การตั้งค่าเพื่อใช้งาน ADSL บน Cisco IOS Router
configuration pppoe on cisco ios router
สวัสดีครับเพื่อน ๆ ในวันนี้ ผมจะมาแนะนำวิธีการตั้งค่าเพื่อใช้งาน ADSL บนเราเตอร์ Cisco IOS กันครับ ซึ่งเหมาะสำหรับเพื่อน ๆ ที่มีการใช้งานเราเตอร์ที่เชื่อมต่อกับเครือข่าย WAN โดยใช้ ADSL เป็นอย่างยิ่งครับ โดยการตั้งค่าเพื่อใช้งาน ADSL ที่ใช้งานในบ้านเรา นั่นก็คือการใช้การตั้งค่าแบบ PPPoE (Point-to-Point Protocol over Ethernet) นั่นเองครับ
ในตัวอย่างการตั้งค่าในวันนี้ ผมจะใช้ Cisco IOS Router ในรุ่น Cisco 857 นะครับ ซึ่งเป็นเราเตอร์ที่มีพอร์ตสำหรับเสียบสายโทรศัพท์มาอยู่แล้วนะครับ แต่ถ้าเพื่อน ๆ ใช้งานเราเตอร์ในรุ่นอื่น ๆ ที่ไม่มีพอร์ตสำหรับเสียบสายโทรศัพท์มาให้ ก็จะต้องหา module เช่น wic-adsl มาใส่นะครับ
สำหรับขั้นตอนการตั้งค่า ADSL บนเราเตอร์ Cisco IOS ก็มีดังนี้ครับ
- ทำการตั้งค่าอินเทอร์เฟสที่ใช้ในการเชื่อมต่อสู่เครือข่ายภายใน
- ทำการตั้งค่าอินเทอร์เฟส atm ที่ใช้สำหรับเชื่อมต่อไปยัง wan
- ทำการตั้งค่าอินเทอร์เฟส dialer ที่ใช้สำหรับเก็บค่าโปรไฟล์ต่าง ๆ สำหรับติดต่อกับ ISP
- ทำการตั้งค่า default route
- ทำการตั้งค่า NAT
- ปรับแต่งค่า mtu ต่าง ๆ
เอาล่ะครับ เรามาเริ่มดูตัวอย่างการตั้งค่ากันเลยดีกว่าครับ ในขั้นแรกก็จะเป็นการตั้งค่าอินเทอร์เฟสที่ใช้สำหรับเชื่อมต่อสู่เครือข่ายภายในของเรา ซึ่งในตัวอย่างนี้ผมจะใช้ Vlan 1 นะครับ แต่เพื่อน ๆ อาจจะใช้อินเทอร์เฟสอื่น ๆ เช่น FastEthernet หรือ BVI ก็ได้ครับ
ตัวอย่าง
Router>en
Router#conf t
Router(config)#int vlan 1
Router(config-if)#ip add 192.168.200.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
จากตัวอย่างด้านบน เป็นการตั้งค่า interface vlan 1 ให้ใช้หมายเลข ip address เป็น 192.168.200.1/24 ซึ่งเครื่องผู้ใช้ภายในเครือข่ายจะต้องทำการตั้งค่า default gateway มาที่หมายเลข ip address นี้นะครับ จากนั้นในขั้นตอนต่อมาก็จะทำการตั้งค่าอินเทอร์เฟส atm กันครับ
ตัวอย่าง
Router(config)#int atm 0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#int atm 0.1 point-to-point
Router(config-subif)#pvc 0/100
Router(config-if-atm-vc)#pppoe-client dial-pool-number 1
Router(config-if-atm-vc)#no shut
Router(config-subif)#exit
จากตัวอย่างด้านบน ผมทำการตั้งค่าอินเทอร์เฟส atm 0 โดยทำการสร้าง subinterface ขึ้นมาโดยกำหนดให้ใช้โปรโตคอล point-to-point ในการติดต่อสื่อสาร จากนั้นก็ทำการตั้งค่า PVC ซึ่งในส่วนนี้แต่ละ ISP ก็จะใช้งานไม่เหมือนกันนะครับ เช่น ของ 3bb จะใช้ 0/33 ของ true จะใช้ 0/100 เป็นต้นครับ (ดูค่า PVC ของ ISP ต่าง ๆ ได้ที่นี่ครับ) จากนั้นก็ทำการกำหนดว่าจะใช้โปรไฟล์ dial-pool-number 1 ซึ่งจะทำการสร้างในขั้นตอนต่อไป
เมื่อทำการตั้งค่าตามตัวอย่างด้านบนเรียบร้อยแล้ว ก็จะมาทำการสร้างโปรไฟล์ที่ใช้สำหรับเก็บข้อมูลที่จำเป็นในการติดต่อสื่อสารกับ ISP กันครับ
ตัวอย่าง
Router(config)#int dialer 1
Router(config-if)#ip address negotiated
Router(config-if)#encapsulation ppp
Router(config-if)#dialer pool 1
Router(config-if)#ppp authentication chap pap callin
Router(config-if)#ppp chap hostname <username>
Router(config-if)#ppp chap password <*****>
Router(config-if)#ppp pap sent-username <username> password 0 <*****>
Router(config-if)#exit
จากตัวอย่างด้านบน เป็นการสร้างอินเทอร์เฟส dialer 1 โดยกำหนดให้ใช้ ip address ที่ได้รับจาก ISP โดยใช้โปรโตคอล ppp ในการติดต่อสื่อสาร และทำการกำหนดให้อินเทอร์เฟสนี้เป็น dial pool หมายเลข 1 (ต้องตรงกับค่า dial-pool-number ที่กำหนดไว้ในขั้นตอนที่แล้ว) จากนั้นก็เป็นการเลือกวิธีการพิสูจน์ตัวตนรวมถึง username และ password ที่ใช้งาน ซึ่งในตัวอย่างนี้ผมจะใช้ทั้งแบบ chap และ pap เลยครับ
เมื่อทำการตั้งค่าตามขั้นตอนด้านบนเรียบร้อยแล้ว จากนั้นเราก็มาทำการตั้งค่า default route บนเราเตอร์กันครับ เพื่อให้เครื่องผู้ใช้ภายในสามารถติดต่อไปยังทุก ๆ ปลายทางได้ครับ โดยให้ทำ routing ให้ส่งข้อมูลไปยังทุก ๆ ปลายทางไปทางอินเทอร์เฟส dialer 1 ครับ
ตัวอย่าง
Router(config)#ip route 0.0.0.0 0.0.0.0 dialer 1
เมื่อทำการตั้งค่า default route เสร็จแล้ว เราก็จะต้องมาทำการตั้งค่า NAT กันครับ ซึ่งถ้าใครยังไม่รู้จักว่า NAT คืออะไร ก็เชิญติดตามบทความ : การตั้งค่า NAT(Network Address Translation) บน Cisco IOS ได้ครับ
ตัวอย่าง
Router(config)#access-list 1 permit 192.168.200.0 0.0.0.255
Router(config)#ip nat inside source list 1 interface dialer 1 overload
Router(config)#int vlan 1
Router(config-if)#ip nat inside
Router(config-if)#ip tcp adjust-mss 1452
Router(config-if)#exit
Router(config)#int dialer 1
Router(config-if)#ip nat outside
Router(config-if)#ip mtu 1492
Router(config-if)#exit
ในตัวอย่างด้านบนนี้เป็นการตั้งค่า PAT(port address translation) นะครับ โดยเราจะต้องทำการกำหนดว่าอินเทอร์เฟสใดเป็น inside และอินเทอร์เฟสใดเป็น outside ด้วยนะครับ และผมยังทำการตั้งค่า mtu และ mss ในคราวเดียวกันไปด้วยเลยครับ ซึ่งที่เราจะต้องทำการตั้งค่า mtu และ mss ต่าง ๆ ก็เนื่องจาก ถ้าเราทำการส่ง packet ที่มีขนาดมากกว่า 1492 bytes ก็อาจจะถูก drop บนอุปกรณ์บางตัวบนเครือข่าย wan ได้ ซึ่งเป็นสาเหตุที่ทำให้ไม่สามารถใช้งานในบาง website ได้นั่นเองครับ
เพียงเท่านี้ก็เสร็จเรียบร้อยแล้วครับ เพื่อน ๆ ก็สามารถใช้งาน ADSL ได้ทันที และสามารถตรวจสอบการทำงานได้โดยการใช้คำสั่ง “show dsl interface atm 0” ครับ
ตัวอย่าง
Router#sh dsl int atm 0
ATM0
Alcatel 20190 chipset information
ATU-R (DS) ATU-C (US)
Modem Status: Showtime (DMTDSL_SHOWTIME)
DSL Mode: ITU G.992.1 (G.DMT) Annex A
ITU STD NUM: 0x01 0x1
Vendor ID: 'STMI' 'GSPN'
Vendor Specific: 0x0000 0x0008
Vendor Country: 0x0F 0xFF
Chip ID: C196 (0)
DFE BOM: DFE3.0 Annex A (1)
Capacity Used: 27% 77%
Noise Margin: 31.5 dB 19.0 dB
Output Power: 14.5 dBm 12.5 dBm
Attenuation: 13.0 dB 6.5 dB
Defect Status: None None
Last Fail Code: None
Watchdog Counter: 0xF6
Watchdog Resets: 0
Selftest Result: 0x00
Subfunction: 0x00
Interrupts: 8258 (0 spurious)
PHY Access Err: 0
Activations: 1
LED Status: ON
LED On Time: 100
LED Off Time: 100
Init FW: init_AMR-3.0.014_no_bist.bin
Operation FW: AMR-3.0.014.bin
FW Source: embedded
FW Version: 3.0.14
Interleave Fast Interleave Fast
Speed (kbps): 2560 0 512 0
Cells: 556485 0 1510685 0
Reed-Solomon EC: 0 0 0 0
CRC Errors: 0 0 1 0
Header Errors: 0 0 0 0
Total BER: 0E-0 0E-0
Leakage Average BER: 0E-0 0E-0
ATU-R (DS) ATU-C (US)
Bitswap: enabled enabled
Bitswap success: 0 0
Bitswap failure: 0 0
LOM Monitoring : Enabled
LOM watch configured for 200 times
LOM appeared continuously for 0 times
DMT Bits Per Bin
000: 0 0 0 0 0 0 0 2 3 5 6 7 7 8 8 8
010: 8 8 8 8 8 8 8 7 7 7 6 6 6 5 4 3
020: 0 0 0 0 0 6 7 7 7 7 7 7 7 7 7 7
030: 8 7 8 7 8 8 7 8 8 7 7 8 7 7 7 8
040: 0 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
050: 7 7 7 7 7 7 7 7 7 7 7 7 7 7 2 7
060: 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
070: 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6
080: 6 6 6 6 6 6 6 6 6 6 6 7 6 7 7 6
090: 6 6 6 6 7 7 7 0 0 0 0 0 0 0 0 0
0A0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0B0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0C0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0D0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0E0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0F0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
DSL: Training log buffer capability is not enabled
Thursday, November 25, 2010
การตั้งค่า NAT(Network Address Translation) บน Cisco IOS
Basic NAT Configuraition on Cisco IOS
การติดต่อสื่อสารระหว่างเครื่องคอมพิวเตอร์นั้น จำเป็นที่จะต้องมี IP Address(IP ย่อมาจาก Internet Protocol) ซึ่งเป็นหมายเลขขนาด 32 bit ที่ไม่ซ้ำกัน สำหรับใช้ในการระบุถึงสถานที่ตั้งของเครื่องคอมพิวเตอร์ภายในระบบเครือข่าย เพื่อที่จะสามารถทำการส่งข้อมูลไปยังเครื่องคอมพิวเตอร์แต่ละเครื่องได้ เมื่อครั้งตอนทำการออกแบบ IP Address ใน Version 4 หรือที่เรียกว่า IPv4 นั้น ผู้ออกแบบคิดว่าปริมาณของหมายเลข IP Address ของ IPv4 นั้นมีจำนวนมากเกินความต้องการ เนื่องจากในทางทฤษฎีแล้ว IPv4 สามารถที่จำนวนหมายเลข IP Address ที่ไม่ซ้ำกันได้ถึง 4,294,967,296 หมายเลข (แต่สามารถใช้งานได้ประมาณ 3.2 ถึง 3.3 พันล้านหมายเลข เนื่องจากบาง IP Address ได้ถูกสำรองไว้ใช้งานอื่น ๆ เช่น multicasting, broadcast เป็นต้น) แต่เนื่องจากในปัจจุบันมีการใช้งานอินเทอร์เน็ตอย่างแพ่รหลายมากขึ้น จนเกินความคาดหมายของผู้ออกแบบ IPv4 ทำให้ IP Address ที่สามารถนำมาใช้งานได้ในปัจจุบันกำลังจะหมดลงไป ในการใช้งาน IPv4 ในปัจจุบันนี้จึงต้องมีการใช้งานอย่างประหยัดมากขึ้น และการทำ NAT ก็เป็นวิธีการหนึ่งที่จะช่วยในการประหยัดการใช้งาน IP Address ได้
องค์กร IANA(Internet Assigned Nubbers Authority) ได้ทำการกำหนดช่วงของ IP Address สำหรับการใช้งานในเครือข่ายภายในเอาไว้หรือที่เรียกว่า Private IP Address ซึ่งเป็น IP Address แบบ Unregistered โดยจะไม่สามารถใช้งาน IP Address เหล่านี้ในเครือข่ายสาธารณะหรือเครือข่ายอินเทอร์เน็ตได้ แต่สร้างขึ้นมาเพื่อใช้งานสำหรับเครือข่ายภายในองค์กรเท่านั้น ซึ่งในแต่ละองค์กรก็อาจจที่จะใช้ IP Address ในช่วงเดียวกันหรือซ้ำกันก็ได้ ยกตัวอย่างเช่น IP Address ในชุด 192.168.x.x ที่มีการใช้งานอย่าแพร่หลาย แต่เมื่อมีเครื่องในเครือข่ายภายในแต่ละองค์กรต้องการที่จะติดต่อกับเครือข่ายอินเทอร์เน็ต ก็จะถูกทำการ NAT IP Address แบบ Private IP Address เหล่านี้ไปเป็น IP Address แบบ Public IP Address หรือ IP Address แบบ Registered ได้
IP Address ที่ถูกกำหนดให้ใช้งานเป็น Private IP Address มีดังนี้
- ช่วงที่ 1 สำหรับ class A : 10.0.0.0 ถึง 10.255.255.255
- ช่วงที่ 2 สำหรับ class B : 172.16.0.0 ถึง 172.31.255.255
- ช่วงที่ 3 สำหรับ class C : 192.168.0.0 ถึง 192.168.255.255
NAT(Network Address Translation) ถูกออกแบบมาเพื่อช่วยในการประหยัดการใช้งาน IP Address โดยทำให้สามารถใช้งานอุปกรณ์เพียงอุปกรณ์เดียว เช่น เราเตอร์ ในการเป็นตัวแทนในการติดต่อสื่อสารระหว่างเครือข่ายภายในกับเครือข่ายอินเทอร์เน็ต ซึ่งหมายความว่าเมื่อมีเครื่องภายในเครือข่าย Lan ต้องการติดต่อไปยังอินเทอร์เน็ต มันก็จะใช้ IP Address ของเราเตอร์เป็นตัวแทนในการติดต่อสื่อสาร ซึ่งเครื่องในเครือข่าย Lan หลาย ๆ เครื่องที่ต้องการใช้งานอินเทอร์เน็ตในเวลาเดียวกันนั้น อาจจะใช้เพียง IP Address ของเราเตอร์ IP Address เดียวเท่านั้นสำหรับการเป็นตัวแทนในการติดต่อสื่อสารกับเครือข่ายอินเทอร์เน็ต อีกทั้งการทำ NAT ยังช่วยในการรักษาความปลอดภัยให้แก่เครือข่ายภายในอีกด้วย คือสามารถใช้การทำ NAT สำหรับการซ่อน IP Address ของเครือข่ายแต่ละส่วนไว้ได้อีกด้วย
ตัวอย่างในการทำ NAT ก็ขอให้เพื่อน ๆ ลองเปิดดู IP Address ของเครื่องที่เพื่อน ๆ ใช้งานอยู่ในปัจจุบันนี้ดูก็ได้ครับ ผมคิดว่าน่าจะต้องอยู่ในช่วงใดช่วงหนึ่งของ Private IP Address ด้านบนนี้ใช่มั้ยครับ(โดยเฉพาะ 192.168.x.x) ซึ่งเมื่อเพื่อน ๆ ติดต่อไปยังอินเทอร์เน็ต IP Address ของเครื่องเพื่อน ๆ ก็จะถูกทำ NAT ออกไปเป็น IP Address แบบ Public IP Address โดยเราเตอร์นั่นเองครับ ซึ่งเพื่อน ๆ สามารถเข้าไปที่เวปไซต์ http://www.ip-adress.com เพื่อตรวจสอบได้ว่า IP Address ของเครื่องเพื่อน ๆ ที่ถูกทำการ NAT ออกไปนั้นเป็น IP Address อะไรได้ครับ
การทำ NAT มีรูปแบบการทำงาน ดังนี้
- Static NAT เป็นการแปลงหมายเลข IP Address แบบ one to one คือ IP Address ของเครื่องภายในหนึ่งหมายเลขจะทำการแปลงไปเป็น IP Address ของเครือข่ายภายนอกหนึ่งหมายเลข ส่วนมากจะใช้งานกับเครื่อง Server ที่อยู่ในเครือข่ายภายใน ที่ต้องการเข้าใช้งานจากเครือข่ายภายนอก
- จากรูป จะเห็นว่าการทำ Static NAT เป็น การจับคู่ IP Address แบบ Private เข้ากับ IP Address แบบ Public แบบ one to one เช่น IP Address 192.168.1.10 จะถูกแปลงไปเป็น 212.122.34.50 และ 192.168.1.11 จะถูกแปลงไปเป็น 212.122.34.51 เสมอ เป็นต้น
- Dynamic NAT เป็นการแปลงหมายเลข IP Address แบบ many to many คือ IP Address ของเครื่องภายในเครือข่ายหลาย ๆ เครื่องจะทำการแปลงไปเป็น IP Address ของเครือข่ายภายนอกหลาย ๆ หมายเลข โดยการแปลงหมายเลข IP Address นั้นจะทำตามลำดับ คือ IP Address ของเครื่องในเครือข่ายภายในที่มาก่อนก็จะทำการแปลงเป็น IP Address ของเครือข่ายภายนอกในอันดับต้น ๆ ก่อน โดยถ้ามี IP Address ของเครือข่ายภายนอก 3 IP Address เครื่องในเครือข่ายภายในก็จะสามารถติดต่อสื่อสารได้เพียง 3 เครื่องในเวลาหนึ่ง ๆ เท่านั้น
- จากรูปจะเป็นว่าการทำ Dynamic NAT จะเป็นการจับคู่ IP Address แบบ Private เข้ากับ IP Address แบบ Public แบบ Many to Many คือ IP Address แบบ Private ที่ใช้งานก่อนจะถูกแปลงไปเป็น IP Address แบบ Public ที่ว่างอยู่เป็นอันดับแรกในช่วงที่กำหนดไว้ เช่น IP Address 192.168.1.17 ได้เข้าใช้งานเป็นอันดับแรก จึงได้ถูกแปลงไปเป็น IP Address แบบ Public ที่ว่างเป็นอันดับแรกของช่วงที่กำหนดไว้ นั่นก็คือ 212.122.34.50 และเมื่อใช้งานเสร็จแล้ว IP Address 212.122.34.50 นี้ก็อาจจะจับคู่กับ Private IP Address อื่น ๆ แทนก็ได้
- PAT(Port Address Translation) หรือที่เรียกว่า Overloading เป็นการแปลงหมายเลข IP Address แบบ many to one คือ IP Address ของเครื่องภายในเครือข่ายหลาย ๆ เครื่องจะทำการแปลงไปเป็น IP Address ของเครือข่ายภายนอกเพียง IP Address เดียวเท่านั้น โดยในการแปลงหมายเลข IP Address จะทำการแปลงหมายเลข Port ต้นทางไปด้วย
- จากรูปจะเห็นว่าการทำ PAT นั้นจะทำการแปลง Private IP Address ไปเป็น Public IP Address เพียง IP Address เดียวเท่านั้น แต่จะแตกต่างกันที่หมายเลข Port ที่ใช้ เช่น Private IP Address 192.168.1.11 อาจจะถูกแปลงไปเป็น 212.122.34.50 port 1022 เป็นต้น ซึ่งเมื่อใช้งานเสร็จแล้ว หมายเลข port 1022 นี้ก็อาจจะถูกจับคู่กับ Private IP Address อื่น ๆ แทนก็ได้
- Static PAT เป็นการแปลงหมายเลข IP Address แบบ one to one คล้าย ๆ กับการทำ Static NAT แต่จะมีการระบุหมายเลขพอร์ตไปด้วย
- จากรูปจะเห็นว่าการทำ Static PAT นั้นจะเป็นการจับคู่ระหว่าง Private IP Address และ Port เข้ากับ Public IP Address และ Port โดยจะคล้ายกับการทำ PAT แต่เราจะทำการกำหนด Port ด้วยตนเอง เช่น Private IP Address 192.168.1.11 port 80 จะถูกแปลงเป็น 212.122.34.50 port 80 เสมอ เป็นต้น
เอาล่ะครับ เรามาดูตัวอย่างการตั้งค่า NAT ในรูปแบบต่าง ๆ กันดูดีกว่าครับ แต่ก่อนที่ทำการตั้งค่าการ NAT แบบต่าง ๆ นั้น เราจะต้องมาทำการกำหนดอินเทอร์เฟสของเราเตอร์ว่าฝั่งใด คือฝั่ง inside (Private Network) และ ฝั่งใดคือฝั่ง outside (Public Network) กันก่อนครับ ซึ่งสามารถทำได้โดยการใช้คำสั่ง “ip nat inside” และ “ip nat outside” ใน interface configuration mode ครับ
ตัวอย่าง
Router(config)#int fa0/0
Router(config-if)#description # Private Network #
Router(config-if)#ip nat inside
Router(config-if)#exi
Router(config)#int fa0/1
Router(config-if)#description # Public Network #
Router(config-if)#ip nat outside
Router(config-if)#exi
เมื่อทำการกำหนดว่าอินเทอร์เฟสใดเป็น inside และอินเทอร์เฟสใดเป็น outside เรียบร้อยแล้ว เราก็จะมาทำการตั้งค่า NAT กันครับ ในรูปแบบต่าง ๆ ตามตัวอย่างด้านล่างกันครับ
Static NAT
ในตัวอย่างด้านล่างนี้ เป็นการทำ Static NAT โดยกำหนดให้
- Private IP Address 192.168.1.10 แปลงไปเป็น 212.122.34.50
- Private IP Address 192.168.1.11 แปลงไปเป็น 212.122.34.51
- Private IP Address 192.168.1.12 แปลงไปเป็น 212.122.34.52
และเมื่อทำการตั้งค่าเสร็จแล้ว สามารถตรวจสอบได้โดยการใช้คำสั่ง "show ip nat translation" ครับ
ตัวอย่าง
Router(config)#ip nat inside source static 192.168.1.10 212.122.34.50
Router(config)#ip nat inside source static 192.168.1.11 212.122.34.51
Router(config)#ip nat inside source static 192.168.1.12 212.122.34.52
Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 212.122.34.50:1 192.168.1.10:1 4.2.2.2:1 4.2.2.2:1
icmp 212.122.34.51:1 192.168.1.11:1 4.2.2.2:1 4.2.2.2:1
icmp 212.122.34.52:1 192.168.1.12:1 4.2.2.2:1 4.2.2.2:1
--- 212.122.34.50 192.168.1.10 --- ---
--- 212.122.34.51 192.168.1.11 --- ---
--- 212.122.34.52 192.168.1.12 --- ---
การทำ Static NAT นี้ ส่วนมาก ก็จะนำไปใช้กับ Server ในเครือข่ายภายในที่ต้องมีการเรียกใช้จากเครือข่ายภายนอก เช่น web server หรือ mail server เป็นต้นครับ
Dynamic NAT
ในตัวอย่างด้านล่างนี้เป็นการตั้งค่า Dynamic NAT โดยในการตั้งค่า Dynamic NAT จะต้องมีการสร้าง access-list เพื่อที่จะกำหนดถึง Private IP Address ภายในที่อนุญาตให้ทำการ NAT ออกไป และจะต้องมีการสร้าง Pool เพื่อที่จะใช้เป็น Public IP Address ที่จะใช้ในการแปลง Private IP Address ครับ
จากตัวอย่างด้านล่าง เป็นการสร้าง access-list 1 เพื่อใช้ในการกำหนดถึง Private IP Address ภายในที่อนุญาตให้ทำ NAT ออกไปครับ และมีการสร้าง Pool ที่ชื่อว่า ip-pool โดยกำหนด Public Address ในช่วง 212.122.34.50 ถึง 212.122.34.80 เอาไว้สำหรับการแปลง Private IP Address ออกไปครับ ซึ่งเพื่อน ๆ จะเห็นว่าจำนวนของ Private IP Address นั้นจะมีจำนวนมากกว่า Public IP Address คือมี Private IP Address จำนวน 254 หมายเลข แต่มี Public IP Address เพียง 31 หมายเลข ในกรณีนี้ การใช้งานก็จะสามารถใช้งานได้พร้อมกันสูงสุดได้เพียง 31 หมายเลขพร้อมกันเท่านั้น ถ้ามีการใช้งานหมายเลขที่ 32 เพิ่มมา จะไม่สามารถใช้งานได้ครับ
ตัวอย่าง
Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)#ip nat pool ip-pool 212.122.34.50 212.122.34.80 netmask 255.255.255.0
Router(config)#ip nat inside source list 1 pool ip-pool
Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 212.122.34.52:8 192.168.1.10:8 4.2.2.2:8 4.2.2.2:8
icmp 212.122.34.51:8 192.168.1.14:8 4.2.2.2:8 4.2.2.2:8
icmp 212.122.34.50:8 192.168.1.17:8 4.2.2.2:8 4.2.2.2:8
PAT
ในตัวอย่างด้านล่างนี้จะเป็นการตั้งค่า PAT หรือที่รู้จักกันว่า overloading ซึ่งจะสามารถใช้งาน Public IP Address เดียวในการเป็นตัวแทนการในการติดต่อสื่อสารระหว่าง เครื่องในเครือข่ายภายในกับเครือข่ายภายนอกได้ เช่นในตัวอย่างด้านล่างนี้ เครื่องในเครือข่ายภายในที่มีการใช้ Private IP Address เท่ากับ 192.168.1.0/24 เมื่อทำการติดต่อสื่อสารกับเครือข่ายภายนอกจะถูกแปลงมาใช้ Public IP Address ซึ่งเป็น IP Address ของอินเทอร์เฟส FastEthernet 0/1 ของเราเตอร์เพียงหมายเลขเดียว
ตัวอย่าง
Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)#ip nat inside source list 1 interface FastEthernet 0/1 overload
Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 212.122.34.50:1026 192.168.1.10:14 4.2.2.2:14 4.2.2.2:1026
icmp 212.122.34.50:1030 192.168.1.11:16 4.2.2.2:16 4.2.2.2:1030
icmp 212.122.34.50:1025 192.168.1.12:13 4.2.2.2:13 4.2.2.2:1025
Static PAT
ในตัวอย่างด้านล่างเป็นการตั้งค่า Static PAT ซึ่งจะทำการจับคู่ Private IP Address และ port เข้ากับ Public IP Address และ Port ซึ่งส่วนมาจะนำไปใช้งานกับ Server ในเครือข่ายภายในที่ต้องมีการเรียกใช้จากเครือข่ายภายนอก เช่น web server หรือ mail server เหมือนกับการตั้งค่า Static NAT แต่จะแตกต่างตรงที่มีการระบุหมายเลข Port ลงไปด้วยครับ
จากตัวอย่างด้านล่างนี้เป็นการตั้งค่า Static PAT โดยจะทำการแปลง 192.168.1.10 port 80 ไปเป็น 212.122.34.50 port 80 ครับ
ตัวอย่าง
Router(config)#ip nat inside source static tcp 192.168.1.10 80 212.122.34.50 80
Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 212.122.34.50:80 192.168.1.10:80 --- ---
tcp 212.122.34.50:80 192.168.1.10:80 112.32.45.15:1025 112.32.45.15:1025
tcp 212.122.34.50:80 192.168.1.10:80 112.32.45.15:1026 112.32.45.15:1026
การตั้งค่าการ NAT นั้นยังมีรูปแบบการตั้งค่าในแบบอื่น ๆ ที่หลากหลาย เช่น nat outside เป็นต้น ที่นำมาแนะนำให้เพื่อน ๆ ในวันนี้ก็เป็นเพียงพื้นฐานการตั้งค่า NAT บนอุปกรณ์ Cisco IOS เท่านั้น ไว้ในโอกาสหน้าจะมาแนะนำการตั้งค่า NAT ในรูปแบบอื่น ๆ กันต่อนะครับ สวัสดีครับ
Sunday, November 21, 2010
การตั้งเวลาเพื่อให้อุปกรณ์ reload โดยอัตโนมัติ
ในบางครั้งที่เราใช้งานอุปกรณ์เครือข่าย เมื่อเกิดมีปัญหาขึ้นมา สิ่งที่หลาย ๆ คนเลือกที่จะทำ(รวมทั้งผมด้วย) ก็คือการทดลอง reload อุปกรณ์นั้น ๆ ดูก่อน เพื่อเป็นการล้างค่าต่าง ๆ บนตัวอุปกรณ์ ซึ่งก็เป็นวิธีการในการแก้ไขปัญหาเฉพาะหน้าที่ดีวิธีนึงใช่มั้ยครับ
ยกตัวอย่างเช่น ในไซต์ลูกค้าของผมไซต์นึง ทางลูกค้าพบปัญหาคือ อุปกรณ์ในรุ่นที่ลูกค้าใช้งานอยู่นั้นเป็นรุ่นเล็กจนไม่เพียงพอต่อการใช้งานขององค์กร ซึ่งเมื่อเปิดใช้งานไว้หลาย ๆ วัน จะทำให้มีการใช้ memory ในปริมาณที่สูงมาก จนทำให้การใช้งานของผู้ใช้ช้าลงจนเห็นได้ชัด และด้วยเหตุผลบางประการ ทางลูกค้าก็ไม่สามารถที่จะ upgrade ไปใช้งานอุปกรณ์ในรุ่นอื่นได้ จึงต้องทำการแก้ไขปัญหาเฉพาะหน้าด้วยการ reload เราเตอร์ทุก ๆ วันในช่วงที่ไม่มีการใช้งานโดยการใช้คำสั่ง "reload at 00.00" เพื่อให้เราเตอร์ทำการ reload ตัวเองในเวลาเที่ยงคืน ซึ่งก็ต้องมาทำการตั้งคำสั่งนี้ด้วยตัวเองทุก ๆ วัน ทางลูกค้าจึงได้มาปรึกษาผมว่า มีวิธีใดบ้างที่จะทำให้เราเตอร์ reload ตัวเองโดยอัตโนมัติ โดยไม่ต้องตั้งค่าทุก ๆ วันบ้าง ซึ่งทางผมก็ได้ไปค้นหาวิธีการมาจนได้ ในวันนี้จึงอยากที่จะมาแนะนำเพื่อน ๆ เผื่อได้นำไปใช้งานกันครับ
สำหรับวิธีการที่จะแนะนำในวันนี้ก็คือการใช้ Embedded Event Manager (EEM) ร่วมกับการใช้ cron ซึ่งสำหรับเพื่อน ๆ ที่เคยใช้งาน unix หรือ linux มาก็คงเคยผ่านตาการใช้ cron กันมาบ้างใช่มั้ยครับ แต่สำหรับเพื่อน ๆ ที่ไม่เคยรู้จักการใช้งาน cron ในวันนี้ผมก็จะมาแนะนำวิธีการใช้งาน cron สั้น ๆ กันก่อนนะครับ
cron เป็นการสั่งให้ทำการใช้คำสั่ง หรือใช้ script ต่าง ๆ ตามช่วงเวลาที่กำหนดไว้ ในการใช้งาน cron จะต้องมีการกำหนดเวลาเอาไว้ โดยมีรูปแบบเป็น 6 fields ดังนี้
# .------------- minute (0 - 59)
# | .---------- hour (0 - 23)
# | | .-------- day of month (1 - 31)
# | | | .------ month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .----- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
*ในส่วนนี้ขอขอบคุณ wikipedia นะครับ เนื่องจากเห็นว่าอธิบายไว้ได้ง่ายและชัดเจนดีครับ
ตัวอย่างการใช้ cron
ใช้คำสั่งบางอย่างในทุก ๆ เดือน ก็จะต้องทำการตั้งค่า cron ดังนี้
0 0 1 * *
ใช้คำสั่งบางอย่างในทุก ๆ วันจันทร์ถึงวันพุธทุก ๆ 6 โมงเช้า ก็จะต้องทำการตั้งค่า cron ดังนี้
0 6 * * 1-3
ทั้งนี้ในการใช้งาน cron ได้มีการกำหนดค่าต่าง ๆ ที่มีการใช้งานเป็นประจำเอาไว้เป็นคำสั่ง เพื่อให้สะดวกต่อการนำไปใช้ เช่น เราต้องการให้ใช้คำสั่งบางอย่างในทุก ๆ ชั่วโมง แทนที่จะต้องใช้คำสั่งว่า “0 * * * *” ก็สามารถใช้คำสั่งว่า @hourly แทนได้ โดยคำสั่งที่มีการกำหนดไว้มีดังนี้
| คำสั่ง | อธิบาย | มีค่าเท่ากับ |
| @yearly (หรือ @annually) | ทำทุกปี | 0 0 1 1 * |
| @monthly | ทำทุกเดือน | 0 0 1 * * |
| @weekly | ทำทุกสัปดาห์ | 0 0 * * 0 |
| @daily (หรือ @midnight) | ทำทุกวัน | 0 0 * * * |
| @hourly | ทำทุกชั่วโมง | 0 * * * * |
| @reboot | ทำเมื่อเริ่ม boot ใหม่ |
เอาล่ะครับ เมื่อเพื่อน ๆ ทำความรู้จักกับการใช้งาน cron กันแล้ว เราก็จะมาเริ่มทำการตั้งค่า EEM และ cron เพื่อกำหนดเวลาให้ทำการ reload กันครับ สำหรับขั้นตอนในการตั้งค่าก็มีดังนี้
- ทำการตั้งค่าวันและเวลาให้ตรงกับเวลาในปัจจุบัน
- เข้าสู่โหมด appler configuration mode ด้วยการใช้คำสั่ง "event manager applet <applet-name>"
- ทำการกำหนดเวลาโดยใช้ cron ด้วยคำสั่ง "event timer cron name <name> cron-entry <cron-entry>"
- ทำการกำหนด action ว่าให้ทำการ reload เมื่อถึงเวลาที่กำหนด
ในอันดับแรกเราก็ควรที่จะทำการตั้งวันและเวลาของอุปกรณ์เราให้ตรงกับปัจจุบันกันก่อนนะครับ แนะนำว่าควรที่จะทำการเทียบเวลากับ ntp server นะครับ
ตัวอย่าง
Router(config)#ntp server 203.185.69.59 prefer
Router(config)#ntp server 203.185.69.60
Router(config)#clock timezone ICT +7
Router(config)#do show clock
10:11:47.662 ICT Sun Nov 21 2010
จากนั้นขั้นตอนต่อมา เราก็จะมาเริ่มทำการตั้งค่า EEM กันครับ โดยจากตัวอย่างนี้จะกำหนดให้ทำการ reload ในทุก ๆ นาทีที่ 0 และชั่วโมงที่ 0 ของทุก ๆ วัน หรือก็คือในทุก ๆ เที่ยงคืนนั่นเองครับ ซึ่งการใช้คำสั่ง "0 0 * * *" นั้นสามารถใช้คำสั่งว่า "@midnight" แทนก็ได้ครับ
ตัวอย่าง
Router(config)#event manager applet reload@midnight
Router(config-applet)#event timer cron name midnight cron-entry "0 0 * * *"
Router(config-applet)#action 1.0 reload
Router(config-applet)#exit
เพียงเท่านี้อุปกรณ์ของเราก็จะทำการ reload ตัวเองโดยอัตโนมัติในทุก ๆ เที่ยงคืนแล้วครับ ซึ่ง EEM นี้ยังสามารถนำไปใช้งานได้อีกหลากหลายรูปแบบ เอาไว้คราวหน้าจะมาแนะนำวิธีการอื่น ๆ ให้เพื่อน ๆ กันนะครับ





