Friday, July 23, 2004

SoftEther ภาคต่อ

(ต่อจากภาคที่แล้ว)

ระยะหลังนี้เครือข่ายที่ทำงานหันมาติดตั้ง Firewall กันมากขึ้น หลายปีก่อนไม่มีหรอก อะไรๆก็เปิดหมด เดี๋ยวนี้เปิดรูไว้ให้นิดเดียว พอดูเวบได้ กับเล่น ssh ได้เป็นบางเครื่อง แต่ก็คุยกันได้ เครื่องไหนอยากอยู่นอกกำแพงไฟ ให้เขียนใบสมัครไปที่ Network Admin ก็เลยจัดการขอเอา Thaigate ออกไปดูดอากาศข้างนอก เพราะต้องเปิด HTTP/SMTP/NNTP/... Servers

เดือดร้อนพอสมควร จนต้องทำ ppp over ssh ต่อ Tunnel เข้ามากับเครื่อง Linux ที่อยู่ใน LAN ภายใน แล้วก็รัน PoPToP (PPTPd VPN Server) บน Thaigate

จากนั้นก็ให้เครื่อง Windows ที่ใช้อยู่ภายในต่อ VPN เข้ากับ PPTPd บน thaigate ที่บังเอิญมาได้ IP Lan ภายในบนเครื่อง Linux ผ่าน ppp over ssh ได้

สุดท้าย Windows ก็ได้ IP ภายนอกมาอีกอัน (งงก็อ่านข้ามๆไป) วุ่นวายมาก จนต้องทำ Script ไว้รันทั้งสองฝั่ง พิมพ์เองไม่ไหว (แค่เขียนนี่ก็เหนื่อยแล้ว)

เข้าเรื่องสักที

คนพัฒนา SoftEther (Daiyuu Nobori ปัจจุบัน 19 ขวบ) เป็นนักเรียนอยู่ ม. Tsukuba ตัวแกเองก็มีปัญหาแบบนี้ ม. ตั้ง Firewall ไว้แยะ ต่อกับเครื่องที่บ้านไม่ได้ ลำบากมากเลยทำ SoftEther ซึ่งเป็นเหมือน VPN ต่อเครื่องที่ ม. (อยู่หลัง Firewall) เข้ากับเครื่องที่บ้านเลย

ปรากฏว่าโปรแกรมออกมาดีมาก จนได้รับการสนับสนุนจาก IPA (Information-Technology Promotion Agency) ของญี่ปุ่น ตั้งบริษัท พัฒนาออกมา แจกฟรี ! ท่าทางจะขายบริการกับหนังสือแทน

หลักการของโปรแกรมนี้จะมีสองส่วน คือ SoftEther NIC กับ SoftEther HUB ก็เหมือนกับอุปกรณ์ NIC กับ HUB ของจริงนั่นแหละ

  • SoftEther NIC เป็น Device Driver ซึ่งเมื่อติดตั้งบน Windows (Only for now) แล้วจะเหมือนมี Ethernet Card โผล่มาอีกใบนึง

  • SoftEther HUB ก็เป็น HUB ตอนนี้รันบน Windows หรือ Linux ก็ได้

การใช้งานก็ติดตั้ง SoftEther NIC บนเครื่องเรา แล้วตั้งค่าให้มันต่อเข้ากับ SoftEther HUB .จบ. เครื่องทุกเครื่องที่ใช้ SoftEther NIC ต่อเข้ากับ SoftEther HUB ตัวเดียวกัน ก็เหมือนอยู่ใน LAN เดียวกันทุกประการ (เพราะมันทำที่ระดับ Ethernet !) ไม่ว่าจริงๆแล้วจะอยู่ห่างกันแค่ไหน

ที่เป็นจุดเด่น ทำให้เหนือกว่า VPN ตัวอื่นก็ได้แก่

  1. ทะลุ Firewall ได้สารพัดแบบ พื้นฐานแล้วต้องการต่อ TCP แค่พอร์ตเดียว NIC ต่อเข้ากับ HUB ที่พอร์ต 7777

  2. ถ้าไม่มี 7777 ก็ใช้ 443 แทนได้ ซึ่ง 443 นี้พอดีไปตรงกับ HTTPs ส่วนมากองค์กรที่ให้ดูเวบได้ก็เปิดไว้ให้ใช้ได้

  3. ถ้าต่อ 7777/443 โดยตรงไม่ได้ ก็ใช้ tunnel ผ่าน SSH ไปยังเครื่องข้างนอกได้

  4. ถ้ายังไม่ได้อีก ก็ใช้ SOCKs

  5. ถ้ายังไม่ได้อีก ก็ต่อผ่าน HTTPs Proxy Server ได้

  6. องค์กรที่ให้เล่นดูเวบได้ อย่างน้อยก็ต้องมีข้อใดข้อนึงข้างบน เพราะฉะนั้น SoftEther มันก็เล่นได้เกือบซะทุกแห่ง

  7. การรับส่งข้อมูลระหว่าง HUB/NIC เข้ารหัส SSL ไว้หมด จึงใช้ทำ VPN ได้ ไม่ใช่เอาไว้เจาะทะลุ Firewall อย่างเดียว

ในการใช้งานจริง ต่อทุกเครื่องเข้ากับ Virtual HUB แบบนี้ยังไม่สนุกเท่าไร ที่เขาใช้กันคือเอา SoftEther NIC มา Bridge กับ Local Network Card ! ซึ่งความสามารถในการ Bridge นี้ Windows XP มีมาให้อยู่แล้ว

ทีนี้ก็เหมือนกับว่า SoftEther HUB อยู่บน LAN จริงๆด้วย

อยู่นอกที่ทำงาน ที่บ้าน ที่ไหน ฯลฯ แค่ต่อเข้าหา SoftEther HUB ก็เหมือนต่อเข้ากับ LAN ที่ทำงาน ! และเนื่องจากเป็นการต่อระดับ Ethernet จึงทำได้แทบทุกอย่าง

ตอนนี้ก็ใช้ SoftEther ต่อเครื่องที่ทำงานกับที่บ้านไว้บน SoftEther HUB เดียวกันหมด อยู่ที่ไหนก็เปิด Shared Folder ใช้เครื่องพิมพ์ ฯลฯ ได้หมด ตั้งค่าให้ SoftEther NIC ต่อเข้ากับ HUB เองอัตโนมัติเมื่อบูทได้ และถ้าหลุดเมื่อไรก็ Retry Infinity ครั้งได้ เรียกได้ว่าจะ reboot HUB ก็ไม่ต้องกลัว เดี๋ยวเครื่องๆทั้งหลายก็ต่อกลับเข้ามาใหม่เอง

สรุปแล้วเป็นโปรแกรมที่ชอบมากอีกตัวนึง

3 comments:

poonlap said...

เพิ่งรู้ว่าคนเขียนเป็นนักเรียน.
เคยเห็นในนิตยสารแต่ยังไม่เคยใช้. น่าสนใจดีนะ.

Anan said...

ไม่มี document ภาษาอังกิดเลยอ่าครับ
ต้องใช้ altavista ช่วย แต่ก็ยังอ่านแล้วงงงง
ผู้รู้ช่วยบอกวิธีการลงและใช้งาน s0ftether hub บนลีนุกให้ผมหน่อยได้มั้ยครับ ขอบคุณครับ

Hui/ฮุ้ย said...

Hub บน Linux ดาวน์โหลดมาแล้วต้องลิงค์เองด้วยคำสั่ง

# gcc se_hub.a -lpthread -lssl -lcrypto -o se_hub

ครับ

เท่าที่ลองใช้ บนบางเครื่อง รู้สึกว่าเพิ่ม "-static" อีกอันแล้วจะ stable กว่า ไม่งั้นจู่ๆชอบตายไปเอง