การกำหนดค่า Tailscale
Chute มีระบบเครือข่าย Tailscale แบบเนทีฟในตัว เมื่อกำหนดค่าแล้ว คุณสามารถอ้างอิงนโยบายในตัว TAILSCALE จากกฎหรือกลุ่มนโยบายเพื่อส่งทราฟฟิกผ่าน tailnet ของคุณ — เข้าถึงอุปกรณ์อื่นใน tailnet ออกผ่านโหนดทางออกหรือเข้าถึงซับเน็ตที่เพียร์ประกาศไว้
ต่างจากโปรโตคอลพร็อกซีทั่วไป Tailscale ไม่ใช่นโยบายที่กำหนดทีละบรรทัดใน [Proxy] แต่กำหนดค่าผ่านส่วน [Tailscale] ที่มีได้เพียงส่วนเดียวทั้งไฟล์ โดยลงทะเบียนโหนดกับเซิร์ฟเวอร์ควบคุมโดยใช้ auth key โดยไม่ต้องล็อกอินผ่านเบราว์เซอร์แบบโต้ตอบ
ส่วน Tailscale
ส่วน [Tailscale] กำหนดทุกอย่างที่อุปกรณ์ต้องการเพื่อเข้าร่วม tailnet:
[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
control-server = https://controlplane.tailscale.com
hostname = my-device
exit-node = 100.101.102.103
accept-routes = true
force-derp = false
หมายเหตุ: ไฟล์การกำหนดค่าทั้งหมดอนุญาตให้มีส่วน
[Tailscale]เพียงหนึ่ง ส่วนเท่านั้น ส่วน[Tailscale]ที่ซ้ำกันจะถือเป็นข้อผิดพลาดในการกำหนดค่า ทั้งนี้เนื่องจากเอนจิน Tailscale ใช้ทรัพยากรมาก และช่วงที่อยู่ของแต่ละ tailnet ไม่สามารถใช้ร่วมกันได้ — สามารถเข้าร่วม tailnet ได้ทีละอันเท่านั้น รูปแบบที่มีชื่อของ Surge คือ[Tailscale <ชื่อ>]จะถูกอ่านเป็นส่วนนี้ โดยข้อจำกัดว่ามีได้เพียงส่วนเดียวยังคงมีผล
พารามิเตอร์
| คีย์ | จำเป็น | คำอธิบาย |
|---|---|---|
auth-key |
ใช่ | auth key ของ Tailscale เมื่อใช้ control plane ทางการต้องขึ้นต้นด้วย tskey-; เซิร์ฟเวอร์ควบคุมของบุคคลที่สาม (เช่น Headscale) ยอมรับรูปแบบคีย์ของตัวเอง |
control-server |
ไม่ | ที่อยู่เซิร์ฟเวอร์ควบคุม ต้องเป็น URL แบบ http(s):// เว้นว่างไว้เพื่อใช้ control plane ทางการ controlplane.tailscale.com |
hostname |
ไม่ | ชื่ออุปกรณ์ที่รายงานไปยัง tailnet (ชื่อโฮสต์ MagicDNS) |
exit-node |
ไม่ | โหนดทางออก; ยอมรับ IP ของ tailnet (100.x) หรือชื่อ MagicDNS เว้นว่างไว้เพื่อไม่ใช้โหนดทางออก |
accept-routes |
ไม่ | จะยอมรับเส้นทางซับเน็ตที่เพียร์ประกาศหรือไม่ (บูลีน, ค่าเริ่มต้น false) |
force-derp |
ไม่ | จะบังคับใช้ DERP relay เท่านั้นและปิดการเชื่อมต่อโดยตรงหรือไม่ (บูลีน, ค่าเริ่มต้น false) |
direct-quality-guard |
ไม่ | ตรวจสอบคุณภาพของเส้นทางตรงและถอยกลับไปใช้ DERP เชิงรุกเมื่อคุณภาพลดลง (บูลีน, ค่าเริ่มต้น false) เมื่อปิดอยู่ จะเพียงบันทึกคุณภาพของเส้นทางเท่านั้น |
peer-relay |
ไม่ | peer-relay = true ให้ไคลเอนต์นี้ใช้โหนด tailnet ที่รันเซิร์ฟเวอร์ UDP relay (tailscale set --relay-server-port=<port>) ก่อน DERP เมื่อเจาะเส้นทางตรงไม่ได้ control plane ต้องอนุญาต tailscale.com/cap/relay โดยมีอุปกรณ์นี้ใน src และโหนด relay ใน dst Chute เป็นเพียงไคลเอนต์ relay ไม่เคย relay ให้โหนดอื่น ค่าเริ่มต้นปิด |
exit-dns |
ไม่ | DNS ที่ใช้สำหรับชื่อโฮสต์ที่เชื่อมต่อผ่านโหนดทางออก: auto (ค่าเริ่มต้นเมื่อตั้งค่าโหนดทางออก — แปลงชื่อผ่าน DNS ของโหนดทางออก), off หรือ IP ของเซิร์ฟเวอร์ DNS ที่เข้าถึงผ่านโหนดทางออก |
advertise-exit-node |
ไม่ | เสนออุปกรณ์นี้ให้ tailnet ใช้เป็นโหนดทางออก (บูลีน ค่าเริ่มต้น false) เฉพาะ macOS — บน iOS, tvOS และ Android จะถูกเตือนและข้ามไป |
advertise-routes |
ไม่ | ซับเน็ตในเครือข่ายท้องถิ่นที่อุปกรณ์นี้เสนอจะส่งต่อให้ tailnet เป็นรายการ CIDR คั่นด้วยจุลภาค (เช่น 192.168.1.0/24, 10.0.0.0/8) เฉพาะ macOS |
ยอมรับการสะกดแบบ Surge เป็นชื่อแฝง: control-url แทน control-server และ derp-only แทน force-derp
ค่าบูลีนยอมรับการเขียนต่อไปนี้ (ไม่คำนึงถึงตัวพิมพ์เล็กใหญ่): true/false, 1/0, yes/no, on/off
หมายเหตุ: คีย์ที่ไม่รู้จักจะถูกเพิกเฉยพร้อมคำเตือน (จะไม่บล็อกการโหลดการกำหนดค่า) คีย์ที่สะกดผิด (เช่น
force-derpเขียนเป็นforce_derp) จะปิดตัวเลือกนั้นอย่างเงียบ ๆ — โปรดตรวจสอบกับตารางด้านบน
นโยบายในตัว TAILSCALE
เมื่อกำหนดค่าส่วน [Tailscale] แล้ว ตัวระบุนโยบายในตัว TAILSCALE จะพร้อมใช้งาน — มันอยู่เคียงข้าง DIRECT และ REJECT และสามารถอ้างอิงได้โดยตรงในกฎและกลุ่มนโยบาย เมื่อไม่ได้กำหนดค่าส่วน [Tailscale] หรือปิด Tailscale อยู่ กฎที่อ้างอิง TAILSCALE จะถอยกลับไปเป็น REJECT (fail-closed)
[Proxy Group]
Mesh = select, TAILSCALE, DIRECT
[Rule]
IP-CIDR,100.64.0.0/10,TAILSCALE,no-resolve
FINAL,DIRECT
การกำหนดเส้นทางอัตโนมัติ
เมื่อเปิดใช้งาน Tailscale Chute จะแทรกกฎสามข้อต่อไปนี้ไว้ข้างหน้ากฎทั้งหมดของคุณโดยอัตโนมัติ ดังนั้นโดยทั่วไปคุณ ไม่จำเป็นต้องเขียนกฎ สำหรับการเข้าถึง tailnet เอง:
DOMAIN-SUFFIX,ts.net,TAILSCALE
IP-CIDR,100.64.0.0/10,TAILSCALE,no-resolve
IP-CIDR6,fd7a:115c:a1e0::/48,TAILSCALE,no-resolve
เมื่อโดเมนฐานของ MagicDNS ของ tailnet ไม่ใช่ ts.net — เช่นการติดตั้งแบบ Headscale — กฎ DOMAIN-SUFFIX,<โดเมนฐาน>,TAILSCALE จะถูกแทรกให้ด้วย โดยอยู่ก่อนกฎของ accept-routes
กฎที่แทรกเหล่านี้เป็นแบบรันไทม์เท่านั้นและไม่แก้ไขไฟล์การกำหนดค่าของคุณ เมื่อตั้งค่า accept-routes = true ซับเน็ตที่เพียร์ประกาศก็จะถูกแทรกเป็นกฎ IP-CIDR / IP-CIDR6 ที่เกี่ยวข้องโดยอัตโนมัติ และอัปเดตอัตโนมัติเมื่อเพียร์เพิ่มหรือถอนซับเน็ต
การใช้งาน
เข้าถึงอุปกรณ์ใน tailnet
เมื่อกำหนดค่าส่วน [Tailscale] แล้ว การเข้าถึงอุปกรณ์อื่นใน tailnet ไม่ต้องมีกฎเพิ่มเติม — กฎที่แทรกไว้ครอบคลุมช่วง tailnet และคำต่อท้าย MagicDNS อยู่แล้ว คุณสามารถระบุที่อยู่เพียร์โดยตรงด้วยชื่อ MagicDNS หรือ IP ของ tailnet:
[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
hostname = my-iphone
[Rule]
FINAL,DIRECT
ตอนนี้เป้าหมายเช่น my-pc.<tailnet>.ts.net หรือ 100.101.102.103 จะผ่าน Tailscale โดยอัตโนมัติ
ออกผ่านโหนดทางออก
ตั้งค่า TAILSCALE เป็นเป้าหมาย FINAL เพื่อส่งทราฟฟิกทั้งหมดที่ไม่ตรงกับกฎที่เจาะจงกว่าออกผ่านโหนดทางออก:
[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
exit-node = 100.101.102.103
[Rule]
FINAL,TAILSCALE
หมายเหตุ: การตั้งค่า
exit-nodeเพียงอย่างเดียวจะไม่ส่งทราฟฟิกผ่านโหนดทางออก — คุณต้องเพิ่มกฎที่ส่งทราฟฟิกไปยังTAILSCALEด้วย (เช่นFINAL,TAILSCALE) หากไม่มีกฎดังกล่าวโหนดทางออกจะถูกตั้งค่าไว้แต่ไม่ถูกใช้งาน ตัวแก้ไขการกำหนดค่าของ Chute Mac, Chute iOS และ Chute Android จะแจ้งเตือนเรื่องนี้ ส่วนของ Chute tvOS ไม่แจ้ง
ยอมรับเส้นทางซับเน็ต
เมื่ออุปกรณ์ใน tailnet ทำหน้าที่เป็น subnet router และประกาศซับเน็ตภายใน ให้เปิดใช้ accept-routes = true เพื่อเข้าถึงซับเน็ตเหล่านั้น; กฎการกำหนดเส้นทางที่เกี่ยวข้องจะถูกแทรกโดยอัตโนมัติ:
[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
accept-routes = true
ทำให้เครื่องนี้เป็นโหนดทางออก (เฉพาะ macOS)
เฉพาะ macOS iOS, tvOS และ Android ใช้ โหนดทางออกได้ แต่เป็นโหนดทางออกเองไม่ได้ คีย์ด้านล่างจะถูกอ่านบนระบบเหล่านั้นเช่นกัน แต่จะถูกเตือนและข้ามไป
Mac ที่รัน Chute สามารถเป็นโหนดทางออกได้ด้วยตัวเอง เพื่อให้อุปกรณ์อื่นของคุณออกอินเทอร์เน็ตผ่านเครื่องนี้ เปิดใช้งานได้ที่แท็บ การกำหนดค่า ของหน้าต่างหลัก → พร็อกซี → Tailscale → ให้บริการเป็น โหนดทางออก สำหรับอุปกรณ์อื่น, จากเมนูย่อย Tailscale ของแถบเมนู → ให้บริการเป็น โหนดทางออก หรือเขียนลงในไฟล์การกำหนดค่าโดยตรง:
[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
advertise-exit-node = true
หากต้องการแบ่งปันเฉพาะเครือข่ายท้องถิ่นแทนการออกอินเทอร์เน็ตทั้งหมด ให้ระบุซับเน็ตที่ต้องการ:
[Tailscale]
auth-key = tskey-auth-xxxxxxxxxxxx
advertise-routes = 192.168.1.0/24, 10.0.0.0/8
การประกาศเป็นเพียงคำเสนอเท่านั้น ผู้ดูแลระบบต้องอนุมัติเส้นทางในคอนโซลผู้ดูแล Tailscale (หรือใช้ headscale nodes approve-routes) ก่อน อุปกรณ์อื่นจึงจะเลือก Mac เครื่องนี้ได้ ระหว่างนั้นแถบเมนูจะแสดง กำลังรอการอนุมัติในคอนโซลผู้ดูแล และจะยังไม่มีทราฟฟิกใด ๆ
เมื่ออนุมัติแล้ว อุปกรณ์อื่นจะเลือกใช้ได้เหมือนโหนดทางออกทั่วไป และแถบเมนูจะแสดงจำนวนการเชื่อมต่อที่ Mac เครื่องนี้กำลังรับส่งอยู่
มีบางเรื่องที่ควรทราบก่อนเปิดใช้งาน:
- ทราฟฟิกจากอุปกรณ์อื่นจะใช้การเชื่อมต่ออินเทอร์เน็ตของ Mac เครื่องนี้ และออกไปด้วยหมายเลข IP ของเครื่องนี้ จึงถูกนับรวมกับการใช้งานของการเชื่อมต่อนี้ และถือว่ามาจากเครือข่ายนี้
- บริการจะหยุดขณะที่ Mac เข้าสู่โหมดสลีป เปิด ไม่ให้ Mac หลับขณะให้บริการ ในเมนู Tailscale เพื่อให้เครื่องตื่นอยู่เฉพาะช่วงที่ได้รับอนุมัติและกำลังให้บริการ หากปิดฝาเครื่องก็ยังคงหลับ — ไม่มีการตั้งค่าใดลบล้างข้อนี้ได้ และไคลเอนต์ macOS อย่างเป็นทางการของ Tailscale ก็มีข้อจำกัดเดียวกัน
- ไม่มีการส่งต่อ ICMP ดังนั้นการ
pingจากอุปกรณ์อื่นผ่านโหนดทางออกนี้จะไม่ได้รับการตอบกลับ ส่วนtailscale pingไม่ได้รับผลกระทบเพราะไม่ได้ใช้ ICMP
ไคลเอนต์ iOS และ tvOS อย่างเป็นทางการของ Tailscale ก็มีข้อจำกัดเดียวกันด้วยเหตุผลเดียวกัน คือส่วนขยายเครือข่ายไม่สามารถรองรับเส้นทางส่งต่อที่ทำงานต่อเนื่องยาวนานได้
เซิร์ฟเวอร์ควบคุมที่กำหนดเอง (Headscale)
นอกเหนือจาก control plane ทางการ Chute ยังรองรับเซิร์ฟเวอร์ควบคุม Headscale / Ionscale ที่โฮสต์เอง เพียงกรอก URL ที่เกี่ยวข้อง:
[Tailscale]
auth-key = your-headscale-preauth-key
control-server = https://headscale.example.com
hostname = my-device
เซิร์ฟเวอร์ควบคุมของบุคคลที่สามไม่บังคับคำนำหน้า tskey- และยอมรับ auth key ของตัวเอง การใช้ที่อยู่ http:// แบบข้อความเปล่าแนะนำเฉพาะในเครือข่ายที่เชื่อถือได้ (เช่น Headscale ที่โฮสต์เองในเครื่อง)
ข้อจำกัดที่ทราบและแนวทางปฏิบัติแนะนำ
การใช้งาน Tailscale เน้นไปที่ความสามารถที่ใช้บ่อยที่สุดในสถานการณ์พร็อกซี; คุณสมบัติบางอย่างของไคลเอนต์ทางการยังไม่รองรับ โปรดทราบความแตกต่างของพฤติกรรมต่อไปนี้:
ใช้
force-derp = trueเป็นตัวเลือกสำหรับแก้ไขปัญหาเท่านั้น โดยปกติ Chute จะเลือกการเชื่อมต่อ UDP โดยตรงกับเพียร์ (disco hole-punching) ซึ่งมักมีความหน่วงต่ำกว่าและปริมาณงานสูงกว่า DERP relay หากการเชื่อมต่อโดยตรงไม่เสถียรอย่างต่อเนื่องหรือช้ากว่า DERP บนเครือข่ายใดเครือข่ายหนึ่ง ให้เปรียบเทียบทั้งสองโหมดและเปิดforce-derpเฉพาะในสภาพแวดล้อมนั้นรองรับเฉพาะการล็อกอินด้วย auth key ไม่รองรับ SSO / การล็อกอินผ่านเบราว์เซอร์แบบโต้ตอบ, Tailscale SSH, Taildrop และ Funnel / serve บน iOS, tvOS และ Android Chute ไม่สามารถประกาศเส้นทางซับเน็ตภายในหรือให้อุปกรณ์นี้ทำหน้าที่เป็นโหนดทางออกได้ — แพลตฟอร์มเหล่านี้เข้าร่วมในฐานะผู้ใช้เส้นทางเท่านั้น ส่วนบน macOS รองรับทั้งสองอย่าง ดูหัวข้อ "ทำให้เครื่องนี้เป็นโหนดทางออก (เฉพาะ macOS)" ด้านบน
เมื่อใช้โหนดทางออกการแปลงชื่อ DNS ทั่วทั้งระบบยังคงทำในเครื่อง แต่ชื่อโฮสต์ที่เชื่อมต่อผ่าน TAILSCALE จะถูกแปลงชื่อผ่านโหนดทางออก ชื่อ MagicDNS จะถูกแปลงชื่อจากแผนที่ tailnet ในเครื่อง สำหรับการเชื่อมต่อที่กำหนดเส้นทางผ่านโหนดทางออกชื่อโฮสต์จะถูกแปลงชื่อผ่าน DNS ของโหนดทางออก (peerapi ExitDNS หรือ resolver ที่ตั้งผ่าน
exit-dns); ตั้งค่าexit-dns = offเพื่อให้การแปลงชื่อยังคงทำในเครื่อง ไม่รองรับ resolver ส่วนกลางหรือ resolver แบบ split-DNS ที่อยู่ในเครือข่ายปลายทางMagicDNS รองรับเฉพาะระเบียน A / AAAA Global Resolvers, เส้นทาง split-DNS (รายการที่มี resolver เฉพาะ) และ ExtraRecords ที่ไม่ใช่ที่อยู่ (TXT / CNAME / SRV) จะถูกเพิกเฉย; เมื่อตรวจพบจะบันทึกคำเตือนในบันทึก
MTU ภายในของเส้นทางโดยตรงถูกตั้งค่าไว้ที่ 1280 ไม่มีการค้นพบ Path MTU; ค่าที่ตั้งไว้อย่างระมัดระวังนี้ช่วยเลี่ยงหลุมดำบนลิงก์ PPPoE / ทันเนลซ้อน เส้นทาง DERP relay ไม่ได้รับผลกระทบ
ไม่รองรับ Tailnet Lock (การล็อกเครือข่าย) ใน tailnet ที่เปิดใช้การล็อกเครือข่าย คีย์ของโหนดนี้จะไม่ถูกเซ็นชื่อ และเพียร์ที่ล็อกไว้จะทิ้งทราฟฟิกจากอุปกรณ์นี้อย่างเงียบ ๆ
การเขียนที่อยู่ต้นทางใหม่ถูกใช้งานแล้ว แต่โหนดทางออกของ Mullvad ยังไม่ได้ทดสอบ ที่อยู่ masquerade ตาม capVer-104 ที่เพียร์อาจกำหนดให้ (
SelfNodeV4MasqAddrForThisPeerและคู่ v6) ได้รับการปฏิบัติตาม ทราฟฟิกที่ส่งไปยังเพียร์นั้นจึงใช้ที่อยู่ตามที่ร้องขอ ส่วนกลไกของ Mullvad ที่สร้างอยู่บนสิ่งนี้ยังไม่ได้ทดสอบกับบริการจริงการกู้คืนหลังจากการเปลี่ยนเครือข่ายขึ้นอยู่กับการแจ้งเตือนของระบบ เมื่อสลับ Wi-Fi / เซลลูลาร์ Chute จะสร้างการเชื่อมต่อใหม่ทันที; ในกรณีที่พบน้อยที่ไม่ได้รับการแจ้งเตือนการเปลี่ยนเครือข่าย การกู้คืนจะถอยกลับไปเป็นการเชื่อมต่อใหม่ผ่าน watchdog ประมาณ 3 นาที
จำนวนเพียร์ถูกจำกัดบนอุปกรณ์พกพา บน iOS, tvOS และ Android netmap จะถูกตัดให้เหลือ 256 เพียร์ — เก็บเพียร์ที่มี node ID ต่ำสุดไว้ ส่วนที่เหลือถูกทิ้งพร้อมคำเตือนหนึ่งครั้ง; macOS เก็บทั้งหมด
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก