Private Secure Proxy Server
posted on 29 Mar 2007 11:58 by ipats
สวัสดีครับ
ช่วงนี้มีข่าวบลอคเว็บกันเยอะเหลือเกิน (หรือเปล่า)
ปกติเวลาจะเข้าเว็บที่โดนบลอคกัน ก็จะต่อผ่าน proxy เอาได้
แต่เดี๋ยวนี้ก็หา proxy ยากเหลือเกิน เพราะเว็บรายชื่อก็โดนบลอคไปด้วย
ยังมีอีกหลายวิธี เช่นใช้โปรแกรม P2P ช่วย เช่น Tor แต่มันก็ช้าซะเหลือเกิน
วิธีที่พอจะได้ความเร็วหน่อยก็คือ หาคนที่ไม่โดนบลอค
เช่นคนในต่างประเทศ หรือคนที่มีลิงค์ที่อยู่นอกเหนือการควบคุม
แล้วก็ให้เค้าเปิด proxy server ให้เราเข้าไปใช้ ซึ่งบางทีอาจจะยุ่งยากนิดหน่อย
และก็อาจจะมีปัญหาเรื่องความปลอดภัยที่ต้องตั้งค่าวุ่นวายอีก
วันนี้ ผมเลยขอมาเสนอ วิธีทำ proxy server ใช้เองแบบง่ายๆ
สำหรับคนที่มีเน็ตไม่โดนบลอค เพื่อเพื่อนๆ ผู้น่าสงสารจากไทยแลนด์แดนแห่งบลอค
วิธีที่จะเสนอวันนี้คือ SSH Tunneling นั่นเองครับ
โดยเราจะใช้ฟีเจอร์ port forwarding ของ ssh ครับ
หลักการของมันก็คือ...
(รูปปลากรอบ.. วาดนานมาก.. จริงๆ คือ เอารูปในวิกิมามิกซ์กัน)
ปกติเวลาเราเข้าเว็บโดนบลอคจะเป็นแบบนี้

แต่เมื่อใช้วิธีนี้แล้ว จะเป็นแบบนี้

ก็คือ.. เราจะ ssh เข้าไปที่เครื่องที่ไม่โดนบลอค
แล้วจัดการเปิด HTTP Connection ผ่านอุโมงค์ที่สร้างขึ้น
ซึ่งวิธีนี้ตัว ISP เอง จะไม่เห็นเลยว่าเราจะเข้าเว็บอะไร ไม่รู้แม้ว่าเราจะเข้าเว็บ!
เนื่องจากในท่อของ ssh นั้นถูกเข้ารหัสตลอดทาง (เส้นสีเขียว) นั่นเอง
วิธีนี้ เราจะต้องการ
1. เครื่อง 1 เครื่องที่อยู่นอกขอบเขตการบลอค พร้อมติดตั้ง ssh server
2. user ที่จะเข้าใช้เครื่อง ssh server
3. เครื่องที่เราใช้ ติดตั้ง ssh client (บนวินโดว์เช่น PuTTY)
ตัว server นั้น เนื่องจากผมเคยต่อ ssh ไปแต่เครื่องตระกูลพวก linux
ซึ่งมันก็เปิดกันเป็นปกติอยู่แล้วไม่ต้องทำอะไร แต่บนวินโดว์คงต้องหาเอาเองนะ อิอิ
ถัดมา วิธีต่อ..
ถ้าเป็น linux ก็ง่ายมาก เปิด terminal ขึ้นมา
แล้วสั่ง ssh [username@host] -D [port] เช่น ssh abc@patinya.com -D 55555 แค่นี้เอง
แต่ถ้าเป็น PuTTY ก็ตั้งค่าตรง Connection > SSH > Tunnels
ใส่ Source port เป็นเลข เช่น 55555 ไม่ต้องใส่ Destition
เลือกชนิดเป็น Dynamic แล้วก็กด Add
หลังจากนั้นเราก็มาเซ็ต proxy ที่เบาร์เซอร์
เป็น localhost พอร์ตตามที่ตั้ง (เช่น 55555) ชนิด SOCKS
เท่านี้ การเล่นอินเทอร์เน็ตของเรา ก็จะผ่านท่อของ ssh ไปออกที่เครื่อง server
ทำให้ ISP ไม่สามารถรู้ได้ว่า เราเข้าเว็บอะไรอยู่ บลอคไม่ได้
ข้อเสียของวิธีนี้ก็คือ.. เราต้องหาเครื่องที่อยู่นอกขอบเขตการบลอค
แล้วก็ให้เจ้าของเครื่องสร้าง user ให้เรา ssh เข้าไปได้
แต่ผมว่ามันก็พอๆ กับการให้เจ้าของเครื่องติด proxy server อ่ะแหละน่า
เผลอๆ อันนี้ง่ายกว่าอีก แถม secure กว่าด้วย
แล้วต่อผ่าน proxy ดีไม่ดี อาจจะโดนสกรีนในชั้น Application ก็ได้
แต่ ssh นี่คงเป็นไปได้ยาก เพราะมันเข้ารหัสหมด
และมันเป็น protocol ที่คิดว่าไม่น่าจะโดนบลอคง่ายๆ ด้วย
เหมือนกับ http, smtp ถ้าโดนบลอคคงปัญหาใหญ่
เรื่องของ port forwarding เอามาประยุกต์ใช้ได้อีกหลายอย่าง
อีกอย่างที่ผมชอบก็คือการทะลุ NAT แบบว่า เน็ตที่หอมันผ่าน NAT
แต่วันดีคืนดี ผมอยากรีโมตเข้าเครื่อง จะทำยังไง อะไรประมาณนี้
ผมก็ ssh จากเครื่องที่หอ ไป server แล้วสั่ง server ให้เปิดพอร์ทรอซักพอร์ทนึง
ถึงเวลาเข้าจากข้างนอก ผมก็ต่อเข้า server ที่พอร์ทที่เปิดทิ้งไว้
แล้วมันก็จะ forward มาเครื่องที่หอให้ เจ๋งดี (ไว้สั่งโหลดบิต!!?!)
พอล่ะครับ ไปหล่ะ ไม่รู้จะช่วยได้บ้างหรือเปล่า
เพราะการจะหาเครื่อง server ต่อเข้าไปก็ยากพอดู (หรือเปล่า?)
แต่จริงๆ ถ้ามีเพื่อนใช้ลีนุกซ์ ก็แค่ขอให้เค้าสร้าง user ให้แค่นั้นเอง
เราก็ต่อไปเครื่องเค้าได้แล้ว (ถ้าไม่ติด firewall/nat) อิอิ
ปล. วิธีนี้เป็นวิธีที่ผมใช้ประจำเลยช่วงเน็ตโดนบลอคบ่อยๆ เนี่ย
ช่วงนี้มีข่าวบลอคเว็บกันเยอะเหลือเกิน (หรือเปล่า)
ปกติเวลาจะเข้าเว็บที่โดนบลอคกัน ก็จะต่อผ่าน proxy เอาได้
แต่เดี๋ยวนี้ก็หา proxy ยากเหลือเกิน เพราะเว็บรายชื่อก็โดนบลอคไปด้วย
ยังมีอีกหลายวิธี เช่นใช้โปรแกรม P2P ช่วย เช่น Tor แต่มันก็ช้าซะเหลือเกิน
วิธีที่พอจะได้ความเร็วหน่อยก็คือ หาคนที่ไม่โดนบลอค
เช่นคนในต่างประเทศ หรือคนที่มีลิงค์ที่อยู่นอกเหนือการควบคุม
แล้วก็ให้เค้าเปิด proxy server ให้เราเข้าไปใช้ ซึ่งบางทีอาจจะยุ่งยากนิดหน่อย
และก็อาจจะมีปัญหาเรื่องความปลอดภัยที่ต้องตั้งค่าวุ่นวายอีก
วันนี้ ผมเลยขอมาเสนอ วิธีทำ proxy server ใช้เองแบบง่ายๆ
สำหรับคนที่มีเน็ตไม่โดนบลอค เพื่อเพื่อนๆ ผู้น่าสงสารจากไทยแลนด์แดนแห่งบลอค
วิธีที่จะเสนอวันนี้คือ SSH Tunneling นั่นเองครับ
โดยเราจะใช้ฟีเจอร์ port forwarding ของ ssh ครับ
หลักการของมันก็คือ...
(รูปปลากรอบ.. วาดนานมาก.. จริงๆ คือ เอารูปในวิกิมามิกซ์กัน)
ปกติเวลาเราเข้าเว็บโดนบลอคจะเป็นแบบนี้

แต่เมื่อใช้วิธีนี้แล้ว จะเป็นแบบนี้

ก็คือ.. เราจะ ssh เข้าไปที่เครื่องที่ไม่โดนบลอค
แล้วจัดการเปิด HTTP Connection ผ่านอุโมงค์ที่สร้างขึ้น
ซึ่งวิธีนี้ตัว ISP เอง จะไม่เห็นเลยว่าเราจะเข้าเว็บอะไร ไม่รู้แม้ว่าเราจะเข้าเว็บ!
เนื่องจากในท่อของ ssh นั้นถูกเข้ารหัสตลอดทาง (เส้นสีเขียว) นั่นเอง
วิธีนี้ เราจะต้องการ
1. เครื่อง 1 เครื่องที่อยู่นอกขอบเขตการบลอค พร้อมติดตั้ง ssh server
2. user ที่จะเข้าใช้เครื่อง ssh server
3. เครื่องที่เราใช้ ติดตั้ง ssh client (บนวินโดว์เช่น PuTTY)
ตัว server นั้น เนื่องจากผมเคยต่อ ssh ไปแต่เครื่องตระกูลพวก linux
ซึ่งมันก็เปิดกันเป็นปกติอยู่แล้วไม่ต้องทำอะไร แต่บนวินโดว์คงต้องหาเอาเองนะ อิอิ
ถัดมา วิธีต่อ..
ถ้าเป็น linux ก็ง่ายมาก เปิด terminal ขึ้นมา
แล้วสั่ง ssh [username@host] -D [port] เช่น ssh abc@patinya.com -D 55555 แค่นี้เอง
แต่ถ้าเป็น PuTTY ก็ตั้งค่าตรง Connection > SSH > Tunnels
ใส่ Source port เป็นเลข เช่น 55555 ไม่ต้องใส่ Destition
เลือกชนิดเป็น Dynamic แล้วก็กด Add
หลังจากนั้นเราก็มาเซ็ต proxy ที่เบาร์เซอร์
เป็น localhost พอร์ตตามที่ตั้ง (เช่น 55555) ชนิด SOCKS
เท่านี้ การเล่นอินเทอร์เน็ตของเรา ก็จะผ่านท่อของ ssh ไปออกที่เครื่อง server
ทำให้ ISP ไม่สามารถรู้ได้ว่า เราเข้าเว็บอะไรอยู่ บลอคไม่ได้
ข้อเสียของวิธีนี้ก็คือ.. เราต้องหาเครื่องที่อยู่นอกขอบเขตการบลอค
แล้วก็ให้เจ้าของเครื่องสร้าง user ให้เรา ssh เข้าไปได้
แต่ผมว่ามันก็พอๆ กับการให้เจ้าของเครื่องติด proxy server อ่ะแหละน่า
เผลอๆ อันนี้ง่ายกว่าอีก แถม secure กว่าด้วย
แล้วต่อผ่าน proxy ดีไม่ดี อาจจะโดนสกรีนในชั้น Application ก็ได้
แต่ ssh นี่คงเป็นไปได้ยาก เพราะมันเข้ารหัสหมด
และมันเป็น protocol ที่คิดว่าไม่น่าจะโดนบลอคง่ายๆ ด้วย
เหมือนกับ http, smtp ถ้าโดนบลอคคงปัญหาใหญ่
เรื่องของ port forwarding เอามาประยุกต์ใช้ได้อีกหลายอย่าง
อีกอย่างที่ผมชอบก็คือการทะลุ NAT แบบว่า เน็ตที่หอมันผ่าน NAT
แต่วันดีคืนดี ผมอยากรีโมตเข้าเครื่อง จะทำยังไง อะไรประมาณนี้
ผมก็ ssh จากเครื่องที่หอ ไป server แล้วสั่ง server ให้เปิดพอร์ทรอซักพอร์ทนึง
ถึงเวลาเข้าจากข้างนอก ผมก็ต่อเข้า server ที่พอร์ทที่เปิดทิ้งไว้
แล้วมันก็จะ forward มาเครื่องที่หอให้ เจ๋งดี (ไว้สั่งโหลดบิต!!?!)
พอล่ะครับ ไปหล่ะ ไม่รู้จะช่วยได้บ้างหรือเปล่า
เพราะการจะหาเครื่อง server ต่อเข้าไปก็ยากพอดู (หรือเปล่า?)
แต่จริงๆ ถ้ามีเพื่อนใช้ลีนุกซ์ ก็แค่ขอให้เค้าสร้าง user ให้แค่นั้นเอง
เราก็ต่อไปเครื่องเค้าได้แล้ว (ถ้าไม่ติด firewall/nat) อิอิ
ปล. วิธีนี้เป็นวิธีที่ผมใช้ประจำเลยช่วงเน็ตโดนบลอคบ่อยๆ เนี่ย
ไอ้แพท..





/me ขอใช้มั่ง...
#1 By PaePae on 2007-03-29 13:03