วันเสาร์ที่ 5 เมษายน พ.ศ. 2551

ดรีมบ็อกซ์วีพีเอ็น = foxvpn

foxvpn เป็นโปรแกรม vpn ที่ทำงานได้ในเครื่องดรีมบ็อกซ์ โดยมีคุณสมบัติเด่นๆ คือ


  1. ใช้งานง่าย ด้วยคอนฟิคที่เรียกว่า zero configuration คือไม่ต้องเซ็ทอะไรเลย ก็สามารถทำงานได้
  2. ไม่ต้องโหลด certificate ไม่ต้องทำ user/password พิเศษ
  3. ขนาดเล็ก มีขนาดพื้นฐานเพียง 200kb
  4. เสถียร จากการทดสอบก็ไม่พบปัญหาเรื่องความเสถียรของตัว vpn
  5. ปลอดภัย ด้วยการเข้ารหัสแบบ blowfish

foxvpn สามารถทำงานได้ทั้งในโหมดเซิฟเวอร์และโหมดไคลเอนท์ในตัวเดียวกัน ซึ่งรูปแบบการทำงานพื้นฐานได้แก่

แบบพื้นฐาน 1 เซิฟเวอร์ : 1 ไคลเอนท์

แบบมัลติไคลเอนท์ 1 เซิฟเวอร์ : หลายไคลเอนท์


แบบมัลติเซิฟเวอร์ 1 ไคลเอนท์ : หลายเซิฟเวอร์

แบบผสม หลายเซิฟเวอร์ : หลายไคลเอนท์



เราสามารถประยุกต์ใช้ foxvpn ได้กับทุกแคม (CAM) ทั้งแคมในตระกูล ไคล์เอนท์/เซิฟเวอร์ เช่นพวก newcamd, mgcamd, cccam และตระกูล จุด-ต่อ-จุด (peer-to-peer) เช่น จีบ็อกซ์ (Gbox) เนื่องจากเราสามารถเซ็ทตัว foxvpn ให้ทำงานได้หลายรูปแบบ นอกจากนั้นเรายังสามารถจำลองการทำงานของแคมตระกูล ไคล์เอนท์/เซิฟเวอร์ (โดยเฉพาะ cccam) ให้ทำงานเลียนแบบแคมตระกูล จุด-ต่อ-จุด ได้ ซึ่งจุดเด่นของการทำงานในแบบ จุด-ต่อ-จุด อธิบายให้เข้าใจง่ายๆ คือ เสียบการ์ดที่เครื่องไหนก็ได้ก็จะสามารถแชร์ให้เครื่องในกลุ่มได้ทั้งกลุ่ม

คำถามถามบ่อยเกี่ยวกับ foxvpn

Q: foxvpn ฟรีหรือไม่ ?
A: ฟรี! เมื่อใช้กับเครื่องดรีมบอกซ์ 2 เครื่อง โดยโปรแกรมจะทำงานใน โหมดทดลอง ซึ่งการทำงานเทียบเท่าโหมดทำงานจริง เพียงแต่จะไม่สามารถเชื่อมต่อได้มากกว่า 1 เครื่อง

Q: มี source code แจกไหม?
A: ไม่มีแจกครับ foxvpn พัฒนาบางส่วนจากพื้นฐานของ Open Source และบางส่วนเขียนขึ้นใหม่ หากท่านต้องการพัฒนา vpn เองสามารถค้นคว้าและหาได้จากในอินเตอร์เน็ต

Q: หากต้องการลงทะเบียน foxvpn เพื่อใช้เชื่อมต่อมากกว่า 2 เครื่อง ต้องทำอย่างไร ราคาแพงไหม?
A: การลงทะเบียนโดยการส่ง MAC Address ของดรีมบ็อกซ์ไปยัง dreamf0x@hotmail.com ซึ่งจะมีค่าลงทะเบียน 300 บาทต่อเครื่อง

Q: ระบุ DNS หรือ IP ของเครื่องที่ทำเป็นเซิฟเวอร์อย่างไร?
A: foxvpn สนับสนุน 3 รูปแบบคือ ระบุเป็น IP Address โดยตรง ระบุเป็น DNS โดยตรง และระบุเป็น DNS แบบเข้ารหัส เช่น

M: { 10.8.0.1 { C0A80213 }} <- 203.192.16.54
M: { 10.8.0.1 { C0A80213 }} <- fox.server.com
M: { 10.8.0.1 { C0A80213 }} <- S$354kja)lkNl;

Q: foxvpn มีประโยชน์อะไรอีกบ้าง?
A: นอกจากสร้างเครือข่ายเสมือนซึ่งทำให้ตัดปัญหาเรื่องการอ้างชื่อ DNS และฟอร์เวิร์ดพอร์ท (สำหรับ Gbox) แล้ว จุดเด่นอีกอย่างคือ เราสามารถทำรีโมท (remote) กลับไปที่เครื่องไคล์เอนท์ได้ทุกตัวและทุกแอพพลิเคชั่น (เช่น remote กลับไปทาง TELNET เพื่อตรวจสอบการทำงาน ทาง FTP เพื่อติดตั้งหรืออัพเดทโปรแกรม ทาง HTTP เพื่อควบคุมผ่าน Enigma Web Interface) จึงเป็นการง่ายสำหรับควบคุมและดูและระบบทั้งหมด

Q: foxvpn มีเวอร์ชั่นที่ทำงานใน x86 ไหม?
A: มี แบบมีเงื่อนไข คือต้องลงทะเบียนดรีมบ็อกซ์มากกว่า 10 เครื่องขึ้นไป เนื่องตัว foxvpn.x86 ทำงานใน PC จึงเหมาะที่จะทำเป็นตัวเซิฟเวอร์หลัก foxvpn.x86 สามารถทำงานได้เฉพาะใน linux เท่านั้น

บทความที่เกี่ยวข้อง สร้างเครือข่ายเสมือนส่วนตัวให้กับดรีมบ็อกซ์

ดรีมบ็อกซ์วีพีเอ็น Dreambox VPN ภาคประถม

เราจะลองมาดูองค์ประกอบและการทำงานจริงๆ ของเครือข่ายเสมือนส่วนตัวกันบ้าง โดยเริ่มจากจำลองการทำงานในวงแลนกันก่อน



สมมุติว่ามีดรีมบ็อกซ์ 2 ตัวอยู่ในวงแลน โดยตัวแรกทำหน้าที่เป็นโฮส (โดยมีไอพีในวงแลนเป็น 192.168.0.11) และอีกตัวทำหน้าที่เป็นไคลเอนท์ (โดยมีไอพีในวงแลนเป็น 192.168.0.12) โดยหลักการที่ต้องจำให้ขึ้นใจคือ "อุปกรณ์ที่ทำหน้าที่เป็นโฮส จะต้องมีชื่อ(หรือไอพี)และต้องเปิดพอร์ทไว้รอเสมอ" เพื่อเป็นที่อยู่ที่ทำให้อุปกรณ์ที่ทำหน้าที่เป็นไคลเอนท์ติดต่อได้

การทำงานแบบทีละขั้นตอน อธิบายได้ดังนี้

  1. ไคลเอนท์ เรียกขอทำการเชื่อมต่อไปยัง โฮส โดยเริ่มจากเปิดพอร์ทขาออกที่เครื่องตนเอง ซึ่งพอร์ทขาออกจะเป็นพอร์ทแบบสุ่ม(ได้หมายเลขพอร์ทที่ว่างอยู่ สมมุติว่าได้ 5326) แล้วทำการเรียกไปยัง ไอพี(หรือชื่อ) 192.168.0.11 และพอร์ท 1194 ของเครื่องโฮส
  2. โฮส ทำการเปิดพอร์ทขาเข้า 1194 ไว้รอ เมื่อได้รับการติดต่อจากไคลเอนท์แล้วหากจะมีการสื่อสารข้อมูลใดๆ ก็กระทำผ่านเส้นทางสื่อสารเดิมที่ได้สร้างไว้แล้ว (หมายถึงหากต้องการคุยกับไคลเอนท์ ก็จะส่งข้อมูลจาก IP:PORT 192.168.0.11:1194 กลับไปยัง IP:PORT 192.168.0.12:5326 ของไคลเอนท์)
  3. vpn จะทำหน้าที่จำลองเส้นทางเชื่อมต่อระหว่าง โฮส และ ไคลเอนท์ โดยใช้ไอพีส่วนตัว 10.8.0.1 สำหรับตัวโฮส และ 10.8.0.2 สำหรับตัวไคลเอนท์ และจะเปิดพอร์ททุกพอร์ทของทั้งสองฝั่งไว้ให้สามารถใช้งานได้ (ถ้าไม่มี vpn เมื่อสร้างเส้นทางสื่อสารแล้ว จะสามารถใช้ได้เฉพาะพอร์ทขาเข้า 1194 ของฝั่งโฮส และพอร์ทขาออก 5326 ของฝั่งไคลเอนท์) ตัวอย่างเช่น หากโฮส 10.8.0.1 ต้องการรีโมท เทลเน็ต กลับมายังเครื่องไคลเอนท์ 10.8.0.2 ก็สามารถเรียกกลับมาที่เครื่องไคลเอนท์ที่พอร์ท 23 ได้เลย โดยไม่ต้องสร้างเส้นทางเชื่อมต่อและหรือเปิดพอร์ท 23 ทางไคลเอนท์อีก โดยทุกอย่างจะกระทำผ่านท่อ vpn ที่ได้สร้างไว้แล้วก่อนหน้า

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


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


การทำงานแบบทีละขั้นตอน อธิบายได้ดังนี้

  1. ไคลเอนท์ เรียกขอทำการเชื่อมต่อไปยัง โฮส โดยเริ่มจากเปิดพอร์ทขาออกที่เครื่องตนเอง ซึ่งพอร์ทขาออกจะเป็นพอร์ทแบบสุ่ม(ได้หมายเลขพอร์ทที่ว่างอยู่ สมมุติว่าได้ 5326) แล้วทำการเรียกไปยังเราท์เตอร์ เราท์เตอร์ก็จะทำการสุ่มพอร์ทขาออกของตนเองไว้ (สมมุติว่าได้ 8316) พร้อมๆ กันนั้นก็จำไว้ว่าดรีมบ็อกซ์ได้เรียกออกมาโดยใช้พอร์ทอะไร โดยจะเก็บรายละเอียดเหล่านี้ไว้ในตารางเราท์เตอร์ (router table) แล้วทำการเรียกไปยัง s1.foxs.com (220.132.54.7) ที่พอร์ท 1194
  2. โฮส จะต้องทำการฟอร์เวิร์ดพอร์ท 1194 ของเราท์เตอร์ไว้รอ ซึ่งเมื่อเราท์เตอร์ได้รับการติดต่อจากไคลเอนท์ทางพอร์ทขาเข้า 1194 แล้วก็จะสุ่มพอร์ทขาออกของเราท์เตอร์ (สมมุติว่าได้ 15321) แล้วทำการส่งผ่านการติดต่อเหล่านั้นไปยังโฮส 192.168.0.11 ที่พอร์ท 1194 และก็เช่นกัน เราท์เตอร์ก็จะทำการเก็บรายละเอียดเหล่านี้ไว้ในตารางเราท์เตอร์ (router table) แล้วหากจะมีการสื่อสารข้อมูลใดๆ ก็กระทำผ่านเส้นทางสื่อสารเดิมที่ได้สร้างไว้แล้ว
  3. vpn จะทำหน้าที่จำลองเส้นทางเชื่อมต่อระหว่าง โฮส และ ไคลเอนท์ โดยใช้ไอพีส่วนตัว 10.8.0.1 สำหรับตัวโฮส และ 10.8.0.2 สำหรับตัวไคลเอนท์ และจะเปิดพอร์ททุกพอร์ทของทั้งสองฝั่งไว้ให้สามารถใช้งานได้ (ถ้าไม่มี vpn เมื่อสร้างเส้นทางสื่อสารแล้ว จะไม่สามารถสื่อสารในพอร์ทอื่นได้เนื่องจากมีเราท์เตอร์คั่นกลาง) ตัวอย่างเช่น หากโฮส 10.8.0.1 ต้องการรีโมท เทลเน็ต กลับมายังเครื่องไคลเอนท์ 10.8.0.2 ก็สามารถเรียกกลับมาที่เครื่องไคลเอนท์ที่พอร์ท 23 ได้เลย โดยไม่ต้องสร้างเส้นทางเชื่อมต่อและหรือเปิดพอร์ท 23 ทางไคลเอนท์อีก โดยทุกอย่างจะกระทำผ่านท่อ vpn ที่ได้สร้างไว้แล้วก่อนหน้า ซึ่งจะเห็นว่าโดย vpn ก็เสมือนว่าไม่มีเราท์เตอร์อยู่ในเส้นทางการสื่อสาร

บทความที่เกี่ยวข้อง สร้างเครือข่ายเสมือนส่วนตัวให้กับดรีมบ็อกซ์

วันศุกร์ที่ 4 เมษายน พ.ศ. 2551

ดรีมบ็อกซ์วีพีเอ็น Dreambox VPN ภาคอนุบาล

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

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

PC [192.168.0.1] <----> Dreambox [192.168.0.2]

ในวงแลน เราสามารถกำหนดหมายเลขไอพีของอุปกรณ์ได้ตามใจเรา (โดยต้องเลือกใช้หมายเลขไอพีในกลุ่มของหมายเลขไอพีส่วนตัว private ip เท่านั้น กลุ่มนี้ได้แก่กลุ่ม 192.x.x.x และ 10.x.x.x) เมื่ออุปกรณ์ไอพีทุกตัวอยู่ในกลุ่มเดียวกัน ก็จะสามารถติดต่อสื่อสารกันได้โดยไม่มีข้อจำกัดเรื่องพอร์ท (แล้วพอร์ทมันคืออะไรหว่า?) ลองนึกภาพง่ายๆ ว่า เราอาศัยอยู่ในหมู่บ้านจัดสรร แต่ละคนก็อาศัยอยู่ในบ้านของตนเองเวลาเราอยากคุยกับเพื่อนบ้านคนไหน เราก็เดินตามเส้นทางไปพอถึงหน้าบ้านก็กดกริ่งและถ้ามีคนอยู่ เขาก็จะเชิญเราไปนั่งคุยที่ห้องรับแขก เราก็สามารถนั่งคุยกับเขาได้ที่ห้องรับแขก ซึ่ง บ้านเลขที่ก็เปรียบเหมือน IP address และ ห้องรับแขก ก็เปรียบเหมือนพอร์ท (port) นั่นเอง ซึ่งหากเราไปถึงบ้านแล้วแต่เขาไม่อนุญาติให้เข้าห้องรับแขก เราก็จะไม่มีสิทธิคุยกับเจ้าของบ้านนั้น (ลองจิตนาการเพิ่มว่า มีห้องครัว ห้องน้ำ ห้องนอนในแต่ละบ้านอีก แต่ละห้องก็คือแต่ละพอร์ท ซึ่งเจ้าของบ้านอาจจะเปิดบางห้องให้เราเข้าได้ แต่บางห้องก็ไม่ได้เปิดให้เราเข้า)

ทีนี้ลองมาสมมุติว่า เพื่อนบ้านเราต้องการเชิญเราไปงานเลี้ยงขึ้นบ้านใหม่ เขาก็จะส่งจดหมายเชิญเราให้เราไปงานเลี้ยงที่บ้านของเขา (ระบุบ้านเลขที่) และบริเวณที่จัดงานเลี้ยงที่ห้องรับแขก (ระบุพอร์ท) เราก็เดินออกไปตามทางเมื่อถึงบ้านของเขาก็เข้าไปที่ห้องรับแขกได้เลยโดยไม่ต้องขออนุญาตอีกเพราะเจ้าของบ้านได้เปิดห้องรับแขกไว้รอแล้ว เราก็เรียก เจ้าของบ้านที่เชิญเราไปงานนี้ว่า โฮส (host) คือเจ้าบ้าน และเรียกตัวเราว่า เกส (guest) หรือ ไคลเอนท์ (client) คือแขก ดังนั้น หากเรากลับมาดูที่ภาพของดรีมบ็อกซ์ เมื่อเราเอาดรีมบ็อกซ์ 2 ตัวไว้ในวงแลนเดียวกัน แล้วให้ตัวหนึ่งทำหน้าที่เป็นโฮส อีกตัวหนึ่งทำหน้าที่เป็นเกส ก็จะสามารถติดต่อสื่อสารคุยกันได้

นอกวงแลนล่ะ? ลองมาจินตนาการกันต่อว่า เราก็มีเพื่อนอยู่หมู่บ้านข้างๆ (ไม่ต้องสมมุติไปไกลหรอก เปลืองค่าน้ำมัน) เขาเชิญเราไปงานเลี้ยงสุนัขที่บ้านเกิดลูก เมื่อเราได้รับจดหมายทราบถึงบ้านเลขที่และบริเวณที่จัดงานสนามหลังบ้านของเขาแล้ว เราก็ปั่นจักรยานจากบ้านเราผ่านออกไปทางประตูหมู่บ้าน ผ่านป้อมยามหมู่บ้านเรา วิ่งออกถนนใหญ่ ไปถึงป้อมยามหมู่บ้านเพื่อนเรา ..... เมื่อมาถึงป้อมยามแล้วตรงนี้จะเกิดอะไรขึ้น? สิ่งที่เป็นไปได้มี 2 อย่างคือ อย่างแรก ยามไม่ให้ผ่านเพราะเพื่อนเจ้ากรรมไม่ได้แจ้งให้ยามทราบไว้ อย่างสอง ยามให้ผ่านเพราะเพื่อนเราได้แจ้งให้ยามทราบไว้แล้วและให้เราปั่นจักรยานไปที่บ้านของเพื่อน(เท่านั้น ห้ามออกนอกเส้นทาง) เมื่อเราไปถึงบ้านเพื่อนก็ต้องไปรอที่สนามหลังบ้าน(ก็เปิดพอร์ทนี้รอไว้นี่หว่า) ห้ามเข้าบ้านโดยเด็ดขาด เราก็ยังคงเรียก บ้านเพื่อนว่าเป็น โฮส เรียกตัวเราว่าเป็น ไคลเอนท์ แต่สิ่งที่เพิ่มขึ้นมาคือ ป้อมยาม ซึ่งเราจะเรียกว่าเป็น ไฟล์วอร์ (firewall) เรียกถนนใหญ่ ว่าเส้นทางแวน (WAN) และเรียกการแจ้งไว้ที่ป้อมยามว่าถ้ามีคนมาหาให้เข้าไปได้ที่บ้านเลขที่ xxx ที่บริเวณสนามหลังบ้าน ว่า การเปิดพอร์ท (Port forwarding) นอกจากนั้นยังจะสังเกตุเห็นอีกว่า บ้านเลขที่ของหมู่บ้านเราและบ้านเลขที่ของหมู่บ้านเพื่อนต่างกัน (เช่นเราอยู่หมู่บ้าน A เขตคลองเตย เพื่อนอยู่หมู่บ้าน B เขตวัฒนา) ซึ่งแต่ละหมู่บ้านก็จะมีที่อยู่ต่างกัน เราจะเรียกตรงนี้ว่า ที่อยู่แวน (WAN Address) แต่มักจะเรียกกันทับศัพท์ชาวเน็ตไปว่า Internet IP Address ซึ่งหากเปลี่ยนเป็น ดรีมบ็อกซ์ 2 ตัว ก็จะมีลักษณะการทำงานเช่นเดียวกัน โดยเราจะเห็นว่ามีความยุ่งยากเกิดขึ้นเพิ่มมา 2 ประการ อย่างแรกคือเรื่องของเส้นทางแวน (ในกรณีของเราคือ ADSL หรือเรามักเข้าใจและเรียกกันว่า อินเตอร์เน็ต Internet) อาจจะเดินทางได้สะดวกหรือไม่สะดวกขึ้นอยู่กับทราฟฟิค(ความหนาแน่นของการจราจร) และขนาดของถนน(ซึ่งเป็นตัวจำกัดความเร็วสูงสุดของเรา) และอย่างสำคัญที่สองคือด่านของ ไฟล์วอร์ (ซึ่งเป็นส่วนหนึ่งของ เราท์เตอร์ router) ที่เราต้องทำการฟอร์เวิร์ดพอร์ทไว้รอ

[ บ้านเรา 192.168.0.2] --> [ ป้อมยามหมู่บ้าน A 58.67.35.15] ~~~~> [ป้อมยามหมู่บ้าน B 202.192.35.5] --> [บ้านเพื่อน 10.0.8.5]

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

[ บ้านเรา 192.168.0.2] --> ~~ เครือข่ายเสมือน vpn ~~~~> [บ้านเพื่อน 192.168.0.5]

ลองอ่านทบทวนและทำความเข้าใจ ภาคอนุบาลนี้กันก่อนน่ะครับ เดี๋ยวเข้าใจแล้วค่อยไปต่อภาคประถม

วันพฤหัสบดีที่ 3 เมษายน พ.ศ. 2551

จุดอ่อนของแคมตระกูลนิวแคม (newcamd)

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

แคมในตระกูลนิวแคม ทำงานในลักษณะของ ไคลเอนท์/เซิฟเวอร์ (Client/Server) โดยจะแยกกันออกเป็น 2 ส่วนชัดเจนคือ

  1. ส่วนที่ทำหน้าที่เป็นการ์ดเซิฟเวอร์ ซึ่งได้แก่ตัวโปรแกรม cardserver ที่ติดมากับตัวนิวแคม หรืออาจจะเป็นตัว NewCS ที่แยกมาต่างหาก ส่วนนี้ทำหน้าที่ติดต่อกับการ์ดโดยตรงโดยมีหน้าที่แค่เพียงรับส่งรหัสควบคุม CW (Control Word) จากการ์ดกับตัวโปรแกรมเท่านั้น ซึ่งโดยปกติโปรแกรมส่วนนี้ก็จะมีการจัดสิทธิและลำดับการรับส่งรหัสได้ โดยการสร้างรายชื่อผู้ใช้และรหัสผ่าน (username และ password)
  2. ส่วนที่ทำหน้าที่เป็นอีมูลเลเตอร์ (ส่วนของไคลเอนท์) ซึ่งได้แก่ตัวโปรแกรมที่ชื่อว่า newcamd และ mgcamd ส่วนนี้มีหน้าที่คือรับรหัสควบคุม CW (Control Word) มาจากส่วนของการ์ดเซิฟเวอร์ แล้วนำมาประมวลผลตามอัลกอริทึมมาตรฐาน เพื่อถอดรหัสให้ออกมาเป็นสัญญาณภาพแล้วนำไปแสดงผล

[ การ์ด ] <--> [ card server ] <~~~~> [ emulator ] --> ภาพ

ซึ่งจากการทำงานเราก็จะเห็นว่า เราสามารถเลือกจับคู่ระหว่างตัว การ์ดเซิฟเวอร์ (cardserver และ newcs) กับตัวอีมูเลเตอร์ (newcamd และ mgcamd) ได้ถึง 4 คู่ แต่ที่นิยมกันในตอนนี้คือคู่ของ newcs และ mgcamd

[ การ์ด ] <--> [ newcs ] <~~~~> [ mgcamd ] --> ภาพ

ทำไมต้องคู่นี้ล่ะ newcs + mgcamd ?

เรื่องราวลึกๆ ของการจับคู่ขอเว้นไว้ไม่กล่าวถึง แต่ส่วนหนึ่งที่จะกล่าวถึงไว้คือ ตัว mgcamd มีความสามารถในการ "เลือกรับรหัสควบคุม" ได้ โดยการกำหนดสิ่งที่ต้องการรับและไม่รับไว้ในไฟล์ที่ชื่อว่า ignore.list พูดง่ายๆ คือ กำจัดขยะทิ้งไปให้เหลือแต่รหัสควบคุมที่ใช้งานได้จริง

เมื่อทราบข้อดีของมันแล้ว (จริงๆ มีข้อดีอีกหลายข้อ) ลองมาดูข้อเสียเล็กๆ ของมันบ้าง

ข้อเสียแรก เนื่องจากแคมตระกูลนิวแคมนี้ถูกสร้างขึ้นมาในยุคแรก พร้อมๆ กับตัวดรีมบ็อกซ์ ดังนั้นการควบคุมสิทธิการเข้าใช้มีข้อจำกัดคือ ด้วย user และ password เดียว ตัวอีมูเลเตอร์หลายๆ ตัวสามารถใช้งานการ์ดเซิฟเวอร์เดียวได้พร้อมๆ กัน พูดภาษาชาวบ้านง่ายๆ คือ แอคเค้าท์เดียวแต่เข้าดูพร้อมกันได้หลายๆ เครื่อง!!!

ข้อเสียสอง เป็นเรื่องของความปลอดภัย(รึเปล่า?) กล่าวคือ ตัวโปรแกรมในส่วนของการ์ดเซิฟเวอร์จะส่งข้อมูลทุกอย่างของการ์ดไปยังตัวโปรแกรมส่วนของอีมูเลเตอร์ แปลเป็นภาษาชาวบ้านอีกเช่นกันว่า ตัวลูกที่เชื่อมต่อเข้าไปยังตัวแม่ สามารถดูได้เลยว่าตัวแม่ใช้การ์ดหมายเลขทะเบียน (Card S/N) อะไร ซึ่งหากทราบ Card S/N ก็เป็นการง่ายที่จะติดตามว่า การ์ดนี้เป็นของใคร!!!!

ข้อเสียสาม เป็นเรื่องของการควบคุมสิทธิการแชร์ เนื่องจากแคมยุคแรกๆ ไม่ได้ออกแบบหรือมีความสามารถนี้ดังนั้นตัวรหัสควบคุม CW Control Word ที่ส่งไปยังตัวอีมูเลเตอร์ จะสามารถส่งต่อ (relay) ไปได้อีกไม่จำกัด แปลภาษาชาวบ้านก็ได้ว่า มันแชร์ต่อได้อีก(ถ้ารู้วิธี)!!!!

ดังนั้น หากใครจะเล่นแคมในตระกูลนิวแคมนี้ ก็ลองคิดถึงจุดอ่อนเหล่านี้ดูบ้างนะครับ

วันศุกร์ที่ 8 กุมภาพันธ์ พ.ศ. 2551

สร้างเครือข่ายเสมือนส่วนตัวให้กับจีบ๊อกซ์ Gbox VPN

Gbox ได้ชื่อว่าเป็นแคมที่ดีที่สุดตัวหนึ่ง ซึ่งทำงานในลักษณะของ จุดต่อจุด peer to peer ต่างจากแคมตระกูลอื่น (เช่น CCcam และ Newcamd) ที่ทำงานในลักษณะของ client/server จุดอ่อน(ซึ่งจริงๆ คือจุดแข็ง)ของ Gbox คือ การทำงานในลักษณะ peer to peer จำเป็นที่จะต้องเซทให้ทั้งสองฝั่งรู้จักซึ่งกันและกัน โดยอ้างอิงจากไอพีหรือชื่อ DNS แถมยังต้องทำการฟอร์เวิร์ดพอร์ทที่เร้าเตอร์ในกรณีที่ใช้งานผ่าน adsl router ดังนั้น ความนิยม Gbox จึงถูกจำกัดด้วยความยุ่งยากเหล่านี้

VPN เป็นเทคโนโลยีการจำลองเครือข่าย ให้เสมือนว่าอุปกรณ์เครือข่ายทุกตัวทำงานอยู่ในแลนวงเดียวกัน ซึ่งเมื่อมองในจุดนี้แล้ว หากนำ Gbox มาทำงานใน VPN ก็จะสามารถตัดปัญหาได้ทั้งการอ้างอิงด้วยชื่อ DNS และไม่จำเป็นต้องทำการฟอร์เวิร์ดพอร์ทที่ตัวลูกให้ยุ่งยาก (หมายเหตุ ยังคงต้องมี dns และ forward port ฝั่งที่ทำหน้าที่เซิฟเวอร์)

เทคโนโลยี vpn ในโลกอินเทอร์เน็ตมีมากมายหลายตัว ที่นิยมกันมากคือ openvpn แต่... เนื่องจากข้อจำกัดของตัว dreambox รวมทั้ง พื้นฐานความรู้ของผู้ใช้ดรีมบ๊อกซ์โดยทั่วไป ไม่ได้อยู่ในระดับ"เก่ง" ดังนั้นก็ไม่ใช่เรื่องง่ายในการที่จะเซทระบบ vpn ขึ้นมาลองเล่นซักตัว เพราะเอาแค่ง่ายๆ ว่าการ compile openvpn ให้รันได้ใน dreambox ก็เป็นเรื่องยากถึงยากมากสำหรับคนที่ไม่มีพื้นฐานหรือพอมีพื้นฐานอยู่บ้างแต่ยังไม่เชียวชาญ ดังนั้นปัจจัยในการพิจารณาเลือก vpn ที่เหมาะสมสำหรับ dreambox ของเราคือ "'ง่าย เล็ก เสถียร และปลอดภัยพอรับได้"

หลังจากสืบเสาะและทดลอง vpn หลายๆ ตัว ในที่สุดก็ได้เลือกหนึ่งตัวมาเป็นต้นแบบ ทำการปรับแต่งให้เหมาะสมกับตัวดรีมบ๊อกซ์และ gbox โดยมีคุณสมบัติเด่นๆ คือ
  • ง่าย ด้วยคอนฟิคที่เรียกว่า zero configuration คือไม่ต้องเซทอะไรเลย ก็สามารถทำงานได้ ไม่ต้องโหลด certificate ไม่ต้องทำ user/password พิเศษ
  • เล็ก มีขนาดพื้นฐานเพียง 200kb
  • เสถียร จากการทดสอบก็ไม่พบปัญหาเรื่องความเสถียรของตัว vpn
  • ปลอดภัย พอรับได้ แลกกับขนาดและความยุ่งยากในการใช้งาน

เริ่มต้นกับ foxvpn - simple dreambox vpn

โปรแกรม foxvpn เป็นโปรแกรมพื้นฐานที่ทำหน้าที่ vpn สำหรับสร้างจุดเชื่อมต่อระหว่างดรีมบ๊อกซ์ในเครือข่ายเสมือน ซึ่งก็ทำงานในลักษณะ peer to peer เช่นกัน สำหรับ foxvpn อาศัยการ authenticate ด้วยหลักการของ password ธรรมดา จึงไม่จำเป็นต้องใช้ certificate โดยฝั่งหนึ่งจะทำหน้าที่เป็น server และอีกฝั่งหนึ่งจะทำหน้าที่เป็น client (หรือแม้แต่ทำหน้าที่ทั้ง server และ client ได้ในตัวเดียวกัน)

ทดลองเซทระบบ Fox VPN ในวงแลน

เราสามารถทดลองเล่น gbox vpn ในวงแลนได้ง่ายๆ โดยมีขั้นตอนดังนี้

1. ดาว์นโหลด gbox vpn และทำการติดตั้งลงในดรีมบอกซ์ (ใส่ไฟล์ติดตั้งใน tmp และสั่ง manual install) เครื่องที่ต้องการให้เป็นเซิฟเวอร์ (สมมุติใช้ IP 192.168.1.3)

2. เมื่อติดตั้งเสร็จแล้ว ใช้ DCC เปิดไฟล์ /var/keys/cwshare.cfg แก้ไขบรรทัด M: ให้ระบุ IP (หรือ DNS) ของเซิฟเวอร์ (ในกรณีนี้คือแก้คำว่า fox.server.com ให้เป็น 192.168.1.3) *อย่าแก้เครื่องหมาย <- เพราะเครื่องหมายนี้เป็นการระบุว่าให้ foxvpn ทำการ mapping ระหว่างชื่อ fox.server.com กับไอพี 10.8.0.1

/var/keys/cwshare.cfg

M: { 10.8.0.1 { C0A80213 }} <- fox.server.com

D: { 10.8.0.2 { 8888 8888 { 22CD32BA { 1 1 }}}}

แก้เป็น

M: { 10.8.0.1 { C0A80213 }} <- 192.168.1.3

3. เปิด Telnet ใน DCC เพื่อสั่งสร้างไฟล์ติดตั้งสำหรับตัวลูก

~> genfox

เมื่อรันเสร็จจะได้ไฟล์ติดตั้งสำหรับตัวลูกจำนวน 1 ไฟล์อยู่ในโฟล์เดอร์ tmp ให้จัดเก็บไฟล์นี้ไว้ใน pc เพื่อนำไปติดตั้งยังตัวลูกต่อไป

4. ที่ดรีมบ็อกซ์ตัวที่ต้องการให้เป็นตัวลูก นำไฟล์ติดตั้งที่ได้จากข้อ 3 มาติดตั้ง (ใส่ไฟล์ติดตั้งใน tmp และสั่ง manual install)

5. รีสตาร์ทแคม โดยเลือกเป็น Gbox VPN ทั้งที่เซิฟเวอร์และตัวลูก

ทดลองเซทระบบ Gbox VPN ผ่านอินเตร์เน็ต

1. จดทะเบียน dns ที่ต้องการใช้ระบุตำแหน่งเซิฟเวอร์ที่ www.dyndns.org หรือ www.no-ip.com และ ฟอร์เวิร์ดพอร์ท tcp 1194 (พอร์ทมาตรฐานของ VPN) ที่ router ให้ชี้ไปยังดรีมบ็อกซ์เซิฟเวอร์

2. ใช้ DCC เปิดไฟล์ /var/keys/cwshare.cfg แก้ไขบรรทัด M: ให้ระบุ DNS ที่จดทะเบียนไว้ในข้อ 1 (สมมุติจดไว้ชื่อ myfoxserver.no-ip.com)


/var/keys/cwshare.cfg

M: { 10.8.0.1 { C0A80213 }} <- myfoxserver.no-ip.com

3. - 5. ทำขั้นตอนเดียวกับการเซทระบบ Gbox VPN ในวงแลน

หมายเหตุ โปรแกรม foxvpn สามารถดาวน์โหลดและทดลองใช้ได้ฟรี ที่นี่ สอบถามรายละเอียดเพิ่มเติมได้ที่ giszee@gmail.com