2 คะแนน โดย GN⁺ 2024-04-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

Wireproxy: พร็อกซี Socks5/HTTP หรือท่อเชื่อมต่อในฐานะไคลเอนต์ Wireguard

  • wireproxy เป็นแอปพลิเคชันที่ทำงานทั้งหมดใน user space เชื่อมต่อกับ wireguard peer และให้บริการพร็อกซี socks5/http หรือท่อเชื่อมต่อแก่เครื่อง
  • มีประโยชน์เมื่อคุณต้องการเชื่อมต่อไปยังบางเว็บไซต์ผ่าน wireguard peer แต่ไม่อยากยุ่งยากกับการตั้งค่า network interface ใหม่

เหตุผลที่ต้องใช้สิ่งนี้

  • เมื่อต้องการใช้ wireguard เป็นพร็อกซีเพื่อส่งทราฟฟิกบางส่วนเท่านั้น
  • เมื่อต้องการหลีกเลี่ยงการใช้สิทธิ์ root เพื่อแก้ไขการตั้งค่า wireguard
  • ปัจจุบัน ผู้ใช้สามารถรัน wireproxy ที่เชื่อมต่อกับเซิร์ฟเวอร์ wireguard ในต่างประเทศ และตั้งค่าให้เบราว์เซอร์ใช้งานกับบางเว็บไซต์ได้
  • wireproxy แยกขาดจาก network interface โดยสมบูรณ์ และไม่ต้องใช้สิทธิ์ root ในการตั้งค่า
  • ผู้ใช้ Amnezia VPN สามารถใช้ wireproxy เวอร์ชันที่ @juev fork ไว้ได้

ความสามารถ

  • static routing สำหรับ TCP ทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์
  • พร็อกซี SOCKS5/HTTP (ขณะนี้รองรับเฉพาะ CONNECT)

สิ่งที่ต้องทำ

  • รองรับ UDP ใน SOCKS5
  • static routing สำหรับ UDP

วิธีใช้งาน

./wireproxy -c [config 경로]
  • ให้ความสามารถด้านพร็อกซีในฐานะไคลเอนต์ wireguard แบบ user space
  • -h คือช่วยเหลือ, -c คือพาธไฟล์ตั้งค่า, -s คือโหมดเงียบ, -d คือรันเบื้องหลัง, -v คือแสดงเวอร์ชัน, -n คือโหมดตรวจสอบเฉพาะความถูกต้องของไฟล์ตั้งค่า

คำแนะนำในการบิลด์

git clone https://github.com/octeep/wireproxy
cd wireproxy
make

การใช้งานร่วมกับ VPN

  • สามารถดูวิธีใช้ wireproxy บน MacOS ร่วมกับแท็บคอนเทนเนอร์ของ Firefox และการเริ่มทำงานอัตโนมัติได้จากลิงก์ดังกล่าว

ตัวอย่างไฟล์ตั้งค่า

  • การตั้งค่า [Interface] และ [Peer] มีความหมายและไวยากรณ์เดียวกับการตั้งค่า wg-quick
  • TCPClientTunnel และ TCPServerTunnel คือท่อเชื่อมต่อที่ส่งต่อทราฟฟิก TCP ไปยังปลายทางที่กำหนดจากเครื่องโลคัลและจากเครือข่าย wireguard ตามลำดับ
  • STDIOTunnel คือท่อเชื่อมต่อที่เชื่อม standard input และ output ของโปรเซส wireproxy ไปยังปลายทาง TCP ที่กำหนดผ่าน wireguard
  • Socks5 และ http จะสร้างพร็อกซี socks5 และพร็อกซี http บน LAN และกำหนดเส้นทางทราฟฟิกทั้งหมดผ่าน wireguard
  • หากมีการตั้งค่า wireguard อยู่แล้ว สามารถนำเข้ามาใช้ในไฟล์ตั้งค่าของ wireproxy ได้
  • รองรับหลาย peer และต้องระบุ AllowedIPs เพื่อให้ wireproxy ทราบว่าควรส่งต่อไปยัง peer ใด

ความเห็นจาก GN⁺

  • wireproxy อาจมีประโยชน์มากสำหรับผู้ใช้ที่ต้องการเข้าถึงอินเทอร์เน็ตอย่างปลอดภัยผ่าน VPN โดยไม่ต้องมีความรู้เชิงลึกด้านการตั้งค่าเครือข่าย
  • แอปพลิเคชันนี้น่าสนใจตรงที่ช่วยให้ผู้ใช้กำหนดเส้นทางทราฟฟิกบางส่วนผ่าน wireguard ได้ โดยไม่ต้องเปลี่ยนการตั้งค่าเครือข่ายระดับระบบ
  • อย่างไรก็ตาม หากผู้ใช้ไม่มีความเข้าใจด้านความปลอดภัยเครือข่ายมากพอ ก็ต้องระวัง เพราะการตั้งค่าที่ผิดพลาดอาจก่อให้เกิดช่องโหว่ด้านความปลอดภัยได้
  • เมื่อนำเทคโนโลยี wireguard มาใช้ ควรพิจารณาข้อจำกัดทางกฎหมายและนโยบายความเป็นส่วนตัวในพื้นที่นั้น ๆ รวมถึงตรวจสอบว่าการใช้ VPN ได้รับอนุญาตหรือไม่
  • โครงการโอเพนซอร์สอื่นที่มีความสามารถคล้ายกัน ได้แก่ OpenVPN, SoftEther VPN เป็นต้น โดยผู้ใช้ควรเลือกเครื่องมือให้เหมาะกับความต้องการของตน

1 ความคิดเห็น

 
GN⁺ 2024-04-03
ความคิดเห็นจาก Hacker News
  • การพูดคุยเกี่ยวกับเครื่องมือเล็ก ๆ ที่มีประโยชน์

    • ผู้ใช้คนหนึ่งใช้เครื่องมือนี้เพื่อพร็อกซีแท็บ Firefox บางแท็บไปยังเราเตอร์ที่บ้านซึ่งใช้ WireGuard เครื่องมือนี้ทำงานได้โดยไม่ต้องใช้โปรโตคอลพร็อกซีระดับแอปพลิเคชันหรือ SSH
    • ผู้ใช้อีกรายชอบใช้ soks ร่วมกับ WireGuard โดยมันสามารถนำอินเทอร์เฟซ WireGuard เดิมกลับมาใช้ซ้ำได้ และผู้ใช้รายนั้นได้อธิบายรายละเอียดไว้ในบล็อกโพสต์ของตน
    • อีกเครื่องมือหนึ่งคือ onetun
    • ผู้ใช้คนหนึ่งกล่าวถึง pproxy ว่าเป็นเครื่องมือที่สามารถใช้แทน SSH tunnel ได้ โดย pproxy สามารถแปลงโปรโตคอล tunnel หลายแบบเข้าหากันและมีความสามารถด้าน routing ผู้ใช้รายนั้นใช้มันเพื่อแปลง SSH SOCKS5 เป็น HTTP proxy
  • ข้อมูลเกี่ยวกับไคลเอนต์พร็อกซีหลากหลายแบบ

    • มีไคลเอนต์พร็อกซีแบบหลายโปรโตคอลหลายตัวที่รองรับความสามารถนี้ ตัวอย่างโอเพนซอร์สได้แก่ sing-box, clash-meta และไคลเอนต์อื่น ๆ ที่อิงกับ clash รวมถึง xray
    • ไคลเอนต์แบบปิดซอร์สมี Surge Mac/iOS
  • คำถามเกี่ยวกับการทำเซิร์ฟเวอร์แบบ user-space

    • ผู้ใช้คนหนึ่งสงสัยว่ามี implementation ฝั่งเซิร์ฟเวอร์ที่รันอยู่ใน user-space ทั้งหมดโดยไม่ต้องใช้ tun/tap device หรือไม่ และคาดว่าน่าจะต้องมี IP stack แบบ user-space บางประเภทสำหรับสิ่งนี้
  • คำแนะนำเกี่ยวกับเครื่องมือสำหรับบริการ VPN เฉพาะราย

    • มีการแชร์ประสบการณ์ที่ดีกับการใช้ mullvad-proxy สำหรับ Mullvad VPN โดยมันฝังเครื่องมือ Mullvad CLI มาให้ ทำให้สลับเซิร์ฟเวอร์ได้ง่าย และแยกออกจากเครื่องโฮสต์ นอกจากนี้ยังประกอบด้วย nginx และสคริปต์บางส่วน จึงคาดว่าน่าจะรองรับ SOCKS5 ได้ดี
  • การตอบรับเชิงบวกต่อเครื่องมือที่เขียนด้วยภาษา Go

    • ผู้ใช้คนหนึ่งคิดว่าน่าจะเขียนเครื่องมือแบบนี้ด้วยภาษา Go ได้ไม่ยาก และก็พบว่าเป็นเช่นนั้นจริง
  • การพูดคุยเกี่ยวกับกรณีการใช้งานส่วนตัว

    • ผู้ใช้คนหนึ่งคิดอยากใช้เครื่องมือแบบนี้เพื่อพร็อกซีการเชื่อมต่ออีเมลของ Thunderbird ผ่าน Tailscale exit node เพื่อให้พร็อกซีเฉพาะการเชื่อมต่ออีเมลได้โดยไม่ต้องรีไดเร็กต์ทราฟฟิกทั้งหมดไปยัง exit node
  • การกล่าวถึงความสามารถของ sing-box

    • มีการแชร์ข้อมูลว่า sing-box ก็มีความสามารถแบบเดียวกัน