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

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

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

Thursday, November 25, 2010

การตั้งค่า NAT(Network Address Translation) บน Cisco IOS

Basic NAT Configuraition on Cisco IOS

nat 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

    • จากรูป จะเห็นว่าการทำ 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

    • จากรูปจะเป็นว่าการทำ 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

    • จากรูปจะเห็นว่าการทำ 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
    • จากรูปจะเห็นว่าการทำ 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 ในรูปแบบอื่น ๆ กันต่อนะครับ สวัสดีครับ

No comments:

Post a Comment