IEEE Explore Services and IPv6

หลายวันก่อน (2016-06-28) คุณวันชัย พบปัญหาการเข้าใช้งาน web ieeexplore.ieee.org

p1

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

แต่ครั้งนั้น อาจารย์ของภาควิชาวิศวกรรมไฟฟ้า ไม่สามารถดาวน์โหลดได้ จากภายในเครือข่ายของภาคฯเอง และ ที่แปลกไปกว่านั้นก็คือ ถ้าเปลี่ยนไปใช้งานเครื่องคอมพิวเตอร์ซึ่งอยู่ในเครือข่ายของภาคฯเช่นเดียวกัน แต่ใช้ระบบปฏิบัติการ Windows XP กลับใช้งานได้

หลังจากผ่านการตรวจสอบ 2-3 ขั้นตอนก็ได้ข้อสรุปว่า ปัญหาที่เกิดขึ้นก็คือ จากเดิมทีที่เครือข่ายของมหา’ลัย ใช้งาน IPv4 ในการเข้าถึงเครือข่ายของ IEEE (สำหรับในกรณีนี้ก็คือ ieeexplore.ieee.org) ตอนนี้ เมื่อเครือข่ายของ มหาวิทยาลัยสงขลานครินทร์ พร้อมที่จะให้บริการ IPv6 เครื่องคอมพิวเตอร์ ซึ่งส่วนใหญ่พร้อมที่จะใช้ IPv6 อยู่แล้ว ก็จะเปลี่ยนไปใช้ IPv6 สำหรับการติดต่อกับเครือข่ายปลายทาง

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

อย่างไรก็ตาม สำหรับกรณีนี้ บริการของ IEEExplore และ Academic Journals อีกจำนวนมากซึ่งมหาวิทยาลัยสงขลานครินทร์เป็นสมาชิกอยู่ (ซึ่งอาจจะเป็นสมาชิกโดยตรง หรือโดยอ้อมผ่านทาง UniNet/สกอ.) ไม่ได้เป็นบริการที่เปิดแบบ public ให้ใครๆก็สามารถเข้าถึงข้อมูลได้ทุกอย่าง ข้อมูลบางอย่าง เช่น ไฟล์ของบทความ จะดาวน์โหลดได้เฉพาะสมาชิกเท่านั้น ถ้าเป็นสมาชิกแบบบุคคล วิธีการที่ใช้ในการยืนยันตัวตน ก็คือการ login โดยใช้ username และ password แบบเดียวกับที่ใช้กับบริการบนเว็บอื่นๆทั่วไป แต่สำหรับสมาชิกแบบ “สถาบัน” แบบที่มาหวิทยาลัยสงขลานครินทร์เป็นอยู่ แทนที่จะต้องให้ นักศึกษาและบุคคลากร แต่ละคนจะต้องมีแอคเคาท์ เป็นของตัวเอง วิธีการที่ง่ายกว่าก็คือ ใช้หมายเลข IP เป็นตัวระบุ โดยสถาบันที่เป็นสมาชิก ก็จะต้องแจ้งไปทางผู้ให้บริการว่า หมายเลข IP ใด หรือ ช่วงใดบ้างที่เป็นของสถาบันนั้นๆ

แน่นอนว่าก่อนหน้านี้ หมายเลข IP ที่มหาวิทยาลัยสงขลานครินทร์แจ้งไปจะมีเฉพาะ IPv4

และแน่นอนว่าก่อนหน้านี้ไม่มีใครแจ้งปัญหาว่าสามารถดาวน์โหลดไฟล์จาก IEEExplore ไม่ได้ … เพราะเครือข่ายส่วนใหญ่ใน มหา’ลัย ใช้งานได้เฉพาะ IPv4

[[

ซึ่ง … อาจจะทำให้ผมตั้งข้อสงสัยขึ้นมาได้ว่า แล้วหน่วยงานบางหน่วยซึ่งใช้งาน IPv6 มาได้นานก่อนหน้านี้ ไม่เคยมีใครมีปัญหาบ้างเลยหรือ หรือจะเป็นเพราะว่าสมาชิกหน่วยงานเหล่านั้นไม่เคยใช้ IEEExplore เลย … แต่เนื่องจากว่า มีคำโบราณกล่าวไว้ … อะไรบางอย่าง…เกี่ยวกับการขว้างงู…และอวัยวะอะไรบางอย่างที่เป็นส่วนเชื่อมต่อระหว่างหัวและลำตัว… ผมก็เลยไม่ได้ตั้งข้อสงสัยใดๆทั้งสิ้นเกี่ยวกับเรื่องดังกล่าว เพราะไม่อยากให้คอของผมมีรู … และผมก็ไม่ชอบงูด้วย!

ย้ำ, ผมไม่ได้ตั้งข้อสงสัยใดๆทั้งสิ้นจริงๆ

EDIT (2016-07-08): ข้อมูลจาก ที่นี่ ทำให้พอเชื่อได้ว่า IEEE เริ่มใช้งาน IPv6 เมื่อประมาณ 2016-06-06 นั่นคือประมาณ 1 เดือนที่แล้ว ดังนั้นปัญหาในการเข้าถึงบริการของ IEEE Explore จากเครือข่ายของ มหาวิทยาลัยสงขลานครินทร์ โดยใช้งาน IPv6 แล้วใช้งานไม่ได้ จึงไม่ได้นานมากอย่างที่ผมคิดตอนแรก
]]

กลับมาที่เรื่องของการใช้งาน IEEExplore ต่อ ปัญหาที่เกิดขึ้นครั้งนี้ เทียบเคียงได้กับการที่ทาง มหาวิทยาลัยแจ้ง IP address ที่มีใช้งานอยู่ให้กับทางผู้ให้บริการไม่ครบ เมื่อเครื่องคอมพิวเตอร์เริ่มใช้งาน IPv6 ได้และพยายามใช้งาน IPv6 ในการติดต่อกับเครื่องที่ให้บริการปลายทาง เครื่องที่ให้บริการปลายทาง ตรวจสอบแล้วไม่พบว่า หมายเลข IP address นี้อยู่ในรายการของหมายเลข IP ที่อนุญาตให้เข้าถึงข้อมูลได้ ก็เลยปฏิเสธการเข้าถึงข้อมูล

วิธีการแก้ปัญหา ก็คือแจ้งหมายเลข IPv6 address ที่มหา’ลัยใช้อยู่ไป เพื่อให้ทางผู้ให้บริการอนุญาตให้เครื่องคอมพิวเตอร์ซึ่งใช้หมายเลขเหล่านี้เข้าถึงข้อมูลได้

วันนี้ (2016-07-07)
p2
คุณสงกรานต์ และ หอสมุดคุณหญิงหลงประกาศผ่านกลุ่มของ facebook ว่าสามารถใช้งานบริการของ IEEE ได้แล้วทั้ง IPv4 และ IPv6

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

ถ้าใช้งานไม่ได้ และ เข้าใจ และ สามารถช่วยตรวจสอบให้ได้ว่าขณะนั้นใช้โปรโตคอลใดที่ใช้งานไม่ได้ และ ถ้าเปลี่ยนเป็นอีกโปรโตคอลหนึ่ง สามารถใช้งานได้หรือไม่ … ถ้าทำได้อย่างนั้น ก็จะเป็นการช่วยเหลือผู้ดูแลเครือข่ายเป็นอย่างยิ่ง สมควรที่ได้รับคำขอบคุณและยกย่องจาก sysadmin/netadmin

ถ้าผู้ใช้งาน ใช้งานไม่ได้ ก็ควรเป็นหน้าที่ของ sysadmin/netadmin ของหน่วยงานนั้นๆ เป็นผู้ตรวจสอบและวิเคราะห์ว่าปัญหาเกิดขึ้นจากอะไร การปล่อยให้ผู้ใช้งาน ซึ่งส่วนใหญ่อาจจะคุ้นเคยแค่การใช้งานแอพลิเคชั่นโดยทั่วไป ต้องมายุ่งเกี่ยวกับ enable/disable v4 protocol ซึ่งจะต้องแก้ไข registry ของระบบ (ภายใต้ข้อสมมติฐานที่ว่า ผู้ใช้ส่วนใหญ่ใช่ Windows) เป็นเรื่องที่ อาจจะผลักภาระให้กับผู้ใช้งานมากเกินไป และ ถึงแม้ผู้ใช้จะยินดีทำ แต่ข้อผิดพลาดที่อาจจะเกิดขึ้นได้ จะส่งผลที่ทำให้เกิดปัญหาที่ยากต่อการตรวจสอบในภายหลัง ได้มากกว่าครับ

โอเค คราวนี้กลับมาที่ sysadmin/netadmin ผมคิดว่า การจัดการ disable/enable IPv6/IPv4 protocol โดยเข้าไปยุ่งเกี่ยวกับ registry ของ Windows ไม่น่าจะเป็นปัญหาอะไรสำหรับ ผู้ดูแลระบบ ที่ต้องเผชิญหน้ากับปัญหาในลักษณะนี้เป็นปกติอยู่แล้ว แต่ในนามของผู้ใช้ Linux ซึ่งไม่มีความสามารถในการเข้าถึง registry ของ Windows ผมคิดว่ามีเครื่องมือ ซึ่ง สามารถเรียกใช้งานได้จาก command line ของ Windows เองได้ โดยไม่จำเป็นที่จะต้องไปแก้ไข Windows Registry และสามารถนำมาใช้งานในการตรวจสอบการเข้าถึง IEEExplore สำหรับแต่ละโปรโตคอลได้

เครื่องมือนั้นมี 2 ตัวครับ ก็คือ wget และ grep

เครื่องมือทั้งสองนี้ ถือเป็นเครื่องมือพื้นฐานสำหรับ Linux Distribution หลักๆทั่วไป ที่จะติดตั้งมาให้แล้วสามารถเรียกใช้งานได้เลย โดยไม่จำเป็นจะต้องติดตั้งเพิ่ม ส่วน สำหรับ Windows ก็สามารถ Download ได้จาก

wget — http://gnuwin32.sourceforge.net/packages/wget.htm
grep — http://gnuwin32.sourceforge.net/packages/grep.htm

ผมไม่สามารถตรวจสอบได้ว่า tools ทั้งสองตัวนี้ใช้งานได้จริงสำหรับ Windows ใหม่ๆหรือเปล่า (ตัว tools ทั้งสอง built ตั้งแต่ปี 2008) แต่จาก comment ของ Stack Overflow ที่นี่ ก็น่าพอเชื่อได้ว่าใช้งานได้

การใช้งาน

1. คำสั่ง wget มี option สำหรับบังคับให้ใช้ IPv4 (-4) หรือใช้ IPv6 (-6) สำหรับการติดต่อไปยัง web ปลายทาง
2. ในหน้าแรกของ IEEExplore จะมีข้อความว่า “Prince of Songkla University provided by UniNet” อยู่ในหน้าแรกด้วย ถ้าหากว่าเครื่องคอมพิวเตอร์ที่ใช้ในการดาวน์โหลดใช้ IP ของมหาวิทยาลัย และ ทาง IEEExplore ได้ register หมายเลข IP นั้นเอาไว้แล้ว

ดังนั้น เมื่อใช้คำสั่ง

wget -q -O- -4 http://ieeexplore.ieee.org | grep "Prince of Songkla"

หรือ

wget -q -O- -6 http://ieeexplore.ieee.org | grep "Prince of Songkla"

แล้วได้ข้อความว่า

<h4>Prince of Songkla University provided by UniNet</h4>
ก็แสดงว่า สำหรับ protocol นั้นๆสามารถใช้งานกับ IEEExplore ได้ ถ้าไม่มีข้อความใดๆ ก็แสดงว่ายังใช้งานไม่ได้ครับ

หมายเหตุ: option “-O-” ของ wget จะทำให้ wget แสดงข้อมูลที่ download มาได้ออกทาง standard output ซึ่งในกรณีนี้ก็จะเป็นการส่งต่อให้กับคำสั่ง grep ผ่านทาง pipe “|” ส่วน option “-q” (quiet) ไม่ให้มันแสดง message แสดงสถานะที่มันกำลังติดต่อว่ากำลังทำอะไร และ ดำเนินการไปถึงใหนแล้ว เพราะในกรณีนี้ เราสนใจเฉพาะข้อมูลที่จะ download มาจากเครื่องที่ให้บริการเท่านั้น
ถ้าอยากจะรู้ว่า ในการติดต่อไปยัง IEEExplore ครั้งนั้นๆ เครื่องของเราใช้หมายเลข IP ใดก็สามารถตรวจสอบ โดยใช้คำสั่ง

wget -q -O- -4 http://ieeexplore.ieee.org | grep geoip
wget -q -O- -6 http://ieeexplore.ieee.org | grep geoip

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

wget -q -O- http://ieeexplore.ieee.org | grep geoip

ครับ ถ้าไม่ระบุ protocol ใน option คำสั่ง wget ก็จะใช้ค่าที่กำหนดโดยระบบปฏิบัติการ ว่าจะให้ใช้ protocol ใดก่อนครับ