VPN trên Mac kẹt ở «Đang ngắt kết nối»: thực ra cái gì đang chạy
Ngắt kết nối là một quá trình chuyển tiếp, không phải đường hầm đã dừng. Kiểm tra thành phần nào sở hữu việc tháo gỡ, đọc tuyến đường và DNS, và tránh giết tiến trình hàng loạt.
«Đang ngắt kết nối» là trạng thái ứng dụng khách báo cáo trong khi nó tháo dỡ một đường hầm, không phải phán quyết rằng lưu lượng đã dừng. Trên Mac, việc tháo dỡ đó diễn ra như một chuỗi ngắn, và nhãn chỉ đổi sau khi thành phần sở hữu kết nối phản hồi lại. Khi một bước chờ một trình trợ giúp, một tiện ích bổ sung hay một quyết định chính sách, nhãn có thể nằm lại đó sau khi giao diện đã biến mất, hoặc đường hầm có thể tiếp tục chuyển tiếp trong khi menu vẫn hiển thị nó. Hãy coi văn bản là «việc tháo gỡ đang diễn ra, kết quả chưa rõ» và xác định nửa nào là đúng.
Hai sự cố trông giống nhau từ thanh menu và cần phản ứng trái ngược. Ở một trường hợp, đường hầm vẫn mang gói tin và chỉ phần hiển thị là cũ. Ở trường hợp kia, đường hầm đã mất nhưng một chính sách riêng vẫn giữ lưu lượng bị chặn, điều thường là cố ý. Tuyến đường và trạng thái DNS phân biệt hai trường hợp nhanh hơn bất kỳ thao tác menu nào.
Nhãn theo dõi điều gì
Ứng dụng khách VPN giữ một máy trạng thái nhỏ, và thanh menu là hình chiếu của nó. Với kết nối do chính macOS quản lý, máy trạng thái đó nằm trong khung VPN của hệ thống. Với đường hầm do ứng dụng quản lý, nó nằm trong ứng dụng và trình trợ giúp đặc quyền của ứng dụng. Bước cuối của một lần dừng không phải là đóng một ổ cắm. Đó là giải phóng những gì đã làm đường hầm hoạt động: giao diện utun, các tuyến đường trỏ tới nó, các mục trình phân giải mà ứng dụng khách đã chèn, và mọi quy tắc tường lửa hay chính sách đã chặn lưu lượng khi đang kết nối.
Những bước đó tách rời nhau, nên một lần dừng có thể mắc kẹt ở bất kỳ bước nào. Một trình trợ giúp ngừng phản hồi, một tuyến đường mà giao diện thứ hai cũng đòi, hoặc một mục trình phân giải thuộc hồ sơ khác đều có thể khiến ứng dụng khách chờ. Nhãn là báo cáo về tiến trình của chính ứng dụng khách, khiến nó có thẩm quyền về ý định và không đáng tin về mạng.
Tìm thành phần sở hữu kết nối
Với cấu hình gốc, scutil --nc list in ra các dịch vụ mà hệ thống biết và trạng thái của chúng, còn scutil --nc status "Work VPN" cho chi tiết một dịch vụ. Một đường hầm do ứng dụng bên thứ ba giữ có thể không xuất hiện trong danh sách đó, nên một kết quả trống không phải bằng chứng rằng không có gì đang kết nối.
Khi hồ sơ thuộc về một ứng dụng, hãy dựa vào chế độ xem trạng thái của ứng dụng đó và nút «Ngắt kết nối» đã được ghi tài liệu. Đóng cửa sổ không phải yêu cầu dừng nếu một trình trợ giúp nền sở hữu đường hầm; biểu tượng biến mất và trình trợ giúp giữ giao diện sống. tài liệu tham khảo cài đặt VPN của Apple bao gồm các điều khiển gốc và nguồn gốc của cài đặt được quản lý.
Đọc giao diện, tuyến đường và DNS
Ba bước kiểm tra trả lời phần lớn câu hỏi mà không chạm vào kết nối. Điều quan trọng là diễn giải chúng cùng nhau, vì mỗi cái riêng lẻ đều gây hiểu nhầm.
scutil --nc list
netstat -rn -f inet | head -20
ifconfig | grep -A 3 '^utun'
scutil --dns | head -30
- có giao diện utun, có tuyến mặc định hoặc tuyến chia tách đi qua nó, trình phân giải trỏ tới nhà cung cấp: đường hầm vẫn hoạt động và nhãn đã cũ.
- không có utun, tuyến mặc định thông thường, DNS từ DHCP, không có internet: một chính sách chặn khi ngắt kết nối đang làm việc của nó.
- không có utun, không có tuyến, trình phân giải vẫn trỏ tới nhà cung cấp: việc tháo gỡ dừng giữa chừng, và DNS là phần còn lại cần dọn.
Sau đó gửi một yêu cầu tới máy chủ nội bộ chỉ nên trả lời qua đường hầm và một yêu cầu tới máy chủ công cộng. Khả năng tiếp cận tách chính sách khỏi trạng thái tồn dư mà không biến việc kiểm tra thành bài tập đo lường. Hãy lưu công việc từ xa trước nếu đường đi vẫn phản hồi, và chuẩn bị một đường vào thứ hai trước khi thay đổi mạng trên máy bạn quản trị từ xa.
Vì sao giết hàng loạt và xóa hồ sơ gây hiểu nhầm
Tên tiến trình như pppd, racoon và configd thuộc về những cách triển khai cụ thể. Giết chúng có thể ảnh hưởng kết nối khác, để lại tuyến đường và giao diện utun, và không cho bạn bản ghi về bước nào đã mắc kẹt. Một tên tiến trình cũ cũng không phải bằng chứng rằng nó sở hữu hồ sơ hiện tại.
Xóa và tạo lại hồ sơ là thay đổi lớn hơn việc dọn một quá trình chuyển tiếp bị mắc. Nó có thể vứt bỏ cài đặt được quản lý và vật liệu nhận dạng cục bộ mà không giải thích điều gì đã hỏng, và trên một máy Mac bị giám sát, nó có thể chỉ đơn giản được khôi phục. Hãy để việc xóa cho một cấu hình thực sự lỗi thời và thay vào đó chẩn đoán quá trình chuyển tiếp.
Một chuỗi dừng để lại dấu vết
Thứ tự dưới đây để chính các điều khiển của kết nối chịu trách nhiệm và tạo bản ghi nếu tình trạng mắc kẹt quay lại. Nó cũng giữ bạn khỏi biến một vấn đề hiển thị thành thay đổi mạng.
- Lưu công việc từ xa, và xác nhận bạn có thể tiếp cận máy Mac theo cách khác nếu nó ở xa.
- Ghi lại tên ứng dụng khách, phiên bản và hồ sơ. Ghi lại một cửa sổ ngắn bằng
log show --last 5m --predicate 'subsystem == "com.apple.networkextension"'; các bản phát hành cũ giữ ít lịch sử hơn, nên hãy chạy nó ngay sau khi mắc kẹt. - Dùng nút «Ngắt kết nối» đã được ghi tài liệu, chờ, rồi lặp lại các bước kiểm tra giao diện và tuyến đường.
- Nếu nhãn đã cũ nhưng đường hầm đã xuống, hãy để nguyên và để ứng dụng khách tự làm mới thay vì ép buộc tiến trình.
- Nếu việc tháo gỡ thực sự mắc kẹt, hãy khởi động lại ứng dụng khách, rồi lên kế hoạch khởi động lại máy Mac sau khi đã lưu công việc. Máy được quản lý cần quy trình của quản trị viên.
Sau khi phục hồi, xác nhận rằng tuyến mặc định thông thường và trình phân giải DHCP đã trở lại, và lưu lượng bị chặn hoặc đã được khôi phục hoặc vẫn bị chặn có chủ đích. Ghi lại hồ sơ và phiên bản ứng dụng khách cùng triệu chứng, để lần sau bắt đầu từ bằng chứng chứ không phải từ phỏng đoán trên thanh menu.