วันพฤหัสบดีที่ 7 มิถุนายน พ.ศ. 2555

การเซ็ต IPv6 แบบ 6to4 ให้ server

รับกระแส World IPv6 Launch Day ที่เพิ่งมีไปเมื่อวาน (6/6/2012) ซึ่งแปลว่าต่อจากนี้จะเริ่มมีการให้บริการ IPv6 ขนานไปกับ IPv4 มากขึ้น ผู้ที่ต้องตื่นตัวก่อนคือผู้ให้บริการต่างๆ บน Internet นั่นเอง ที่ต้องเตรียมพร้อมรับมือกับมัน (อย่างน้อยก็แสดงให้เห็นว่าเราไม่ตกยุค) ส่วนรายละเอียดว่าทำไมเราต้องเปลี่ยนจาก IPv4 มาเป็น IPv6 ขอให้อ่านจาก http://www.blognone.com/topics/ipv6 นะครับ ในที่นี้ขอพูดถึงประเด็นเดียวคือ เมื่อเรามี server ที่ให้บริการบนเครือข่าย IPv4 อยู่ จะทำอย่างไรให้สามารถบริการ IPv6 ได้
ถ้าเป็นก่อนนี้จะวุ่นวายน่าดูเพราะต้องทำ tunnel ไปยัง IPv6 broker ต่างๆ แต่ตอนนี้มีเทคนิคที่เรียกว่า 6to4 โดยให้ IPv6 encapsulate ไปกับ IPv4 เลย โดยใช้ protocol 41 ซึ่งการตั้งค่าจะเป็นแบบอัตโนมัติ คือไม่ต้องไปหา tunnel ให้วุ่นวาย โดยเมื่อเรามี IPv4 แล้ว เราจะได้รับการจอง subnet ของ IPv6 ไว้ช่วงหนึ่งโดยอัตโนมัติ

สิ่งที่ต้องเตรียม

  • server ที่มี IP จริง (global IP) IP แบบ private ใช้ไม่ได้ อ่อ dynamic IP ก็ไม่ได้นะครับ
  • โปรแกรม ipv6calc (ติดตั้งบน debian ได้โดยสั่ง apt-get install ipv6calc)

วิธีการ

  • แปลงที่อยู่ IPv4 เป็น IPv6 ด้วย ipv6calc โดยสมมติว่า IPv4 คือ 202.183.164.17
    # ipv6calc --quiet --action conv6to4 202.183.164.17
    2002:cab7:a411::
  • แก้ไขไฟล์ /etc/network/interfaces โดยเพิ่มเนื้อหาตามนี้เข้าไป
    auto tun6to4
    iface tun6to4 inet6 v4tunnel
            address 2002:cab7:a411::1
            netmask 16
            gateway ::192.88.99.1
            endpoint any
            local 202.183.164.17
    ตรง 2002:cab7:a411::1 มาจาก ipv6calc โดยเพิ่มเลข 1 ต่อท้ายเข้าไป ส่วน local 202.183.164.17 ก็คือ IPv4 ปกติของ server เรา และ gateway ::192.88.99.1 ไม่ต้องแก้นะครับ จะเป็น anycast address สำหรับรับส่ง packet กับ 6to4 relay router ที่ใกล้ที่สุดซึ่งจะมีกระจายอยู่ทั่วโลก
  • เริ่มใช้งานโดยสั่ง
    # ifup tun6to4
  • ทดสอบโดยสั่ง
    # ping6 google.com
  • ถ้าใช้ไม่ได้อาจจะเกิดจาก firewall ในเครื่องเราเองที่ปกติจะไม่รับ protocol 41 ให้แก้โดยสั่ง
    # iptables -I INPUT -p 41 -j ACCEPT
    # iptables -I OUTPUT -p 41 -j ACCEPT
    แล้วลองทดสอบใหม่ ถ้าใช้ได้ก็เอาไปเพิ่มใน firewall script ของเรา เช่นผมใช้ ufw ก็เพิ่ม -I INPUT -p 41 -j ACCEPT และ -I OUTPUT -p 41 -j ACCEPT ไว้ที่ /etc/ufw/before.rules ก่อนหน้าบรรทัด COMMIT
  • แต่ถ้าใช้ไม่ได้เพราะ firewall ของ NOC ไม่ forward protocol 41 มาให้ ก็ต้องคุยกับผู้ให้บริการให้เปิดรับ protocol 41 ด้วย ปกติไม่เคยเจอปัญหานี้ที่ผู้ให้บริการทั่วไป แต่ถ้าภายในองค์กรอาจจะมีปัญหานี้ได้
  • ทดสอบการใช้บริการต่างๆ ผ่าน IPv6 ในที่นี้เราต้องใช้ IPv6 จากเครื่อง client ได้ก่อน
    เช่น เปิด browser ไปยัง url http://[2002:cab7:a411::1] หรือ ssh 2002:cab7:a411::1
  • ตรวจสอบบริการต่างๆ ให้รองรับ IPv6 ตรวจสอบการตั้งค่า firewall ให้รองรับ IPv6
  • ถ้ามั่นใจแล้วก็เพิ่ม record AAAA 2002:cab7:a411::1 ไปที่ DNS ของเราได้เลย เพื่อให้ผู้ใช้ที่ใช้ IPv6 ได้ สามารถติดต่อกับ site ของเราผ่าน IPv6 ได้โดยตรง
 ดูเพิ่มเติม : http://wiki.debian.org/DebianIPv6

ไม่มีความคิดเห็น :

โพสต์ความคิดเห็น