การแก้ไขปัญหา
เมื่อพบปัญหา ให้แยกเป็นสองคำถามก่อน: ทราฟฟิกเข้าถึง Chute หรือไม่ (ปัญหาการเข้าควบคุม) และ Chute ส่งต่อมันได้หรือไม่ (ปัญหาการส่งต่อ)? มุมมองทราฟฟิกแบบเรียลไทม์ตอบคำถามนี้ได้ — เปิดแดชบอร์ด (iOS) หรือแท็บ Traffic ของหน้าต่างหลัก (Mac) แล้วลองเปิดเว็บ: หากไม่มีอะไรปรากฏ แสดงว่า Chute ไม่ได้รับทราฟฟิก; หากการเชื่อมต่อปรากฏแต่ล้มเหลว แสดงว่า Chute ไม่สามารถส่งต่อได้ ปัญหาสองครึ่งนี้มีวิธีแก้ที่แตกต่างกันโดยสิ้นเชิง
หน้านี้มีไว้สำหรับ "มันไม่ทำงาน" ถ้าคำถามคือ "มันกำลังทำอะไร" — อ่านคำขอ เก็บเนื้อหา แก้การตอบกลับ จำลองความผิดพลาด — ให้เริ่มที่การดีบักเครือข่ายแทน
ไม่มีอะไรปรากฏ: ปัญหาการเข้าควบคุม
Chute iOS
- สวิตช์ไม่ยอมเปิดและแถบการกำหนดค่าสั่น — ไม่มีการกำหนดค่าใดถูกเลือก แตะแถบ การกำหนดค่า แตะการกำหนดค่าหนึ่งจนแสดงเครื่องหมายถูก จากนั้นแตะ เสร็จสิ้น ("โปรดเลือกการกำหนดค่าก่อน")
- กล่องขออนุญาต VPN ถูกปฏิเสธ — สลับสวิตช์อีกครั้งและอนุมัติ หากโปรไฟล์ VPN ค้าง (สวิตช์เด้งกลับทันที) ให้ใช้ รีเซ็ตการกำหนดค่า VPN ในการตั้งค่าของแอป; การเริ่มครั้งถัดไปจะสร้างโปรไฟล์ใหม่และขออนุญาตอีกครั้ง
- แอป VPN อื่นกำลังเชื่อมต่ออยู่ — iOS รันทันเนล VPN ได้ครั้งละหนึ่งเท่านั้น ตัดการเชื่อมต่อแอปอื่น (หรือปิดกฎ on-demand ของมัน ซึ่งอาจแย่งทันเนลกลับไปอย่างเงียบ ๆ)
Chute Mac
- พร็อกซีระบบเปิดอยู่แต่บางแอปไม่สนใจ — เครื่องมือหลายตัว (โดยเฉพาะโปรแกรมในเทอร์มินัล) ไม่ปฏิบัติตามพร็อกซีระบบ ชี้พวกมันไปยังลิสเนอร์ของ Chute อย่างชัดเจน (Copy Shell Export Command ในเมนูทำสิ่งนี้ให้สำหรับเชลล์) หรือใช้ Enhanced Mode ซึ่งดักจับทราฟฟิกที่เลเยอร์เครือข่าย
- โหมดขั้นสูงไม่ยอมเริ่ม — network extension หรือ helper ต้องได้รับการอนุมัติ; ดูการแก้ไขปัญหาโหมดขั้นสูงสำหรับพาธการตั้งค่าระบบที่แน่นอน กรณี "System Extension Blocked" และการรีเซ็ต VPN ที่ค้าง
- ทราฟฟิกไปยังที่อยู่ LAN ข้าม Chute โดยการออกแบบ — ตรวจสอบ
skip-proxyและtun-excluded-routesในตัวเลือกเบ็ดเตล็ดก่อนสรุปว่าการเข้าควบคุมเสีย
การเชื่อมต่อปรากฏแต่ล้มเหลว: ปัญหาการส่งต่อ
- แยกเส้นทางก่อน สลับกลุ่มนโยบายของคุณเป็น
DIRECT: หากหน้าเว็บโหลดได้แบบตรงแต่ล้มเหลวผ่านพร็อกซี ปัญหาอยู่ที่เซิร์ฟเวอร์พร็อกซี — โฮสต์/พอร์ต/ข้อมูลรับรอง/วิธีเข้ารหัสผิด หรือเซิร์ฟเวอร์ล่ม รันการทดสอบเวลาแฝงกับกลุ่ม; นโยบายที่ไม่เคยผ่านการทดสอบในขณะที่ตัวอื่นผ่าน คือตัวการ - กฎที่ผิดตัวถูกจับคู่ ดูกฎที่ถูกจับคู่ของการเชื่อมต่อที่ล้มเหลวในมุมมองทราฟฟิกแบบเรียลไทม์ แล้วอ่านลำดับการประเมินกฎอีกครั้ง: กฎถูกประเมินเป็นสองรอบ ดังนั้นสำหรับคำขอที่อิงชื่อโฮสต์ กฎที่ไม่ใช่ IP ซึ่งอยู่หลังอาจถูกจับคู่ก่อนกฎ IP ที่อยู่ก่อน
no-resolveและตำแหน่งของFINALคือผู้ต้องสงสัยตามปกติ - คำตอบ DNS ดูไม่ถูกต้อง ตรวจสอบส่วน DNS: เมื่อใช้ DNS ที่เข้ารหัส ให้แน่ใจว่าตัวเซิร์ฟเวอร์ DoH/DoT เองเข้าถึงได้โดยไม่ผ่านพร็อกซี; ล้างแคช DNS หลังเปลี่ยนเซิร์ฟเวอร์ (สวิตช์ในแผงควบคุม iOS,
flushDNSจากสคริปต์ หรือDELETE /api/dns/cacheบน HTTP Control API) - แอปที่พึ่งพา UDP ทำงานผิดปกติ — ยืนยันว่านโยบายที่เลือกรองรับ UDP relay (ดูตารางความสามารถในนโยบายพร็อกซี) และจำไว้ว่า Tailscale ไม่ส่งต่อ ICMP ดังนั้นการ
pingผ่าน exit node จะเงียบ
การถอดรหัส HTTPS ไม่ถอดรหัส
- CA ต้องถูกติดตั้งและเชื่อถือด้วย — เป็นสองขั้นตอนแยกกันบน iOS; ขั้นที่สอง (การตั้งค่า → ทั่วไป → เกี่ยวกับ → การตั้งค่าความน่าเชื่อถือของใบรับรอง) คือขั้นที่ทุกคนพลาด ดูการติดตั้งและเชื่อถือใบรับรอง CA
- โฮสต์ต้องตรงกับรายการ
hostnameของ[MITM]— เฉพาะโฮสต์ที่ประกาศไว้เท่านั้นที่ถูกถอดรหัส และเฉพาะบนพอร์ต 443 เว้นแต่ส่วนต่อท้าย:port/:0ระบุเป็นอย่างอื่น - บางแอปปักหมุด (pin) ใบรับรองของตัวเองและจะล้มเหลวขณะถูกถอดรหัส — ยกเว้นโฮสต์ของพวกมันด้วยคำนำหน้า
-แทนที่จะฝืนสู้ - QUIC/HTTP-3 ไม่สามารถถอดรหัสได้ — ดู
block-quicสำหรับการบังคับไคลเอนต์ที่รองรับให้กลับไปใช้ TCP - บน iPhone และ Apple TV การถอดรหัสเป็นฟีเจอร์ที่ต้องมีใบอนุญาต: หากไม่มีใบอนุญาตจะไม่มีการถอดรหัสใดๆ และสวิตช์ MitM ไม่มีผล — ดูใบอนุญาตและการเปิดใช้งาน
การอ่านบันทึก
เมื่อหัวข้อด้านบนยังไม่ชี้ขาด บันทึกมักให้คำตอบ:
- เพิ่มระดับบันทึกชั่วคราว:
loglevel = verbose(อย่าลืมเปลี่ยนกลับ — verbose ช้า) - Chute Mac: แท็บ บันทึก ของหน้าต่างหลัก Chute iOS: หน้าจอบันทึกเซสชัน ซึ่งมีปุ่มแชร์บนแถบนำทาง และจะส่งชาร์ดทั้งหมดของรอบนั้นให้ Chute tvOS: หน้าจอบันทึกเซสชัน พร้อมตัวกรองระดับความรุนแรงด้านบน (ทั้งหมด / แจ้งเตือนขึ้นไป / คำเตือนขึ้นไป / ร้ายแรง) ใช้รีโมตอย่างเดียวก็จำกัดขอบเขตได้
- ทุกแพลตฟอร์ม: หน้า Logs ของคอนโซล หรือ
GET /api/logsผ่านAPI ควบคุม HTTP - บรรทัดคำเตือนคือบรรทัดที่น่าสนใจ: นโยบายที่ไม่รู้จัก ตัวเลือกที่ถูกปฏิเสธ และกฎที่แยกวิเคราะห์ไม่ได้ ล้วนถูกบันทึกเป็นคำเตือนเมื่อโหลดการกำหนดค่า
- บันทึกถูกแบ่งเป็นชาร์ดขนาดไม่กี่เมกะไบต์ Chute เก็บชาร์ดล่าสุดของแต่ละรอบไว้ ไฟล์ใหม่สุดจึงเป็นแค่ตอนจบของเรื่อง ไม่ใช่ทั้งเรื่อง — เอาไปให้ครบทุกไฟล์ (ส่วน Chute Android เก็บบันทึกของรอบนี้ไว้ในหน่วยความจำแทน ไม่มีไฟล์ชาร์ดบนดิสก์)
- บน macOS ตัวไฟล์เองอยู่ใต้
~/Chute/Share/<run id>/— ดูตำแหน่งไฟล์ (macOS)
การส่งชุดข้อมูลวินิจฉัย
เมื่อคุณต้องให้คนอื่นช่วยดู ไฟล์เก็บถาวรหนึ่งไฟล์ดีกว่าไฟล์หกไฟล์ที่ต้องไปหาจากแผงแชร์ บวกกับคำบรรยายอาการที่จำเอา แอปแยกชุดข้อมูลออกเป็นสองแบบ: ชุดข้อมูลวินิจฉัยขณะทำงาน ที่สร้างโดยเอนจินซึ่งกำลังทำงาน และ ชุดข้อมูลวินิจฉัยออฟไลน์ ที่แอปสร้างขึ้นเอง ทั้งสองแบบ รหัสผ่าน โทเคน คุกกี้ และข้อมูลรับรองใน URL ถูกแทนที่ด้วย <redacted> และเนื้อหาคำขอและการตอบกลับไม่รวมอยู่ด้วย
ชุดข้อมูลวินิจฉัยขณะทำงาน — สร้างโดยเอนจินที่กำลังทำงาน: สำเนาการกำหนดค่าที่ลบข้อมูลอ่อนไหวแล้ว ภาพรวมสุขภาพของเอนจิน (รวมถึงวิธีที่รอบก่อนหน้าจบลง) เหตุการณ์สำคัญของรอบนี้ กฎและนโยบายที่โหลดไว้ DNS ทราฟฟิก และส่วนท้ายของบันทึก (บน Android คือวงบันทึกในหน่วยความจำของรอบนี้ เพราะไม่มีชาร์ดบนดิสก์) ต้องมีอุโมงค์กำลังทำงานอยู่
- Chute iOS: แผงควบคุม → แถวสุดท้ายของส่วน «พร็อกซีท้องถิ่น» คือ ชุดข้อมูลวินิจฉัยขณะทำงาน — แสดงเสมอ เป็นสีเทาจนกว่าอุโมงค์จะเชื่อมต่อ และไม่ต้องใช้
external-http-controllerแตะแล้วจะสร้างชุดข้อมูลและเปิดแผงแชร์ - Chute Android: แผงควบคุม → ชุดข้อมูลวินิจฉัยขณะทำงาน ใต้แถว HTTP API — ใช้ไม่ได้จนกว่า VPN จะทำงาน
- Chute Mac: แถบเมนู → บันทึกชุดข้อมูลวินิจฉัย… — เอนจินทำงานอยู่ในแอป ชุดข้อมูลเดียวนี้จึงครอบคลุมทั้งสองแบบ และใช้ได้ไม่ว่าเอนจินจะกำลังทำงานหรือหยุดอยู่
- Chute tvOS: อุปกรณ์นี้ไม่มีแผงแชร์และไม่มีตัวเรียกดูไฟล์ ปุ่ม Download diagnostic bundle (ดาวน์โหลดชุดข้อมูลวินิจฉัย) ของคอนโซลจึงเป็นทางเดียว — สแกนคิวอาร์โค้ดในแอปแล้วเปิดหน้า Diagnostics บนอุปกรณ์ที่คุณส่งเมลได้
- ทุกแพลตฟอร์ม จากคอนโซล: ปุ่มดาวน์โหลดในหน้า Diagnostics หรือ
POST /api/diagnostics/bundle
ชุดข้อมูลวินิจฉัยออฟไลน์ — แอปสร้างขึ้นโดยไม่ใช้เอนจิน จึงใช้ได้เมื่ออุโมงค์ล่มหรือไม่เคยเริ่มเลย: รายงานโฮสต์ของแอป (เวอร์ชัน อุปกรณ์ สถานะ VPN สรุปการกำหนดค่า และหน้าวินิจฉัย «เครือข่าย / พร็อกซี / ตารางเส้นทาง» ในรูปข้อความ) เครื่องหมายการออกของรอบก่อนหน้า (รายงานเป็น «running» หากเอนจินกำลังทำงานอยู่จริง) และไฟล์บันทึกที่แอปเข้าถึงได้
- Chute iOS: การตั้งค่า → ส่วน «การวินิจฉัย» → ชุดข้อมูลวินิจฉัยออฟไลน์
- Chute Android: การตั้งค่า → ส่วน «การวินิจฉัย» → บันทึกชุดข้อมูลวินิจฉัยออฟไลน์
- Chute tvOS: การตั้งค่า → ชุดข้อมูลวินิจฉัยออฟไลน์ — Apple TV จะสร้างชุดข้อมูลแล้วแสดงคิวอาร์โค้ด สแกนด้วยโทรศัพท์ที่อยู่ในเครือข่ายเดียวกัน (หรือเปิดที่อยู่ที่แสดงบนคอมพิวเตอร์) เพื่อดาวน์โหลดไฟล์ zip — ลิงก์นี้ใช้ได้เฉพาะตอนที่หน้าจอนั้นยังเปิดอยู่
- Chute Mac: ไม่ต้องมีชุดข้อมูลออฟไลน์แยกต่างหาก — บันทึกชุดข้อมูลวินิจฉัย… ในแถบเมนูใช้ได้แม้เอนจินหยุดอยู่ และไฟล์ที่มันดึงมาก็เป็นไฟล์ธรรมดาที่คุณแนบส่งได้โดยตรง: ชาร์ดบันทึกใต้
~/Chute/Share/<run id>/และเครื่องหมายรอบการทำงาน~/Chute/Share/last-run.json— ดูตำแหน่งไฟล์ (macOS)
ชื่อไฟล์บอกว่าคุณได้แบบไหน: ชุดข้อมูลขณะทำงานคือ diagnostics-<timestamp>.zip ส่วนแบบออฟไลน์คือ diagnostics-offline-<timestamp>.zip ทั้งคู่มี manifest.json ซึ่งฟิลด์ kind ระบุอย่างเดียวกัน
ก่อนส่ง ควรอ่านบรรทัด การออกครั้งก่อน ในหน้า Diagnostics ของคอนโซลเสียก่อน: ถูกปิดเพราะหน่วยความจำ (Killed for memory) หมายความว่าระบบเรียกคืน Chute ไม่ใช่ Chute ทำงานผิดพลาด ซึ่งเปลี่ยนสิ่งที่ควรตามหาต่อไป
ทำไมการเขียนใหม่ของฉันไม่ทำอะไรเลย?
กฎเขียนใหม่ที่ไม่เคยตรงเลยจะไม่มีอาการใด ๆ — ไม่มีอะไรเกิดขึ้น ซึ่งดูเหมือนกฎที่ตรงแล้วแต่ไม่เห็นความเปลี่ยนแปลงทุกประการ คอนโซลตอบเรื่องนี้ตรง ๆ: หน้า Rules (กฎ) แสดงทุกกฎเขียนใหม่และ Mock ที่ทำงานในรอบนี้พร้อมจำนวนครั้ง ตารางนี้ติดตามกฎที่ต่างกันได้สูงสุด 512 กฎ เกินจากนั้นจะรายงานว่ามีอีกกี่กฎที่ทำงานโดยไม่ได้ติดตาม (rewrite_hit_dropped_rules ใน API) และตารางก็เป็นเพียงมุมมองบางส่วน
- กฎที่ไม่อยู่ในรายการนั้นไม่เคยตรงเลย — ตราบใดที่ตารางไม่ได้รายงานว่ามีกฎที่ไม่ได้ติดตาม ลองตรวจรูปแบบของคุณกับรูปแบบ URL ใน การเขียน URL ใหม่ ส่วน การเขียนส่วนหัวใหม่ เทียบทั้ง URL ไม่ใช่บางส่วน
- กฎที่ตรงแล้วแต่ไม่เห็นผลเป็นอีกปัญหาหนึ่ง — เปิดการเชื่อมต่อนั้นในคอนโซลแล้วอ่านแถว การเขียนใหม่ที่ใช้ ซึ่งจะระบุกฎด้วยข้อความของกฎเอง
- กฎจะเห็นทราฟฟิก HTTPS ก็ต่อเมื่อเปิด การถอดรหัส HTTPS สำหรับโฮสต์นั้นแล้ว
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก