ยินดีต้อนรับสู่ show running-config ครับ

บล็อก show running-config นี้สร้างไว้เพื่อเป็นแหล่งรวบรวมเทคนิคการตั้งค่าอุปกรณ์เครือข่าย Cisco ไม่ว่าจะเป็น Cisco IOS Router, Cisco Catalyst Swtich, Cisco ASA Firewall, Cisco Mars เป็นต้น รวมทั้งอาจจะมีเทคนิคการตั้งค่าอุปกรณ์ในยี่ห้ออื่น ๆ บ้างเล็กน้อยครับ

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

Sunday, May 22, 2011

ทำความรู้จักกับค่า Configuration Register บน Cisco IOS Router

Use of the configuration register on Cisco IOS Router

configuration register 

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

          ค่า Configuration Register นี้ มีขนาด 16 bits โดยจะถูกเก็บไว้อยู่บน NVRAM ซึ่งในแต่ละบิตจะมีค่าเป็น 1 (เปิดการทำงาน) หรือ 0 (ปิดการทำงาน) โดยจะแสดงอยู่ในรูปของเลขฐานสิบหก (hexadecimal) โดยตัวอักษรหนึ่งตัวจะมีค่าเท่ากับ 4 bit และในแต่ละบิตจะเป็นตัวกำหนดถึงรูปแบบต่าง ๆ ที่จะใช้ในการบูตเจ้าเราเตอร์ของเราขึ้นมาครับ ในการเขียนค่า Configuration Register นั้นจะใช้เครื่องหมาย 0x นำหน้า เพื่อแสดงว่าเป็นเลขฐานสิบหก (hexadecimal) และเมื่อทำการเปลี่ยนแปลงค่า Configuration Register ไปแล้ว ค่าที่เปลี่ยนแปลงไปนี้จะส่งผลก็ต่อเมื่อทำการรีบูตเราเตอร์ของเราใหม่นะครับ ซึ่งจะว่าไปแล้วเจ้าค่า Configuration Register นี้ ก็เปรียบเสมือนกับการปรับตั้งค่า BIOS ในการใช้งานเครื่อง PC ของเพื่อน ๆ นั่นแหละครับ

เราสามารถใช้ค่า Configuration Register นี้ เพื่อจุดประสงค์ต่าง ๆ ดังต่อไปนี้ครับ

  • กำหนดให้เราเตอร์บูตไปยัง ROM Monitor
  • การเลือกไฟล์และสถานที่ในการจัดเก็บไฟล์ IOS ที่จะทำการบูต
  • เปิดหรือปิดการทำงานของ Break Function
  • การกำหนดค่า Broadcast Address
  • การกู้คืน password ในกรณีที่ลืม password
  • กำหนดค่า Console line speed (baud rate)

          ค่า Configuration Register นี้ มีขนาด 16 bits โดยเมื่อเขียนอยู่ในรูปของเลขฐานสองจะเรียงลำดับจาก 0 ถึง 15 โดยเริ่มต้นจากทางด้านขวามาด้านซ้าย ดังนี้

16 bits และในทุก ๆ 4 bits จะถูกแปลงเป็นเลขฐานสิบหก (วิธีการแปลงไม่ขอพูดถึงนะครับ) ดังตัวอย่างด้านล่าง

2102 copy

           ค่า Configuration Register บนเราเตอร์ซิสโก้ โดยปกติ (default) จะมีค่าเท่ากับ 0x2102 ซึ่งมีขนาด 16 บิต สามารถเขียนอยู่ในรูปของเลขฐานสองได้เท่ากับ 0010 0001 0000 0010 ซึ่งในแต่ละบิตก็จะกำหนดถึงการทำงานต่าง ๆ ที่ต่างกันออกไป เรามาดูกันดีกว่าครับ ว่าในแต่ละบิตนั้นมีการทำงานอย่างไร รายละเอียดตามตารางด้านล่างเลยครับ

description 

          ในเฉพาะส่วนของ boot field ซึ่งประกอบไปด้วย 4 bit แรกของค่า Configuration Register (bits 3,2,1 และ 0) นั้นจะเป็นตัวกำหนดวิธีการที่เราเตอร์จะดาวน์โหลดไฟล์ system image มาใช้งาน โดยมีรายละเอียด ดังนี้

boot field

          ในส่วนของบิตที่ทำหน้าที่เกี่ยวกับการกำหนดค่า IP Broadcast Address ซึ่งก็คือบิตทที่ 10 และ 14 ก็จะเป็นตัวกำหนดถึงค่า IP Broadcast Address ที่เราเตอร์ตัวนี้จะใช้งาน ซึ่งโดยปกติเราจะใช้ค่า IP Broadcast Address เป็น all one (ทุก ๆ บิตเป็น 1) แต่เราสามารถทำการกำหนดค่า IP Broadcast Address ในรูปแบบอื่น ๆ ได้ ตามตารางด้านล่างครับ

broadcast address

          ในส่วนของบิตที่ทำหน้าที่ในการกำหนด console line speed หรือก็คือค่า baud rate ที่เราจะต้องทำการตั้งค่าเมื่อทำการเชื่อมต่อสาย console จาก PC ของเราไปยัง console port ของเราเตอร์นั้นก็คือบิตที่ 5, 11 และ 12 ซึ่งโดยปกติ (default) เราจะใช้ค่า baud rate เท่ากับ 9600 ซึ่งก็คือทั้งสามบิตที่ว่ามา จะมีค่าเป็น 0 แต่เราก็สามารถที่จะทำการกำหนดค่า baud rate เป็นค่าอื่น ๆ ได้ตามตารางด้านล่างนี้เลยครับ

console speed

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

example 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 ครับ

ตัวอย่าง
Router# configure terminal

Enter configuration commands, one per line.
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 ที่จะเปลี่ยนแปลงไปเมื่อทำการรีบูตเราเตอร์ด้วยครับ

ตัวอย่าง
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

ROM: System Bootstrap, Version 12.1(3r)T2, RELEASE SOFTWARE (fc1)
Copyright (c) 2000 by cisco Systems, Inc.

System returned to ROM by power-on
System image file is "c2800nm-advipservicesk9-mz.124-15.T1.bin"

This product contains cryptographic features and is subject to United
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.

A summary of U.S. laws governing Cisco cryptographic products may be found at:
http://www.cisco.com/wwl/export/crypto/tool/stqrg.html

If you require further assistance please contact us by sending email to
export@cisco.com.

cisco 2811 (MPC860) processor (revision 0x200) with 60416K/5120K bytes of memory
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)

Configuration register is 0x2102(will be 0x2142 at next reload)

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 นี้ในการแก้ไขปัญหานะครับ

          ในวันนี้ ก็หวังว่าเพื่อน ๆ ที่ (หลง) เข้ามาอ่านบทความนี้ ก็คงได้ความรู้ติดตัวไปบ้าง ไม่มากก็น้อยนะครับ สำหรับบทความนี้ก็ขอจบเพียงเท่านี้ครับ สวัสดีครับผม ^_^

3 comments :

  1. ถามหน่อยครับ แต่ละรูปที่มากแปะ เอามาจากไหนครับ

    ReplyDelete
  2. รูปนี่ทำเองครับ แต่เนื้อหาเอามาจากเวป cisco ครับผม ^_^

    ReplyDelete
  3. เออ ค่า Startup-config ต่างจาก Running-config อย่างไรครับ
    แล้วคำสัง Router#copy startup-config running-config ต่างจาก Router#copy running-config startup-config อย่างไรครับ

    ReplyDelete