Friday, October 19, 2007

SSH Tunneling

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

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

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

เริ่มจากการเปิดพอร์ทโดยใช้ ssh ซึ่งรองรับโปรโตคอล SOCKS4 และ SOCKS5
ssh -D 14141 account@server.address # เปิดพอร์ท 14141 ไปยังเครื่องปลายทาง
จากนั้นทำการตั้ง proxy ที่ browser ที่ใช้ให้ยิงไปที่ localhost พอร์ท 14141
แต่เนื่องจาก Opera ไม่รองรับ SOCKS4 หรือ SOCKS5 ทำให้ข้อมุลต้องผ่านโปรแกรมอีกตัวหนึ่งชื่อ Privoxy

ตั้ง proxy ของ Opera ให้ส่งข้อมูลไปที่ localhost พอร์ท 8118 (Privoxy default) และทำการแก้ไขข้อมูลของ Privoxy
sudo vi /etc/privoxy/config
เพิ่มบรรทัดนี้ลงไปในหัวข้อ forward-socks4 and forward-socks4a
forward-socks4 / 127.0.0.1:14141 .
เซฟไฟล์ และทำการ restart ตัว privoxy โดยใช้คำสั่ง
sudo /etc/init.d/privoxy restart
หลังจากนั้น 3GB ก็จะไม่ใช่ปัญหาใหญ่อีกต่อไป ขอบคุณเจสันที่เคยสอน พึ่งได้ใช้ประโยชน์จริงๆก็คราวนี้แหละ

No comments: