- Tailscale Peer Relays เปิดตัวอย่างเป็นทางการแล้ว ทำให้ผู้ใช้สามารถใช้อุปกรณ์ของตนเองเป็น โหนดรีเลย์ประสิทธิภาพสูง ได้
- รองรับ การส่งต่อทราฟฟิกที่เสถียรและรวดเร็ว แม้ในสภาพแวดล้อมที่เชื่อมต่อโดยตรงได้ยากเนื่องจากไฟร์วอลล์, NAT, หรือข้อจำกัดของเครือข่ายคลาวด์
- มีการปรับปรุง throughput, การลด lock contention และ การกระจายการประมวลผล UDP socket ทำให้ประสิทธิภาพดีขึ้นอย่างมากเมื่อมีไคลเอนต์หลายรายเชื่อมต่อพร้อมกัน
- ผ่าน การรวม static endpoint ทำให้สามารถ รันรีเลย์หลัง AWS NLB เป็นต้น ได้ แม้ในสภาพแวดล้อมคลาวด์ที่ไม่สามารถค้นหาอัตโนมัติได้
- มี การรวมด้านการมองเห็นและการมอนิเตอร์ ทำให้ตรวจสอบเส้นทางทราฟฟิก, latency และสถานะรีเลย์ได้อย่างชัดเจน ซึ่งสำคัญต่อการดูแลเครือข่ายขนาดใหญ่
ภาพรวมของ Tailscale Peer Relays
- Peer Relays เป็นฟีเจอร์ที่ทำให้สามารถ รันความสามารถรีเลย์ประสิทธิภาพสูงบนอุปกรณ์ของตนเอง ได้
- นอกเหนือจาก DERP relay เดิมแล้ว ยังสามารถใช้โหนดที่ผู้ใช้ดีพลอยเองเป็นรีเลย์ได้
- หลังช่วงเบต้า มีการปรับปรุง ประสิทธิภาพ, ความเสถียร, และการมองเห็น อย่างมากจนพร้อมใช้งานระดับโปรดักชัน
- เริ่มต้นจากฟีเจอร์สำหรับหลบเลี่ยง สภาพแวดล้อม NAT ที่ซับซ้อน และขยายไปสู่ ตัวเลือกการเชื่อมต่อสำหรับเครือข่ายขนาดใหญ่
- มอบโครงสร้างที่ช่วยให้ทีมมีทั้ง ประสิทธิภาพ, การควบคุม, และความยืดหยุ่น
การปรับปรุงด้านประสิทธิภาพและความน่าเชื่อถือ
- เมื่อมีไคลเอนต์จำนวนมากเชื่อมต่อผ่านรีเลย์ จะมี throughput ที่ดีขึ้นอย่างมาก
- ไคลเอนต์จะเลือก อินเทอร์เฟซและ address family ที่เหมาะสมที่สุด ภายในรีเลย์โดยอัตโนมัติ
- รีเลย์เพิ่มประสิทธิภาพการประมวลผลแพ็กเก็ตด้วย การลด lock contention และ การกระจายงานผ่านหลาย UDP socket
- การปรับปรุงเหล่านี้ช่วยให้ ทั้งประสิทธิภาพและความเสถียรดีขึ้นในทราฟฟิกใช้งานทั่วไป และแม้ในกรณีที่เชื่อมต่อโดยตรงไม่ได้ก็ยังให้ ประสิทธิภาพใกล้เคียง mesh network
การรองรับ static endpoint
- ใน สภาพแวดล้อม public cloud มักมีกรณีที่การค้นหา endpoint แบบอัตโนมัติทำได้ยาก
- อาจไม่สามารถเปิดพอร์ตตามต้องการได้เนื่องจากกฎไฟร์วอลล์, การทำ port forwarding หรือโหลดบาลานเซอร์
- Peer Relays สามารถประกาศ คู่ค่า IP:port แบบคงที่ ได้ผ่านแฟลก
--relay-server-static-endpoints
- ทำให้ไคลเอนต์ภายนอกสามารถส่งต่อทราฟฟิกผ่านรีเลย์ได้ แม้อยู่หลังโครงสร้างพื้นฐานอย่าง AWS Network Load Balancer
- ฟีเจอร์นี้ช่วยให้สามารถสร้าง การเชื่อมต่อความเร็วสูงในสภาพแวดล้อมคลาวด์ที่มีข้อจำกัด และสามารถ แทนที่ subnet router เพื่อทำ โครงสร้าง full mesh ได้
การรวมด้านการมองเห็นและการมอนิเตอร์
- Peer Relays ผสานเข้ากับเครื่องมือสังเกตการณ์ของ Tailscale โดยตรง ทำให้เข้าใจการทำงานของรีเลย์ได้อย่างชัดเจน
- คำสั่ง
tailscale ping ใช้ตรวจสอบได้ว่ารีเลย์ถูกใช้งานอยู่หรือไม่, เข้าถึงได้หรือไม่, และมีผลต่อ latency กับความน่าเชื่อถืออย่างไร
- เมื่อเกิดปัญหา สามารถตัดสินได้ทันทีว่าทราฟฟิกกำลังผ่านรีเลย์หรือไม่ และสถานะของรีเลย์ปกติหรือไม่
- มี ตัวชี้วัดสำหรับการมอนิเตอร์ คือ
tailscaled_peer_relay_forwarded_packets_total, tailscaled_peer_relay_forwarded_bytes_total
- สามารถเชื่อมต่อกับ Prometheus, Grafana เป็นต้น เพื่อ วิเคราะห์รูปแบบทราฟฟิก, ตรวจจับความผิดปกติ, และติดตามสถานะเครือข่าย
การเปิดให้ใช้งานทั่วไปและแนวทางการดีพลอย
- Peer Relays ที่เปิดให้ใช้งานทั่วไปแล้ว กลายเป็น องค์ประกอบหลักของความสามารถในการขยายตัวของ Tailscale
- มอบ การเชื่อมต่อความเร็วสูงและ latency ต่ำ เมื่อไม่สามารถใช้เส้นทางตรงได้
- ทำงานได้แม้ในสภาพแวดล้อมคลาวด์ที่มีข้อจำกัด ด้วย การดีพลอยแบบอิง static endpoint
- รองรับ โครงสร้าง full mesh ภายใน private subnet และ การกำหนดเส้นทางควบคุมขาเข้า/ขาออก
- ยังคงรักษาหลักการความปลอดภัยพื้นฐานของ Tailscale เช่น การเข้ารหัสแบบ end-to-end, การเข้าถึงแบบสิทธิ์น้อยที่สุด, และ พฤติกรรมที่คาดการณ์ได้
- สามารถเปิดใช้งานผ่าน CLI ได้บนทุกโหนดที่รองรับ และรองรับ การควบคุมด้วย ACL และการทยอยดีพลอย
- Peer Relays สามารถใช้งานได้ใน ทุกแพ็กเกจราคา (รวมถึงแผน Personal ฟรี)
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ถ้า Tailscale ได้รับความไว้วางใจเพราะ “เปิดกว้าง (open)” ก็ควรรู้ไว้ด้วยว่าในขณะเดียวกัน ไคลเอนต์บางตัวเป็นซอฟต์แวร์ปิด
มันถูกแจกจ่ายผ่านช่องทางทางการเท่านั้น (เช่น Apple App Store) และอยู่ภายใต้การควบคุมของพวกเขาอย่างสมบูรณ์
ตรรกะที่ใช้อธิบายจุดยืนนี้ค่อนข้างน่าประหลาดใจ คือประมาณว่า “ถ้าผู้ใช้ยอมใช้ OS แบบปิดได้ Tailscale จะปิดด้วยก็ไม่เป็นไร”
โครงสร้างแบบนี้ทำให้น่าเชื่อถือได้ยากใน สภาพแวดล้อมที่มีข้อจำกัดด้านการเชื่อมต่อ
ต่อให้เหนือกว่าคู่แข่งในทางเทคนิค ท้ายที่สุดมันก็เป็นแค่ ธุรกิจ เท่านั้น ถ้าเป็นไปได้ก็ควรสนับสนุนทางเลือกซอฟต์แวร์เสรี
ประเด็นบน GitHub ที่เกี่ยวข้อง
ถ้าผู้ใช้สามารถบิลด์จากซอร์สได้เอง ก็ยังพอปรับปรุงประสิทธิภาพได้ แต่ถ้าไม่มีอำนาจควบคุม ก็ไม่มีทางแก้จุดที่ไม่พอใจได้เลย
ซอฟต์แวร์เชิงพาณิชย์มักมีคุณภาพต่ำ ต้องพึ่งการอัปเดต และให้ความสำคัญกับความเร็วในการออกของมากกว่าความสมบูรณ์ของตัวผลิตภัณฑ์
ติดตั้งได้ด้วยคำสั่ง
go install tailscale.com/cmd/tailscale{,d}@latestและมีคำอธิบายในวิกิทางการGUI เป็นซอฟต์แวร์ปิด แต่ CLI เปิดทั้งหมด จึงยังใช้งานได้ในสภาพแวดล้อมเครือข่ายที่มีข้อจำกัด
ถ้ารำคาญจริง ๆ ก็ใช้ brew หรือ CLI ควบคุมแทนได้
ผมก็กำลังพัฒนาแอปที่มีโครงสร้างคล้ายกัน โดยจะให้ CLI เป็นโอเพนซอร์สทั้งหมด และขาย GUI แบบเสียเงิน
วิธีนี้ทำให้พัฒนาต่อและยังเลี้ยงชีพได้
ตอนนี้กำลังพัฒนา GUI และ CLI ควบคู่กันบนพื้นฐานของไลบรารี validate
เพิ่งตั้งค่า Tailscale ไปเมื่อไม่นานนี้ แล้ว ping ลดจาก 16ms เหลือ 10ms และแบนด์วิดท์เพิ่มขึ้นสามเท่า
พอใช้ร่วมกับ Moonlight/Sunshine ก็สามารถสตรีมเกม Windows จากเดสก์ท็อป Linux มายัง MacBook ได้ที่ 50Mbps/10ms
ตั้งเราเตอร์ให้เป็นแค่ peer node โดยไม่ต้องทำ port forwarding
อยากรู้ว่าโดยพื้นฐานแล้ว Tailscale เน้น การแชร์ระหว่างผู้ใช้ที่เชื่อถือกันได้ เป็นหลักหรือเปล่า
ถ้าอย่างนั้นมันก็ยังเปิดเผยต่ออินเทอร์เน็ตอยู่ไม่ใช่หรือ เลยยังสับสน
สงสัยว่า โมเดลหารายได้ ของ Tailscale คืออะไร ชอบบริการนี้ แต่กังวลเรื่องความยั่งยืนระยะยาว
บางครั้งก็รู้สึกเหมือนโดน จำกัดความเร็ว (rate limit) ด้วย
ถ้าทีมใหญ่ขึ้น แผนแบบเสียเงินแทบจะจำเป็น และฟีเจอร์อย่าง serve/funnel กับ SSH ก็มีประโยชน์มาก
ก่อนหน้านี้เราใช้ Zerotier ใช้ฟรีอยู่หลายปี ก่อนจะเริ่มจ่ายเดือนละราว 5 ดอลลาร์เมื่อจำนวนผู้ใช้เพิ่มขึ้น
แต่ขึ้นอยู่กับสภาพเครือข่าย บางครั้งอาจต้องใช้รีเลย์ (relay)
ทางเลือกโอเพนซอร์สมี Headscale และ Netbird
การเปลี่ยนมาใช้ Peer Relay ถือเป็นชัยชนะครั้งใหญ่สำหรับสาย self-host ในสภาพแวดล้อม NAT
ไม่ต้องตั้งค่า DERP server เองโดยตรงแล้ว ทำให้ UX ดีขึ้น
Peer Relay ถูกสร้างขึ้นโดยนำ โครงสร้างพื้นฐานของ subnet router และ exit node ที่มีอยู่แล้วกลับมาใช้ใหม่ จึงไม่ได้มีภาระในการพัฒนาสูงมาก
มันจำเป็นต่อการเชื่อมต่อที่เสถียรแม้ในสภาพแวดล้อม NAT ที่จำกัดอย่าง AWS
ผลลัพธ์คือทั้ง latency และประสบการณ์ผู้ใช้ ดีขึ้น
การเพิ่ม Peer Relay น่าจะช่วยลดโอกาสเกิดปัญหาแบบนี้ลงอีก
ประเด็นสำคัญคือ Peer Relay รองรับ UDP
DERP ใช้ TCP เป็นฐาน จึงมีปัญหาเรื่อง latency สำหรับการสตรีมเกมหรือการสื่อสารด้วยเสียง
Peer Relay ใช้ UDP จึงเหมาะกับทราฟฟิกแบบเรียลไทม์มากกว่าอย่างชัดเจน
โดยไม่ต้องตั้งค่า DERP instance แยก ก็เปิดใช้ได้ทันทีจาก subnet router เดิม
คอมเมนต์ AI แบบนี้บั่นทอนความเชื่อมั่นของชุมชน จึงควรหลีกเลี่ยง
ถ้ามี Relay หลายตัว อยากรู้ว่า Tailscale จะเลือก โหนดที่มี latency ต่ำที่สุด โดยอัตโนมัติหรือไม่
Tailscale ช่วยได้มากในสภาพแวดล้อม CGNAT จริง ๆ
ผมรันระบบ AI vision บน Google Cloud Run แต่ ISP บล็อก port forwarding ไว้
ผ่าน Tailscale ทำให้คอนเทนเนอร์ Cloud Run กับกล้องสื่อสารกันได้เหมือนอยู่ใน LAN เดียวกัน
ด้วย Peer Relay ก็คาดว่าปัญหา latency ที่เกิดตอนคอนเทนเนอร์รีสตาร์ตบ่อย ๆ จะลดลงด้วย
แต่ก็ยังสงสัยว่าในสภาพแวดล้อมที่ใช้ โหนดชั่วคราว (ephemeral) การเลือก Relay ทำงานอย่างไร
ตอนนี้ผมใช้เครือข่าย WireGuard ที่ตั้งค่าเองอยู่แล้ว เลยอยากรู้ว่า Tailscale ทำอะไรอยู่เบื้องหลังบ้าง
มันมีฟังก์ชัน “เวทมนตร์” เยอะ เช่น ปรับ DNS, routing, firewall ให้อัตโนมัติ จนรู้สึกไม่ค่อยสบายใจ
ดูเอกสารทางการแล้ว แต่รายละเอียดเชิงลึกยังไม่พอ
อยากรู้ว่ามันทำงานได้ดีแม้กับการตั้งค่าเครือข่ายที่ซับซ้อนหรือไม่
บน Linux มีรูปแบบการตั้งค่าที่หลากหลายจึงซับซ้อน
มีอธิบายในบทความบล็อกที่เกี่ยวข้องด้วย
การทำงานหลักมีดังนี้
/etc/resolv.confในสภาพแวดล้อมที่ปรับแต่งหนักมากอาจมีปัญหาได้ แต่สามารถแก้ผ่านการซัพพอร์ตได้
เปิดหน้าเว็บบนมือถือแล้วไม่เห็นปุ่มปิด จึง ปิดโมดัลไม่ได้
ดูสกรีนช็อตประกอบ
สุดท้ายก็หาเจอ แต่ตำแหน่งมันแปลก ๆ