ผมยังไม่แน่ใจว่าแต่ละ IDC จะ assign IP ให้ในรูปแบบไหน เอาพื้นๆ ทั่วๆ ไปก่อนแล้วกันครับ
IPv4 คิดว่าทุกคนคงรู้จักกันดี มันคือเลข 0-255 ประกอบกัน 4 ชุด คั่นด้วย ‘.’ ซึ่งถ้าแปลงกลับเป็นเลขฐาน 2 มันจะได้ความยาว 32bit พอดี
โดยกาารเขียน IP สำหรับใช้งาน จะมีการระบุขนาดของ subnet ด้วย เช่นตัวเลข /24 หรือ subnet 255.255.255.0 ด้านหลังหมายเลข IP
ตัวอย่างก็เช่น 192.0.2.1/24 หรือ 192.0.2.1 subnet 255.255.255.0
วิธีแปลงกลับจาก /24 เป็น subnet ที่เขียนแบบเดียวกับ IPv4 (255.255.255.0) ก็ให้เขียนเลข 1 เรียงกันจำนวน n ครั้ง แบ่งเว้นวรรคทุกๆ 8 ตัว แล้วเติม 0 ต่อท้ายให้ครบ 32 ตัว
เช่น /24 เขียนได้เป็น 11111111 11111111 11111111 00000000 แล้วแปลงกลับเป็นเลขฐาน 10 ครับ ก็ได้เป็น 255.255.255.0 ถ้าจะวุ่นกว่านี้ก็อาจเป็น /27 /28 มันจะออกมาเป็น .224 .240 ไป
=============================================
มาที่ IPv6 กันบ้าง พื้นฐานมันคือการขยาย ipv4 ออกเป็น 128 bit (เพิ่มจำนวน bit ขึ้น 4 เท่า) ทีนี้ถ้าจะให้เขียนแบบเดียวกับ ipv4 (0-255 คั่นด้วยจุด) มันก็คงไม่ค่อยสนุกเท่าไหร่ ก็เลยเปลี่ยนวิธีเขียนครับ
รูปแบบที่เขียน IPv6 กันจะเป็นเลขฐาน 16 ความยาว 32 หลัก คั่นทุกๆ 4 หลักด้วยเครื่องหมาย ‘:’ (colon) หน้าตาประมาณนี้ 0000:0000:0000:0000:0000:0000:0000:0000
หรือถ้าจะยกตัวอย่าง IP จริงๆ ก็เช่น 2a03:2880:0010:1f02:face:b00c:0000:0025 (ของ facebook) หรือ 2404:6800:800b:0000:0000:0000:0000:0093 (ของ google)
ทีนี้บางทีมันจะดูยาวไป (ให้มานั่งเขียนเต็มๆ ก็ตายพอดี) ทำให้เราสามารถเอาเลข 0 ตัวหน้าของแต่ละชุดออกได้ครับ ก็จะได้เป็น 2a03:2880:10:1f02:face:b00c:0:25 หรือ 2404:6800:800b:0:0:0:0:93
และกรณีที่มี :0:0: ติดๆ กันแบบนี้ สามารถรวบย่อได้อีกนิดนึงครับ เหลือแค่ :: (ไม่ว่าจะมี :0:0: ติดกันกี่ชุด ย่อเหลือแค่ :: ได้เลย) โดยมีกติกาประมาณนี้ครับ
- ใน address สามารถใส่ :: ได้แค่ที่เดียวเท่านั้น
- ต้องย่อในกลุ่มที่ :0:0: อยู่ติดกันยาวที่สุด
- กรณีที่สองกลุ่มยาวเท่ากัน ให้ย่อด้านซ้าย ด้านขวาให้เขียน :0:0: ตามเดิม
อย่างของ ip google ตามตัวอย่างเมื่อกี้ ก็จะสามารถรวบ :0:0:0:0: เหลือแค่ :: ได้เลย ก็จะได้เป็น 2404:6800:800b::93 แค่นี้เองครับ สั้นลงเยอะ วิธีขยายก็คือใส่ 0 กับ : แทรกลงไปให้ครบหลักตาม IPv6 แค่นั้นเอง
IPv6 ก็มี subnet เหมือนกันครับ เรียกว่า prefix length แต่เขียนรูปแบบเดียวเท่านั้นคือ /n แบบเดียวกับ ipv4 เลย ซึ่งอาจจะคำนวณยากกว่า ipv4 หน่อย เพราะมันยาวมาก
แล้วก็จะมีค่าได้ตั้งแต่ 0 ถึง 128 แต่ค่าหลักๆ ที่ใช้กันก็คือ /4 /8 /16 /32 /40 /48 /56 /64 /112 /128 โดยเฉพาะ /64 น่าจะเจอบ่อยที่สุดแล้ว
วิธีจำง่ายๆ ก็คือทุกๆ /16 คือทุกๆ 1 ชุดของ IP ล่ะครับ /64 ก็คือ 4 ชุดแรก
=============================================
วิธีการตั้งค่า IPv6 บน Linux สาย Redhat (CentOS, Fedora, RHEL)
- สำคัญมาก!!! ไฟล์ /etc/sysconfig/network ตรวจสอบว่า NETWORKING_IPV6=yes แล้วยัง ถ้ายังก็แก้ด้วยครับ
- ไฟล์ config อยู่ที่เดิมไฟล์เดิมได้เลยครับ แต่เพิ่มข้อมูลไป ไฟล์จะเก็บอยู่ใน folder /etc/sysconfig/network-scripts/ ชื่อไฟล์ ifcfg-XXXX (แทน XXXX ด้วยชื่อ interface เช่น eth0)
กรณีได้รับ assign static ip มาจาก IDC แล้ว ให้เอา IP+prefix length ไปใส่ใน IPV6ADDR และเอา IP ของ default gw ไปใส่"เพิ่ม"ในไฟล์เมื่อกี้ (/etc/sysconfig/network-scripts/ifcfg-eth0)
IPV6INIT=yes
IPV6ADDR=2401:5700:100:503::1813/64
IPV6_DEFAULTGW=2401:5700:100:503::1
*** สำหรับ IPV6_DEFAULTGW บางครั้ง อาจไม่ต้องใส่ก็ได้นะครับ ถ้า router ในเครือข่ายประกาศตัวเองไว้อยู่แล้ว
กรณีที่เป็น IPv6 auto configuration ผ่าน DHCPv6 เซตแบบนี้ครับ
IPV6INIT=yes
IPV6_AUTOCONF=yes
DHCPV6C=yes
กรณีที่เป็น IPv6 auto configuration ผ่าน SLAAC เซตแบบนี้ครับ
IPV6INIT=yes
IPV6_AUTOCONF=yes
กรณี IDC ไม่แจก ipv6 มาให้ แต่อยากใช้ (ผ่าน 6to4 tunnel) ก็ใช้แบบนี้ครับ
IPV6INIT=yes
IPV6TO4INIT=yes
IPV6_DEFAULTDEV=tun6to4
คิดว่าคงครบแล้ว ส่วนการตั้งค่า DNS ก็ใช้แบบเดิมครับ /etc/resolv.conf ใส่ nameserver เว้นวรรคแล้วตามด้วย IPv6 ของ DNS server (ถ้ามี) ครับ
วิธีทดสอบการใช้งานก็สามารถใช้คำสั่ง ping6/traceroute6 ลักษณะเดียวกับ ping/traceroute ตามปกติได้เลยครับ (แค่เติมเลข 6 ต่อท้ายคำสั่ง)
เช่น
[icez@thz00 ~]$ ping6 www.google.com -c 3
PING www.google.com(2404:6800:800b::68) 56 data bytes
64 bytes from 2404:6800:800b::68: icmp_seq=1 ttl=54 time=100 ms
64 bytes from 2404:6800:800b::68: icmp_seq=2 ttl=54 time=101 ms
64 bytes from 2404:6800:800b::68: icmp_seq=3 ttl=54 time=99.5 ms
— www.google.com ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2101ms
rtt min/avg/max/mdev = 99.584/100.576/101.155/0.750 ms
อะไรประมาณนี้แหละคัรบ