ถอดรหัสทุกสิ่งที่คุณควรรู้เกี่ยวกับ IPv6

September 12, 2007 by: Editor

IPv6-logo

เมื่อมีการออกแบบ ARPANET ในช่วงปลายของปี 1960 มีการออกแบบโดยใช้ NCP (Network Control Protocol) เพื่อให้เกิดความเป็นไปได้ที่เครื่องหลายประเภทสามารถเชื่อมต่อเข้ากับเครือข่ายเพื่อสื่อสารซึ่งกันและกัน

อย่างไรก็ดี เป็นที่ชัดแจ้งว่า NCP มีข้อจำกัดบางประการ จึงทำให้มีความพยายามที่คิดค้นสิ่งใหม่ ๆ ขึ้นมาเพื่อแก้ไขปัญหานี้ วิศวกรได้ตัดสินใจว่าควรแบ่งโปรโตคอล NCP ออกเป็นสองส่วน อันได้แก่ Internet Protocol ที่ช่วยให้แพคเกจสามารถเดินทางข้ามเครือข่ายที่แตกต่างกันซึ่งเชื่อมต่อกับ ARPANET อยู่ และ Transport Control Protocol ที่นำสตรีมข้อมูลมาย่อยให้เล็กลงเป็นเซกเมนต์แล้วส่งเซกเมนต์นี้ออกไปโดยใช้ Internet Protocol ในอีกทางหนึ่ง Transport Control Protocol ปลายทางจะนำเซกเมนต์มารวมกันในลำดับที่ถูกต้องก่อนส่งออกไปเป็นสตรีมข้อมูลให้แก่แอพพลิเคชันปลายทาง ประเด็นสำคัญของวิธีการแบบนี้ซึ่งแตกต่างกับโทรศัพท์ที่เชื่อมต่อกับเครือข่ายที่ใช้สายหรือเครือข่ายไร้สายคือ เครื่องที่เชื่อมต่อกับ ARPANET ที่ปัจจุบันกลายเป็นอินเตอร์เน็ตต้องทราบตำแหน่งที่อยู่ของตนเอง

TCP/IP ทำงานรับใช้เราได้เป็นอย่างดีตั้งแต่ถือกำเนิดขึ้นมาเมื่อปี 1981 แต่ในปัจจุบัน เป็นที่ชัดเจนว่าส่วนของ IP มีข้อจำกัดที่ก่อให้เกิดปัญหากับอินเตอร์เน็ตที่มีการเติบโตอย่างต่อเนื่องมาเป็นเวลานับทศวรรษ เพื่อรองรับจำนวนคอมพิวเตอร์อันมหาศาลโดยไม่เกิดความสูญเปล่าของโอเวอร์เฮดในแพคเกจ IP มากเกินไป ผู้ออกแบบ TCP/IP ได้กำหนดให้ใช้แอดเดรสขนาด 32 บิตซึ่งทำให้เกิดค่าที่เป็นไปได้ทั้งหมด 4,294,967,296 ค่า อย่างไรก็ดีครึ่งพันล้านไม่สามารถนำมาใช้ได้เนื่องด้วยเหตุผลหลายประการ ทำให้เราเหลือ IP ให้ใช้ประมาณ 3.7 พันล้าน ณ วันที่ 1 มกราคม 2007 มีการใช้ไอพีแอดเดรสไปทั้งหมด 2.4 พันล้าน เหลือเพียง 1.3 พันล้านที่ว่างอยู่ โดยมีการใช้แอดเดรสใหม่ 170 ล้านต่อปี หากนำอัตราการเติบโตนี้มาคำนวณ จะเหลือเวลาเพียง 7 ปีครึ่งหรือเร็วกว่านี้หากมีอัตราการเติบโตที่สูงขึ้น

ด้วยเหตุนี้ เราเตอร์ที่ใช้กันตามบ้านจึงได้มีการนำเทคนิคที่เรียกว่า Network Address Translation (NAT) มาใช้เพื่อให้เครื่องคอมพิวเตอร์หลายเครื่องสามารถใช้ไอพีแอดเดรสเดียวกันได้

NAT คืออะไร

เครื่องที่อยู่เบื้องหลังอุปกรณ์ NAT จะมีแอดเดรสอยู่ในช่วง 10.0.0.0, 172.16.0.0 หรือ 192.168.0.0 ซึ่งถูกกำหนดให้ใช้เป็นแอดเดรสส่วนตัวตามที่ระบุใน RFC 1918 อุปกรณ์ NAT ทำหน้าที่แทนที่แอดเดรสส่วนตัวในแพคเกจที่ส่งออกมาจากคอมพิวเตอร์ซึ่งอยู่ในเครือข่ายภายในด้วยแอดเดรสของตัวเอง และแปลงแพคเกจที่วิ่งเข้ามากลับในทำนองเดียวกัน วิธีการนี้ช่วยให้คอมพิวเตอร์หลายเครื่องสามารถใช้แอดเดรสสาธารณะอันเดียวร่วมกัน อย่างไรก็ดี NAT มีจุดอ่อนหลายประการ อันดับแรก การเชื่อมต่อจากโลกภายนอกไม่สามารถกระทำได้อีกต่อไปเนื่องจากอุปกรณ์ NAT ไม่มีทางทราบว่าควรส่งคำร้องขอที่มาจากภายนอกไปยังเครื่องใดที่อยู่ในเครือข่ายภายใน เราจึงต้องแก้ไขปัญหานี้ด้วยการใช้วิธีเทียบพอร์ตและโปรโตคอลดังเช่น uPnP และ NAT-PMP

ช่วงแอดเดรสของ IPv4

คลาส A: 1.0.0.1 ถึง 126.255.255.254

คลาส B: 128.1.0.1 ถึง 191.255.255.254

คลาส C: 192.0.1.1 ถึง 223.225.254.254

คลาส D: 224.0.0.0 ถึง 239.255.255.255 — สงวนไว้สำหรับกลุ่ม multicast

คลาส E: 240.0.0.0 ถึง 254.255.255.254 — สงวนไว้

เรื่องราวทั้งหลายยิ่งยุ่งยากมากขึ้นสำหรับแอพพลิเคชันที่ต้องการการอ้างอิง NAT ยังก่อให้เกิดปัญหากับโปรโตคอลที่ฝังไอพีแอดเดรสไว้ เช่น สำหรับระบบ VoIP โดยทั่วไป คอมพิวเตอร์จะคุยกับเซิร์ฟเวอร์ว่า “กรุณาส่งสายที่โทรเข้ามากลับมายังแอดเดรสนี้” ซึ่งเห็นได้ชัดว่าไม่สามารถทำงานได้หากแอดเดรสที่ระบุเป็นแอดเดรสส่วนตัว การแก้ไขปัญหานี้ต้องใช้ตรรกะพิเศษในอุปกรณ์ NAT, โปรโตคอลในการติดต่อสื่อสารและอาจต้องการแอพพลิเคชัน ด้วยเหตุผลนี้และเหตุผลอื่น ๆ อีกบางประการ ผู้คนส่วนใหญ่ที่มีส่วนร่วมใน IETF (Internet Engineering Task Force) ไม่ได้ให้ความใส่ใจกับ NAT มากนัก นอกจากนี้ แม้ว่าขณะนี้จะมีการใช้ NAT กันอย่างแพร่หลายแล้วก็ตาม เราต้องยังคงต้องการไอพีแอดเดรสใหม่จำนวน 170 ล้านแอดเดรสในแต่ละปี

ในช่วงต้นของยุคอินเตอร์เน็ต องค์กรหลายแห่งได้รับบล็อคแอดเดรสขนาดใหญ่มาก เช่น ไอบีเอ็ม, Xeron, HP, DEC, แอปเปิ้ลและ MT ต่างได้รับบล็อค “คลาส A” เป็นจำนวนเกือบ 17 ล้านแอดเดรส (ดังนั้น HP ซึ่งได้ซื้อกิจการ DEC จึงมีแอดเดรสมากกว่า 33 ล้านแอดเดรส) อย่างไรก็ดี การเรียกคืนบล็อคเหล่านี้อาจต้องใช้ความพยายามอย่างมหาศาลและช่วยให้เรายืดอายุการขาดแคลนไอพีแอดเดรสออกไปได้ไม่กี่ปีเท่านั้น ซึ่งเราสามารถใช้ทั้งบล็อกคลาส A ภายในช่วงเวลา 5 สัปดาห์เท่านั้น มันเป็นปัญหาที่ชัดแจ้งอย่างแน่นอนว่าจำนวนไอพีแอดเดรสที่ว่างอยู่คงจะหมดในเร็ววันโดยเฉพาะอย่างยิ่งเมื่ออุปกรณ์สมัยใหม่ดังเช่น โทรศัพท์ VoIP ต่างก็เชื่อมต่อเข้าหาอินเตอร์เน็ต ดังนั้นในช่วงต้นทศวรรษ 1990 ทาง IETF จึงได้เริ่มต้นโครงการ IP ยุคถัดไป

แอดเดรสที่ใหญ่ขึ้น

โครงการ IPng ก่อกำเนิด IPv6 ในปี 1995 นอกจากแอดเดรสต้นทางและปลายทางกับข้อมูลที่จำเป็นอื่น ๆ แล้ว แพคเกจ IP แต่ละอันประกอบด้วยหมายเลขเวอร์ชัน โดยแพคเกจ IP ในปัจจุบันคือเวอร์ชัน 4 และเวอร์ชันแรกที่ใช้สำหรับโปรโตคอลใหม่คือ 6 ดังนั้นเราจึงเรียก IP ตัวเก่าว่า IPv4 และ IP ตัวใหม่ว่า IPv6 ซึ่ง IPv6 จะจัดหาจำนวนแอดเดรสมากกว่าเดิมอย่างมหาศาล 40 บิตช่วยให้เรามีไอพีแอดเดรสให้ใช้มากกว่าล้านล้านแอดเดรส และหากใช้ 48 บิต เราจะได้เพิ่มอีก 281 ล้านล้านแอดเดรส คราวนี้ ทาง IETF ได้มองการณ์ไกลมาก แทนที่จะใช้ 40, 48 หรือ 64 บิต ทาง IETF ได้ตัดสินใจใช้ 128 บิตซึ่งทำให้เรามีแอดเดรสให้ใช้อย่างมหาศาลเท่ากับ

340,282,366,920,938,463,463,374,607,431,768,211,456

เพื่อให้เข้าใจง่ายขึ้น ในปัจจุบันมีเด็กเกิดใหม่จำนวน 130 ล้านคนต่อปี ถ้าหากอัตราการเกิดยังคงอยู่ในระดับนี้จนกระทั่งพระอาทิตย์ดับสูญในอีก 5 พันล้านปี และผู้คนมีอายุเฉลี่ย 72 ปี ผู้คนสามารถใช้ IPv4 ทุกวินาทีได้ถึง 53 รอบชีวิต ทำให้ครั้งนี้คงไม่มีใครมากล่าวโทษ IETF เรื่องการขาดแคลน IP อีกต่อไป

โดยทั่วไป เราเขียนแอดเดรส IPv4 ด้วยการแบ่ง 8 บิตสี่ค่าด้วยเครื่องหมายจุด เช่น 192.0.2.31 สำหรับ IPv6 เราเขียนแอดเดรส 16 บิตแปดค่าโดยใช้เครื่องหมายโคลอนแบ่งและเขียนค่า 16 บิตในรูปแบบเลขฐานสิบหก (ซึ่งก็คือตัวเลขและอักขระ A-F) เช่น 2001:db8:31:1:20a:95ff:fef5:246e เนื่องจากไม่ใช่เรื่องผิดปกติที่จะเห็น IPv6 มีเลขศูนย์จำนวนมาก จึงมีข้อกำหนดว่าเราสามารถละทิ้ง ไม่เขียนค่าศูนย์เหล่านี้ลงไปได้ ดังนั้น 2001:db8:31:0:0:0:0:1 จะกลายเป็น 2001:db8:31::1 และลูปแบ็คแอดเดรสของ IPv6 0:0:0:0:0:0:0:1 จะกลายเป็น ::1

การปรับตั้งโดยอัตโนมัติ

แม้ว่าโดยทั่วไปแล้ว IPv6 ยังคงเป็น IP และทำงานเกือบเหมือนกับ IPv4 โปรโตคอลตัวใหม่มีความแตกต่างจาก IPv4 หลายทาง เมื่อใช้ IPv4 เราต้องการเซิร์ฟเวอร์ DHCP เพื่อแจ้งแอดเดรสให้ทราบหากไม่ต้องการตั้งคอนฟิกุเรชันเอง วิธีนี้ทำงานได้ดีหากมีเซิร์ฟเวอร์ DHCP เพียงตัวเดียว เพราะหากมีเซิร์ฟเวอร์หลายตัว มันจะจัดส่งข้อมูลที่ขัดแย้งกัน และยังมีประเด็นที่เครื่องเดิมอาจไม่ได้รับแอดเดรสเดิมเมื่อมีการบูตเครื่องแล้วร้องขอแอดเดรสจาก DHCP ใหม่

เมื่อใช้ IPv6 เราแทบไม่มีความจำเป็นต้องใช้ DHCP เพราะมีกลไกที่เรียกว่าการปรับแต่งคอนฟิกุเรชันแบบไร้สถานะ (stateless autoconfiguration) เราเตอร์จะส่งข้อมูล “โฆษณาเราเตอร์ (router advertisement, RA)” ที่ประกอบด้วย 64 บิตชุดบนของแอดเดรส IPv6 ออกไป ต่อจากนั้น โฮสต์จะสร้าง 64 บิตชุดล่างด้วยตัวเองเพื่อก่อให้เกิดแอดเดรสที่สมบูรณ์

64 บิตชุดล่างของแอดเดรส IPv6 ถูกสร้างขึ้นมาจากแอดเดรส MAC ด้วยการบิดบิตและเพิ่มบิต ff:fe ตรงกลางเข้าไปเหมือนเช่นของเดิม ดังนั้นแอดเดรส MAC ของอีเธอร์เน็ต 00:0a:95:f5:24:6e จะกลายเป็น 20a:95ff:fef5:246e ตรงส่วน 64 บิตชุดล่างของแอดเดรส IPv6 หรือที่เราเรียกในภาษาของ IPv6 ว่า รูปพรรณอินเตอร์เฟซ (interface identifier) เมื่อทำงานแบบนี้ หากเราเตอร์ยังคงส่งข้อมูลส่วนหน้าเดิมสำหรับ 64 บิตชุดบน โฮสต์จะได้รับไอพีแอดเดรส IPv6 เดิมเสมอโดยไม่ต้องมีการตั้งค่าบนโฮสต์หรือเซิร์ฟเวอร์ DHCP ในอีกทางหนึ่ง โฮสต์อาจสร้างแอดเดรส IPv6 แบบสุ่ม ทำให้เครื่องอื่นบนอินเตอร์เน็ตมองไม่เห็นแอดเดรส MAC ของตนเอง วินโดวส์ใช้แอดเดรสแบบนี้สำหรับการส่งข้อมูลออกไปเพื่อสร้างความเป็นส่วนตัว ในขณะที่ระบบปฏิบัติการตัวอื่นสามารถสร้างแอดเดรสชั่วคราว (มีการสร้างใหม่ทุก 24 ชั่วโมง) ได้เช่นกันแต่ต้องมีการตั้งค่าก่อน

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

แม้ว่าโปรโตคอล DHCPv6 (DHCP เวอร์ชัน IPv6) สามารถจัดส่งแอดเดรส IPv6 ในทำนองเดียวกับเซิร์ฟเวอร์ DHCP IPv4 จัดส่งแอดเดรส IPv4 ออกไป แต่ขณะนี้ยังไม่เห็นเซิร์ฟเวอร์ DHCPv6 หรือไคลเอนท์ DHCPv6 ตัวใดที่มีความสามารถนี้ สำหรับ IPv6 เรามักใช้ DHCP เพื่อแจกจ่ายข้อมูลเพิ่มเติม เช่น แอดเดรสของเซิร์ฟเวอร์ DNS ซึ่งอันที่จริง เราจะสามารถใช้การโฆษณาของเราเตอร์เพื่อทำงานนี้ได้ในอนาคตอันใกล้ อันทำให้ความจำเป็นที่ต้องมี DHCP ใน IPv6 ลดน้อยลงไป

แอดเดรสชนิดพิเศษ

นอกจากแอดเดรส global unicast (แอดเดรสสาธารณะที่ทำการเราต์ได้) ที่ได้กล่าวมาแล้ว IPv6 ยังมีแอดเดรสชนิดอื่น ๆ ที่น่าให้ความสนใจดังต่อไปนี้

Link local : เราใช้แอดเดรส link local สำหรับการติดต่อสื่อสารบนเครือข่ายย่อยทางกายภาพหรือทางตรรกะเดี่ยว เช่น อีเธอร์เน็ต แอดเดรสแบบนี้ขึ้นต้นด้วย fe80 และมักใช้สำหรับการจัดการภายในของ IPv6

Site local : IPv6 มีแอดเดรสส่วนตัวดังที่ระบุใน RFC 1918 ของ IPv4 เช่นกัน อย่างไรก็ดี IETF พบว่าปัญหาว่าหลายองค์กรใช้แอดเดรสชนกัน ดังนั้น IETF จึงได้สร้างแอดเดรส “ไซต์ท้องถิ่นที่เป็นเอกเทศ” ซึ่งทุกคนสามารถเลือกใช้แบบสุ่มจากบล็อค IPv6 ที่ขึ้นต้นด้วย fd.

Multicast : แอดเดรส multicast คือแอดเดรสกลุ่ม ดังนั้น ทุกแพคเกจที่ไปยังแอดเดรส multicast ทุกสมาชิกในกลุ่มจะได้รับทั้งหมด แอดเดรส multicast ขึ้นต้นด้วย ff และแอพพลิเคชันสามารถนำไปใช้เพื่อส่งข้อมูลเดียวกันไปยังหลายเครื่องในเวลาเดียวกัน เช่น การถ่ายทอดวีดีโอสด การปรับตั้งค่าแบบอัตโนมัติ

เมื่อทำงานบนอีเธอร์เน็ตหรือ WiFi โฮสต์ IPv4 ใช้การกระจายข่าวสำหรับฟังก์ชันค้นพบ (discovery) เช่น เพื่อให้สามารถส่งแพคเกจบนอีเธอร์เน็ต เราต้องทราบแอดเดรส MAC ปลายทาง ดังนั้น IPv4 จึงเพียงแค่กระจายข่าวเพื่อถามว่า “ใครมีแอดเดรส 192.0.2.31” ให้แก่ทุกเครื่องบนเครือข่าย ในอีกทางหนึ่ง IPv6 จะส่งแพคเกจเหล่านี้ไปยังแอดเดรส multicast เช่นกัน ซึ่งมีเพียงโฮสต์ IPv6 ที่คอยฟังคำร้องขอสามารถเห็นแพคเกจเหล่านี้ บางระบบ อีเธอร์เน็ตอาจละเลยแพคเกจเหล่านี้ และยังมีความเป็นไปได้ที่สวิตช์จะกรองแพคเกจเหล่านี้ออกไป

ความปลอดภัยของ IPv6

ผู้คนกล่าวขานมากมายว่า IPv6 มีความปลอดภัยมากกว่า IPv4 ซึ่งเป็นความจริงบางประการเท่านั้น ข่าวดีคือ เนื่องจากแอดเดรส IPv6 มีจำนวนมาก การสุ่มสแกนระบบที่มีช่องโหว่เกือบจะเป็นไปไม่ได้ การติดเชื้อของระบบวินโดวส์ที่มีการแพร่กระจายเร็วกว่าการอัพเดตตัวเองเพื่อแก้ไขปัญหาซึ่งเกิดขึ้นมาในอดีตแทบจะเป็นไปไม่ได้เมื่อใช้ IPv6 แม้จะมีโฮสต์ที่ติดเชื้อเป็นจำนวนพันล้าน, มีการสแกนแอดเดรส IPv6 เป็นจำนวนนับล้านเครื่องต่อวินาที ก็ยังคงต้องใช้เวลาหลายร้อยล้านปีเพื่อสแกนช่วงแอดเดรส IPv6 ที่จัดสรรให้ผู้ให้บริการอินเตอร์เน็ตในขณะนี้ซึ่งเป็นเพียง 0.01 เปอร์เซ็นต์ของทั้งหมด อย่างไรก็ดี แม้ว่าการสแกนโดยมีเป้าหมายที่ชัดเจนจะไม่ง่ายดายนัก แต่ก็เป็นไปได้ ดังนั้นเรายังคงต้องให้ความสนใจกับเรื่องความปลอดภัยดังที่เคยใช้กับ IPv4

เพื่อให้ระบบมีความปลอดภัยมากยิ่งขึ้น จึงมีแนวความคิดที่บังคับให้ IPv6 ต้องสนับสนุน IPsec โดย IPsec ทำหน้าที่เข้ารหัสระดับแพคเกจทำให้สามารถใช้กับข้อมูล IP ทุกอย่าง ต่างกับ SSL ที่มีการใช้กันอย่างแพร่หลายในปัจจุบันซึ่งทำงานตรงส่วนบนของ TCP เท่านั้น อย่างไรก็ดี การพัฒนาแอพพลิเคชันให้สนับสนุน IPsec เป็นเรื่องยากด้วยเหตุผลหลายประการ ดังนั้นจึงไม่ค่อยมีการนำ IPsec มาใช้มากนักยกเว้นการสร้างเครือข่ายจำลองส่วนตัว (VPN, Virtual Private Network) นอกจากนี้แม้ว่ามีการพัฒนา IPsec สำหรับ IPv6 หรืออย่างน้อยก็เพื่อใช้กับ IPv6 เราก็ยังสามารถใช้ IPsec กับ IPv4 ได้เช่นกัน สรุปแล้วเราไม่อาจกล่าวได้เต็มปากว่า IPsec เป็นจุดเด่นเรื่องความปลอดภัยของ IPv6

ดังที่ได้กล่าวมาแล้วว่า โฮสต์ที่สนับสนุน IPv6 จะสร้างแอดเดรส link local สำหรับตัวเองขึ้นมา อันหมายความว่า เราสามารถเข้าถึงโฮสต์ใดก็ตามที่ใช้ IPv6 อยู่ เช่น วินโดวส์วิสต้า, Mac OS X, ลีนุกซ์และ BSD ส่วนใหญ่ ซึ่งเชื่อมต่อกับเข้าอีเธอร์เน็ตเดียวกันแม้ว่าจะไม่มีเราเตอร์ IPv6 ส่งโฆษณาเราเตอร์ออกไป การตรวจการจราจรของ IPv6 ที่มีการปรับแต่งแบบอัตโนมัติหรือการสร้างค้นหาแอดเดรส link local ที่เกิดจากแอดเดรส MAC ซึ่งพบในข้อมูลที่รับส่งไปมาอยู่ ทำให้การค้นหาแอดเดรสที่ต้องการเป็นเรื่องง่าย นอกจากนี้ วิธีง่ายที่สุดในการส่ง ping ไปยัง multicast แล้วดูว่าได้รับอะไรกลับมาไม่สามารถใช้กับวินโดวส์ได้เพราะมีการบล็อกไว้ ส่วน BSD, Mac, ลีนุกซ์ จะส่งข้อมูลกลับมาให้ โดยคำสั่งที่ใช้สำหรับระบบเหล่านี้คือ

ping6 -I interface-name ff02::1

เราใช้คำสั่ง ifconfig เพื่อหาชื่ออินเตอร์เฟซ สำหรับระบบที่มีการพัฒนา IPv6 มาจาก KAME เช่น ตระกูล BSD และ MacOS คำสั่ง ping6 ยังมีตัวเลือกพิเศษเพื่อใช้ดูข้อมูลเพิ่มเติม เราสามารถใช้คำสั่ง man ping6 เพื่อศึกษารายละเอียดเพิ่มเติมเกี่ยวกับตัวเลือกพิเศษเหล่านี้

เมื่อใช้ IPv4 เราพบเห็นการใช้อุปกรณ์ NAT ที่ทำหน้าที่เสมือนไฟร์วอลล์อย่างง่ายซึ่งกีดกั้นเซสชันที่ไหลเข้ามา (แม้ว่าจะมีวิธีสั่ง NAT ให้อนุญาตได้เช่นกัน) แต่เมื่อใช้ IPv6 เรามีแอดเดรสสาธารณะมากมายให้เลือกใช้ ดังนั้นจึงแทบไม่เห็นการใช้ NAT ในระบบ IPv6 และไม่มีการปกป้องเซสชันที่ไหลเข้ามาแบบอัตโนมัติ

การขาดแคลนไฟร์วอลล์พื้นฐานที่มาพร้อม NAT แบบอัตโนมัติเป็นเพียงจุดเริ่มต้นเท่านั้น ซอฟต์แวร์ไฟร์วอลล์ส่วนมากสนับสนุน IPv4 เท่านั้นและไม่รู้จักแพคเกจ IPv6 แต่อย่างใด ไฟร์วอลล์ที่อยู่ภายในวินโดวส์และ Mac OS ไม่มีปัญหานี้ แต่ถ้าเราใช้ไฟร์วอลล์อื่นบนลีนุกซ์หรือ BSD (หรือไฟร์วอลล์ที่ทำงานผ่านแถวคำสั่งบน Mac OS X) ต้องแน่ใจว่ามันทำงานบน IPv6 สำหรับ BSD หรือลีนุกซ์ ตัวเลือกที่ดีตัวหนึ่งคือ pf ซึ่งสนับสนุนทั้ง IPv4 และ IPv6 รวมทั้งอนุญาตให้บังคับใช้กฎต่าง ๆ กับทั้ง IPv4 และ IPv6 แตกต่างกับ iptables, ipfw และ ipf ถ้าหากเรามีเราเตอร์หรือเกตเวย์ที่สนับสนุน IPv6 เราควรแน่ใจว่ามันมีการกรอง IPv6 ที่อนุญาตให้มีการส่งข้อมูลออกไปและรับกลับมา แต่ไม่รับการเชื่อมต่อที่เริ่มจากภายนอกซึ่งทำหน้าที่เหมือนกับการกรองของ NAT ในระบบ IPv4

การใช้ IPv6

การออกแบบโปรโตคอลใหม่เป็นเรื่องไม่ยากนัก สิ่งที่ยากกว่าคือการชักจูงให้นำไปใช้ การนำโครงสร้างพื้นฐานใหม่ไปใช้ทั้งหมดหรือการปรับเปลี่ยนจาก IPv4 ไปเป็น IPv6 สำหรับอินเตอร์เน็ตในปัจจุบันเป็นไปไม่ได้ เพื่อหลีกเลี่ยงประเด็นเหล่านี้ให้มากที่สุดเท่าที่จะเป็นไปได้ IETF ได้พัฒนาเทคนิคในการเปลี่ยนผ่านหลายแบบ เทคนิคหนึ่งที่สำคัญที่สุดคือ dual stack และ tunneling โดย dual stack เป็นเพียงแค่สัญลักษณ์ที่บอกให้ทราบว่าโฮสต์แต่ละข้างสามารถใช้ได้ทั้ง IPv4 และ IPv6 เพื่อให้สามารถคุยกับโฮสต์ IPv4 ด้วย IPv4 และโฮสต์ IPv6 ด้วย IPv6 สำหรับ tunneling หมายความว่า เมื่อมีการส่งแพคเกจ IPv6 ไปบนเครือข่ายที่สนับสนุนเพียง IPv4 เท่านั้น จะมีการนำแพคเกจ IPv6 ไปใส่ภายในแพคเกจ IPv4 เพื่อให้สามารถเคลื่อนที่ภายในเครือข่ายที่สนับสนุน IPv4 เท่านั้น หลังจากนั้น จะมีการนำส่วน IPv4 ออกไปแล้วแพคเกจก็กลับกลายเป็น IPv6 เหมือนแต่เดิม

ระบบปฏิบัติการสมัยใหม่ส่วนใหญ่ได้รับการปรับแต่งให้ใช้ dual stack มาตั้งแต่ต้น ดังนั้นหากมีเราเตอร์ IPv6 ในเครือข่ายท้องถิ่นโฆษณาส่วนหัวของ IPv6 โฮสต์จะสร้างแอดเดรส IPv6 สำหรับตัวเองเพื่อให้สามารถคุยกับอินเตอร์เน็ต IPv6 ในปัจจุบัน ไมโครซอฟต์ได้กำหนดให้วินโดวส์วิสต้าใช้ IPv6 มาตั้งแต่ต้น (เราสามารถเปิดปิดด้วยคำสั่ง ipv6 install และ ipv6 uninstall ใน XP) เราจึงคาดการณ์ว่าจะมีเราเตอร์ที่ใช้กันตามบ้านซึ่งสนับสนุน IPv6 ดังเช่น 802.11n Airport Extreme ของแอปเปิ้ล วางตลาดมากขึ้นในอนาคต

ขอให้เข้าใจว่า ผู้ให้บริการอินเตอร์เน็ตไม่จำเป็นจะต้องสนับสนุนโปรโตคอลตัวใหม่เพื่อให้ใช้ IPv6 ได้ เราเตอร์ที่สนับสนุน IPv6 หรือโฮสต์เองสามารถใช้เทคนิค tunnel เพื่อเชื่อมต่อกับอินเตอร์เน็ต IPv6 โดยมีเทคนิคการทำ tunnel มากมาย แต่เทคนิคหนึ่งที่นิยมใช้กันมากคือ “ทำด้วยตัวเอง” โดยการกำหนดเส้นทางของแพคเกตที่มี่การทำ tunnel ด้วยตัวเอง และการทำ tunnel 6to4 แบบอัตโนมัติที่ซึ่งโฮสต์หรือเราเตอร์สร้างช่วงแอดเดรส IPv6 จากแอดเดรส IPv4 ของตนเอง เราสามารถทราบว่าเป็นแอดเดรส 6to4 โดยพิจารณาจากแอดเดรสว่าขึ้นต้นด้วย 2002 หรือไม่ เนื่องจากเราสามารถเทียบเคียงแอดเดรส IPv6 ที่สร้างจากเทคนิค 6to4 กับแอดเดรส IPv4 ได้ จึงเป็นการง่ายแก่ระบบที่จะทำ tunnel แพคเกจ IPv6 ที่เกิดจากเทคนิคนี้ไปยังหนทางที่ถูกต้องบนเครือข่าย IPv4 เกตเวย์จะช่วยให้ระบบ IPv6 แท้สามารถสื่อสารกับระบบ 6to4 ได้

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

วินโดวส์วิสต้าและวินโดวส์ XP ที่สนับสนุน IPv6 จะสนับสนุน 6to4 โดยอัตโนมัติเมื่อระบบใช้แอดเดรส IPv4 นอกจากนี้ Airport Extreme ก็ใช้ 6to4 โดยอัตโนมัติด้วยการส่งโฆษณาเราเตอร์ด้วยส่วนหัวแอดเดรส IPv6 แบบ 6to4 เพื่อให้โฮสต์ที่เชื่อมต่อเข้ามาใช้แอดเดรส IPv6 และ tunnel ด้วย 6to4 ยังเป็นการง่ายที่จะเปิดใช้ 6to4 บน Mac OS X และ BSD/Linux

ระบบที่เชื่อมต่อแบบ IPv6 ตัดสินใจว่าจะใช้ IPv4 หรือ IPv6 กับปลายทางด้วยการปรึกษากับ DNS แม้ว่าการสื่อสารบนอินเตอร์เน็ตต้องใช้แอดเดรส แต่เรามักทำงานกับชื่อโดเมนเป็นหลักเพราะการจดจำแอดเดรสเป็นเรื่องยากกว่าการจำชื่อโดเมน DNS ดูแลเรื่องความแตกต่างด้วยการมีเรคอร์ด A ที่เก็บแอดเดรส IPv4 ซึ่งสัมพันธ์กับชื่อที่ระบุเพิ่มอีกอย่างน้อยหนึ่งเรคอร์ด ถ้าหากระบบมีแอดเดรส IPv6 เช่นกัน DNS จะมีเรคอร์ด AAAA เพิ่มขึ้นมา (A สี่ตัว) โฮสต์ที่มีเพียงการเชื่อมต่อแบบ IPv4 จะมองข้ามเรคอร์ด AAAA ในขณะที่โฮสต์ที่สนับสนุน dual stack จะถามหาเรคอร์ด A และ AAAA จาก DNS แล้วเลือกเชื่อมต่อไปยังปลายทางแบบ IPv6 หากเป็นไปได้ หรือใช้ IPv4 หากไม่มีเรคอร์ด AAAA ใน DNS หรือเชื่อมต่อแบบ IPv6 ไม่สำเร็จ แอพพลิเคชันหรือระบบปฏิบัติการบางตัวมักจะถามหาเรคอร์ด AAAA เมื่อมีการเปิดใช้ IPv6 อยู่เสมอ ซึ่งอาจเกิดปัญหากับ DNS บางตัวที่จะแจ้งว่าเกิดความผิดพลาดกลับมา ในกรณีเช่นที่ว่านี้ การเปิด IPv6 ช่วยให้การเล่นเว็บทำได้เร็วขึ้น

เราสามารถตรวจสอบว่าคอมพิวเตอร์ที่ใช้อยู่กำลังเชื่อมต่อแบบ IPv6 หรือไม่ด้วยการเชื่อมต่อไปยัง www.kame.net (KAME คือโครงการของญี่ปุ่นที่สร้างเครือข่าย IPv6 สำหรับ BSD และ Mac OS) หรือ www.apinic.net เราจะเห็นเต่าซึ่งเป็นสัตว์นำโชคเต้นหากกำลังเชื่อมต่อแบบ IPv6 ส่วน APNIC ทำหน้าที่จ่าย IP แอดเดรสในภูมิภาพเอเชียแปซิฟิค โดยจะแสดง IP แอดเดรสของเรา (IPv4 หรือ IPv6) ตรงส่วนบนซ้ายของเว็บไซต์ Internet Explorer บนวินโดวส์, Safari บน Mac OS X 10.4, Firefox บนวินโดวส์, Linux และ BSD จะใช้ IPv6 หากระบบมีให้ใช้ แต่ Firefox บน Mac จะปิดการใช้งาน IPv6 ใน about:config

IPv6 และอนาคตของเครือข่ายภายในบ้าน

แม้ว่าการปรับตั้งอัตโนมัติทำงานแตกต่างกับ DHCP อย่างมาก ในทางปฏิบัติ IPv6 ทำงานในเครือข่ายประจำบ้านเหมือนกับ IPv4 อย่างมาก โดยคอมพิวเตอร์และอุปกรณ์อื่น ๆ ได้รับแอดเดรสจากเราเตอร์, โมเด็มหรือเกตเวย์โดยอัตโนมัติเพื่อให้สามารถเชื่อมต่อกับอินเตอร์เน็ตโดยไม่ต้องมีการปรับแต่งใด ๆ อย่างไรก็ดี ไฟร์วอลล์ทำงานแตกต่างไปเล็กน้อยเนื่องจากเมื่อใช้ IPv4 ผู้คนส่วนมากไม่มีทางเลือกที่จะทำให้เครือข่ายเปิดกว้างอย่างเต็มที่

เมื่อเริ่มมีการนำ IPv6 มาใช้ เราอาจจะเห็นไฟร์วอลล์แบบใหม่ที่เปิดโอกาสให้มีการกีดกั้นบริการหรืออุปกรณ์ในเครือข่าย IPv6 ประจำบ้านได้อย่างละเอียดแทนที่จะกีดกั้นการเชื่อมต่อเข้ามาหรืออนุญาตทุกอย่างดังที่เราเห็นในเราเตอร์ IPv6 ประจำบ้านรุ่นแรกในปัจจุบัน จำนวนแอดเดรสที่มีอยู่มากมายมหาศาลก่อให้เกิดความเป็นไปได้ที่จะมีเครือข่ายย่อยแยกต่างหากสำหรับงานแต่ละประเภทซึ่งจะมีประโยชน์เมื่อมีอุปกรณ์เชื่อมต่อกับเครือข่ายมากขึ้น IETF กำลังทำงานกับส่วนขยายเรื่อง mobility และ multihoming ให้กับ IPv6 ซึ่ง mobility หมายความว่า เราสามารถย้ายจากเครือข่ายหนึ่งไปยังอีกเครือข่ายหนึ่งในขณะที่ยังคงได้รับไอพีแอดเดรสเดิม ดังนั้นการโทรศัพท์ด้วย VoIP สามารถเริ่มต้นจากเครือข่ายภายในบ้าน, ย้ายไปยังบริการไร้สายแล้วจบลง ณ เครือข่ายที่สำนักงาน ส่วน multihoming หมายถึง การเชื่อมต่อกับผู้ให้บริการอินเตอร์เน็ตมากกว่าหนึ่งราย เมื่อการเชื่อมต่ออันใดอันหนึ่งล้มเหลว การสื่อสารจะย้ายไปยังจุดเชื่อมต่ออื่นโดยอัตโนมัติ

ส่งท้าย

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

จากบทความเรื่อง “Everything you need to know about IPv6” โดย Iljitsch van Beijnum เว็บไซต์ http://arstechnica.com

บทความที่เกี่ยวข้อง

  • ไม่พบบทความที่เกี่ยวข้อง

 

 

Reader:3580

Comments

2 Responses to “ถอดรหัสทุกสิ่งที่คุณควรรู้เกี่ยวกับ IPv6”
  1. Love100 says:

    กว่าจะถึงเวลานั้น ผมคงไม่ได้อยู่ในโลกนี้แล้ว ล่ะ หุๆๆ

  2. Love100 says:

    ขอบคุณมากนะครับที่นำเรื่องดีๆมาเล่าสู่กันฟัง

Leave a Reply

ค้นหาข้อมูล

RSS QuickPC : Games

RSS QuickPC : IT-News

Meta