Translation Network Address แปลงไอพีบนเฮดเดอร์ด้วย 13 05/04/60 Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
ความจำเป็นที่ต้องแปลงที่อยู่ไอพี หลักการทำงาน และเขต Inside/Outside การตั้งค่า การระบุอินเตอร์เฟสฝั่ง Inside/Outside การกำหนดขอบเขตข้อมูลจากฝั่ง Inside ที่จะแปลงออกไป การระบุกลุ่มที่อยู่ไอพีที่จะแปลงเป็นเมื่อส่งออกฝั่ง Outside คำสั่งเปิดใช้การแปลงที่อยู่ไอพี 13-1
Private IP และการเชื่อมต่ออินเตอร์เน็ต ISP LAN จากการกำหนดช่วงที่อยู่ไอพีส่วนตัว (Private IP) ซึ่งใช้ซ้ำกันได้บน LAN แต่ละองค์กร เพื่อเป็นหนทางประหยัด IPv4 เพื่อป้องกันความวุ่นวายบนอินเตอร์เน็ต ISP จึงป้องกันไม่ให้แพ๊กเก็ตที่ระบุที่อยู่ไอพีต้นทางเป็น Private IP ออกมาสู่อินเตอร์เน็ต เราท์เตอร์จึงมีฟีเจอร์สำหรับแปลงที่อยู่ ไอพีบน Header ของแพ๊กเก็ตที่สื่อสารระหว่าง LAN (เขต Inside) กับอินเตอร์เน็ต (เขต Outside) เรียก NAT (Network Address Translation) Inside ไม่รับ Private IP 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 ISP LAN ต้องแปลง ไอพีต้นทาง Outside 13-2
หลักการทำงาน Network Address Translation Inside Outside นิยามขอบเขต 05/04/60 หลักการทำงาน Network Address Translation Inside Outside S0 Fa0/0 Local Addresses Global Addresses Global Addresses Local Addresses นิยามขอบเขต ฟีเจอร์ NAT แบ่งฝั่งของเราท์เตอร์เป็น 2 ฝั่ง ได้แก่ ฝั่งด้านใน (Inside) และฝั่งด้านนอก (Outside) โดยแยกฝั่งด้วยอินเตอร์เฟส นิยามชนิดที่อยู่ ทุก Node ในแต่ละฝั่ง จะมีที่อยู่ 2 แบบ ได้แก่ Local: เป็นที่อยู่สำหรับสื่อสารภายในฝั่งตัวเอง Global: เป็นที่อยู่สำหรับสื่อสารข้ามฝั่ง 13-3 Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
หลักการทำงาน Network Address Translation ฝั่ง Inside มีการแปลงที่อยู่ 05/04/60 หลักการทำงาน Network Address Translation หน้าที่ของฟีเจอร์ NAT ก็คือ การแปลงที่อยู่ไอพีบนแพ๊กเก็ตระหว่าง Local-Global ดูที่อยู่ไอพีที่แต่ละชนิดได้จากคำสั่ง show ip nat translation บนโหมดอีนาเบิล Router# show ip nat translation Pro Inside global Inside local Outside local Outside global udp 21.87.1.32:4057 192.168.0.10:4057 203.174.2.10:53 203.174.2.10:53 tcp 21.87.1.32:5055 192.168.0.10:5055 58.174.90.2:80 58.174.90.2:80 tcp 21.87.1.32:7309 192.168.0.15:7309 121.1.8.234:80 121.1.8.234:80 ฝั่ง Inside มีการแปลงที่อยู่ ฝั่ง Outside ไม่แปลงที่อยู่ ในการใช้งานสำหรับองค์กรทั่วไป ที่ต้องการให้เครื่องลูกข่ายภายใน LAN สื่อสารออกมาฝั่งอินเตอร์เน็ตได้ จึงเลือกนำ NAT เฉพาะฝั่ง Local เรียกการทำ NAT ฝั่งตัวเองนี้ว่า “NAT inside” 13-4 Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
05/04/60 การตั้งค่า NAT Inside จากนิยามที่เกี่ยวข้องกับการทำ NAT inside .ในการตั้งค่าจึงต้องระบุองค์ประกอบให้ครบ 5 ส่วนดังต่อไปนี้ ระบุอินเตอร์เฟสที่เป็นฝั่ง “inside” ระบุอินเตอร์เฟสที่เป็นฝั่ง “outside” ระบุกลุ่มไอพีที่ใช้อยู่ในฝั่งตนเอง (Local Address) ที่ต้องการทำ NAT ระบุกลุ่มไอพีที่แปลงเป็น เพื่อใช้สื่อสารกับฝั่งภายนอกได้ (Global Address) ใส่คำสั่งให้เราท์เตอร์ทำ NAT ที่ฝั่ง “inside” Inside Outside Fa0/0 S0 Local Addresses Global Addresses 1 2 3 4 5 ip nat “inside” 13-5 Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
กำหนดฝั่ง Inside/Outside Inside Outside 05/04/60 กำหนดฝั่ง Inside/Outside Fa0/0 Inside Outside Fa0/0 S0 Local Addresses Global Addresses S0 เราจำเป็นต้องกำหนดฝั่งบนอินเตอร์เฟส เพื่อให้ NAT รู้ทิศทางการแปลงไอพี ใช้คำสั่ง “ip nat inside” บนโหมดคอนฟิกอินเตอร์เฟสที่เป็นฝั่ง LAN เช่น Router(config)# interface fa0/0 Router(config-if)# ip nat inside ใช้คำสั่ง “ip nat outside” บนโหมดคอนฟิกอินเตอร์เฟสที่เป็นฝั่งออกอินเตอร์เน็ต เช่น Router(config)# interface S0 Router(config-if)# ip nat outside Src. IP Src. IP 192.168.x.x 52.78.0.2 ไปฝั่ง Outside NAT Fa0/0 Des. IP Des. IP S0 192.168.x.x 52.78.0.2 NAT มาจาก Outside 1 2 13-6 Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
กำหนดกลุ่มที่อยู่ Local Address 05/04/60 กำหนดกลุ่มที่อยู่ Local Address การกำหนดกลุ่มที่อยู่ Local Address ที่จะแปลงที่อยู่ไอพีเป็น Global ก็คือ การระบุเงื่อนไข (Access List) ของแพ๊กเก็ตข้อมูลที่จะเข้าอินเตอร์เฟสฝั่ง Inside ที่จะให้ทำ NAT เปลี่ยนที่อยู่ไอพีต้นทาง (Source IP address) นั่นเอง (แล้วจึงนำ ACL no. ไปใช้กำกับคำสั่งเปิดการ NAT อีกที) จึงใช้การกำหนด Access List แบบ Standard (ตามหลักการ เพราะต้องการกรองข้อมูลที่จะออกไปใช้ NAT ไม่ใช่กรองข้อมูลที่จะเข้าเราท์เตอร์) เช่น ต้องการให้เครื่องทั้งหมดในวงแลน 192.168.1.0/24 ต้องทำ NAT ออกอินเตอร์เน็ต access-list 1 permit 192.168.1.0 0.0.0.255 ต้องการให้เครื่องทั้งหมดในวงแลน 192.168.10.192/27 ยกเว้นเครื่องไอพี 192.168.10.220 - .223 ต้องทำ NAT ออกอินเตอร์เน็ต access-list 2 deny 192.168.10.220 0.0.0.3 access-list 2 permit 192.168.10.192 0.0.0.31 13-7 Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
เรามองคุณเป็นเครือข่าย Global 05/04/60 กำหนดกลุ่มที่อยู่ Global Address กลุ่มที่อยู่ที่ใช้เป็น Inside Global ซึ่งเป็นที่อยู่ที่สามารถออกอินเตอร์เน็ตได้ จะต้องได้รับการจัดสรรจากผู้ให้บริการอินเตอร์เน็ต (ISP) โดยจากมุมมอง ISP ถือว่า เครือข่าย LAN ของเรา กำลังใช้เครือข่าย (หรือไอพี) แบบ Public ที่เขาจ่ายให้ ไม่สนใจว่าเราใช้ Private IP เป็นอะไร ดังนั้น เราต้องกำหนดกลุ่มที่อยู่ (Pool) ที่จะใช้เป็น Inside Global ตามที่ ISP กำหนด ทั้งรายชื่อไอพี และ Subnet Mask ISP LAN เรามองคุณเป็นเครือข่าย Global Inside Outside Global Network (from ISP) 58.12.109.8/29 ISP Route 58.12.109.8/29 13-8 Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
เรามองคุณเป็นเครือข่าย Global 05/04/60 กำหนดกลุ่มที่อยู่ Global Address การตั้งค่า ใช้คำสั่ง ip nat pool ตามด้วยชื่อกลุ่มที่อยู่อ้างอิงตามต้องการ และกลุ่มไอพี/mask ที่ ISP กำหนดให้ ในโหมดโกลบัลคอนฟิก ISP LAN เรามองคุณเป็นเครือข่าย Global Inside Outside Global Network (from ISP) Router(config)# ip nat pool (ชื่อ Pool) (ไอพีเริ่มต้น) (ไอพีสุดท้าย) netmask (Subnet Mask ที่ ISP กำหนด) 58.12.109.8/29 ตัวอย่าง ISP จัดสรรกลุ่มไอพีตั้งแต่ 203.17.4.193 – 203.17.4.194/30 ISP Route 58.12.109.8/29 Router(config)# ip nat pool Ranet 203.17.4.193 203.17.4.194 netmask 255.255.255.252 13-9 คำแนะนำ: ถ้าโจทย์ไม่กำหนดซับเน็ตมาให้ ให้ตั้งค่าโดยใช้เครือข่ายที่แคบที่สุด Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
คำสั่งเปิดการทำ NAT Inside ตัวอย่าง 05/04/60 คำสั่งเปิดการทำ NAT Inside ใช้คำสั่งต่อไปนี้บนโหมดโกลบัลคอนฟิก เพื่อเปิดการทำ NAT บนอินเตอร์เฟสฝั่ง Inside ตาม Local และ Global Address ที่เราตั้งค่ารอไว้ Router(config)# ip nat inside source list (ACL no.) pool (ชื่อ Pool) overload โดยที่ ACL no. คือ เลขอ้างอิงของ Access-list ที่เราตั้งค่าไว้จำกัดกลุ่มแพ๊กเก็ตที่จะใช้ เป็น Local Address ชื่อ Pool คือ ชื่อกลุ่มไอพี (Pool) ที่เราตั้งค่าไปด้วยคำสั่ง ip nat pool (ชื่อ Pool) เพื่อใช้เป็น Global Address ตัวอย่าง ต้องการทำ NAT inside ที่ใช้ ACL no.10 เป็นที่อยู่ Local และ Pool Ranet เป็นที่อยู่ Global 13-10 Router(config)# ip nat inside source list 10 pool Ranet overload Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
การใช้เลข Port ช่วย Port Address Translation 05/04/60 การใช้เลข Port ช่วย Port Address Translation Inside Local Inside Global 192.168.0.10:4032 192.168.0.11:5008 192.168.0.12:4703 192.168.0.13:1152 192.168.0.14:9034 52.74.109.81:4032 52.74.109.81:5008 52.74.109.81:4703 52.74.109.81:1152 52.74.109.81:9034 NAT-PT Trans. “Overload” เนื่องจาก ISP มักจัดสรร Global Address มาให้เพียงไม่กี่ไอพี ย่อมไม่เพียงพอต่อการแปลง Local Address ที่มีโฮสใช้จำนวนมาก จึงมีวิธีการแปลง โดยใช้เลขพอร์ทเข้าช่วย เนื่องจากจะทำให้ Global Address 1 ตัว แทน Local Address ได้หลายตัวดังภาพ เรียกความสามารถนี้ว่า PAT หรือ NAT-PT (Port Translation) คำสั่งที่ให้ทำ PAT คือการต่อท้ายคำสั่ง NAT inside ด้วย “Overload” 13-11 Router(config)# ip nat inside source list 10 pool Ranet overload Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
05/04/60 ตัวอย่างการใช้ บริษัทราเน็ท ได้รับ IP address จาก ISP มาใช้ 6 หมายเลข ตั้งแต่ 58.7.42.137 - .142 จงตั้งค่า NAT ให้เครื่องโฮสภายใน LAN ที่มีไอพีเฉพาะ 192.168.14.225 - .251 สามารถออกมาใช้อินเตอร์เน็ตได้ IP: 203.17.206.78/30 ISP IP: 203.17.206.79/30 S0 Ranet-R Router(config)# interface S0 Router(config-if)# ip nat outside Router(config-if)# interface Fa0 Router(config-if)# ip nat inside Router(config-if)# exit Router(config)# access-list 1 deny 192.168.14.252 0.0.0.3 Router(config)# access-list 1 permit 192.168.14.224 0.0.0.31 Router(config)# ip nat pool RanetPool 58.7.42.137 58.7.42.142 netmask 255.255.255.248 Router(config)# ip nat inside source list 1 pool RanetPool overload LAN Fa0 Global Network: 58.7.42.136/29 Local Network: 192.168.14.224/27 13-12 ทวนสอบโดย Ping ไปยังเราท์เตอร์ของ ISP จากเครื่องโฮสในแลน Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
การ NAT ออกอินเตอร์เฟส 05/04/60 การ NAT ออกอินเตอร์เฟส ถ้าเราซื้อบริการอินเตอร์เน็ตจาก ISP แต่ไม่ได้ซื้อ Global IP ตายตัวมาด้วย ISP จะสุ่มตั้งค่า IP address ชั่วคราวให้ที่ขาฝั่ง Outside ของเราท์เตอร์เราแทนเพียงตัวเดียว เช่น การที่ให้เราตั้งค่า IP address negotiated ที่อินเตอร์เฟสฝั่ง Outside เพื่อให้ PPP server จ่ายไอพีมาให้อินเตอร์เฟสของเรา เป็นต้น ดังนั้น การ NAT inside จะต้องใช้ Global IP ที่ ISP ตั้งค่าให้อินเตอร์เฟสของเรา ซึ่งไม่สามารถกำหนด Global Address ตายตัวได้ จึงต้องตั้งค่าเป็นชื่ออินเตอร์เฟสแทนชื่อกลุ่มไอพี (Pool) ดังนี้ IP: 203.17.206.78/30 ISP IP address negotiated S0 Ranet-R LAN Fa0 Local Network: 192.168.14.224/27 Router(config)# ip nat inside source list (ACL no.) interface (ชื่ออินเตอร์เฟส) overload 13-13 เช่น Router(config)# ip nat inside source list 1 interface S0 overload Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved
การ Forward Port NAT inside Static 05/04/60 การ Forward Port NAT inside Static บางครั้ง เราต้องการให้การจับคู่กันระหว่าง Local Address+Port กับ Global Address+Port ตายตัว เช่น ต้องการให้ผู้ที่เชื่อมต่อมายัง Global IP 203.87.2.37 Port 80 ให้แปลงที่อยู่ปลายทางมาเป็นไอพีของเว็บเซิร์ฟเวอร์ภายใน 192.168.0.100 Port 80 ตลอด เราสามารถใช้คำสั่ง ip nat inside source static สร้างการจับคู่ Local/Global address แบบตายตัว (Static) ได้ ดังนี้ Router(config)# ip nat inside source static (tcp/udp) (Local add.) (Local Port) (Global add.) (Global Port) เช่น จากตัวอย่างด้านบน พิมพ์คำสั่งได้ว่า: Router(config)# ip nat inside source static tcp 192.168.0.100 80 203.87.2.37 80 13-14 Copyrights 2009-2011 by Ranet Co.,Ltd., All rights reserved