Trang web tải được qua VPN nhưng apt không tới được kho gói
Một trình duyệt chạy qua VPN không nói gì về cấu hình proxy của apt. Hãy đọc giai đoạn đang lỗi, xuất cấu hình đang có hiệu lực, rồi đặt proxy mà apt thực sự đọc.
VPN kết nối được, wiki nội bộ mở trong trình duyệt, nhưng apt update vẫn treo trên một máy nhân bản mà nó không tới được. Trong bức tranh đó, đường hầm không hỏng chỗ nào. Trình duyệt và trình quản lý gói đã đưa ra hai quyết định proxy riêng biệt, và chỉ một trong hai được cấu hình.
Quyết định nào thất bại là điều duy nhất đáng xác định trước tiên.
Đọc lỗi trước khi chạm vào một thiết lập
Mỗi giai đoạn để lại một thông báo khác nhau. Tên không bao giờ phân giải được là DNS, kết nối không bao giờ hoàn tất là định tuyến hoặc tường lửa, lỗi 407 trả về ngay là xác thực proxy, phàn nàn về chứng chỉ là kiểm tra TLS, và cảnh báo chữ ký là siêu dữ liệu của kho gói. Năm sự cố đó cần năm cách sửa khác nhau, và một dòng proxy dán đè lên vấn đề DNS chỉ chuyển chỗ treo đi.
Sao chép đúng dòng đó và kho gói mà nó nêu tên trước khi thay đổi bất cứ điều gì. Một ký ức mơ hồ kiểu „nó bị quá thời gian“ chính là thứ biến chẩn đoán mười phút thành cả một buổi chiều.
APT giữ cấu hình proxy riêng của nó
APT đọc /etc/apt/apt.conf.d/, tệp apt.conf chính và mọi tệp mà APT_CONFIG chỉ ra. Nó không đọc hồ sơ proxy của màn hình nền, thiết lập mạng của GNOME hay tiện ích trình duyệt. Ngược lại, tầng truyền tôn trọng các biến môi trường proxy, nên một export https_proxy=... chạy được trong shell của bạn không chứng minh gì về một bộ hẹn giờ chạy trong môi trường khác.
Xuất những gì tiến trình đang lỗi thực sự thấy: apt-config dump | grep -i proxy.
Hãy chạy lệnh đó dưới đúng người dùng mà thao tác lỗi đang chạy. Nếu root đọc một tập tệp khác, hoặc một bộ hẹn giờ của systemd khởi động với môi trường khác, bản xuất sẽ khác đi, và chính khác biệt đó là câu trả lời. Hai giá trị proxy mâu thuẫn nhau tệ hơn một giá trị bị thiếu, vì tầng truyền đi theo kết quả khớp cụ thể nhất mà nó tìm được.
Đặt proxy ở nơi chủ sở hữu cấu hình mong đợi
Với một proxy rõ ràng đã được quản trị viên phê duyệt, một mẩu nhỏ trong tệp mới là đủ:
Acquire::http::Proxy "http://proxy.corp.example:3128/";
Acquire::https::Proxy "http://proxy.corp.example:3128/";
Acquire::http::Proxy::archive.example.internal "DIRECT";Dòng thứ ba là phần mà hầu hết ví dụ bỏ qua. Khóa theo từng máy chủ lấn át giá trị chung, nên một máy nhân bản nội bộ tới được qua đường hầm có thể bỏ qua proxy trong khi mọi thứ khác vẫn đi qua nó. DIRECT là giá trị được ghi trong tài liệu cho việc này, không phải chuỗi rỗng.
Thêm mẩu đó thành một tệp mới có đánh số, ví dụ /etc/apt/apt.conf.d/95proxy. Ghi đè lên tệp của bản phân phối nghĩa là lần cập nhật gói tiếp theo sẽ lặng lẽ hoàn nguyên thay đổi của bạn.
Thông tin xác thực nằm ngoài URI
Tài liệu tham chiếu tầng truyền của APT chỉ tới apt_auth.conf cho phần xác thực, và đó chính là chỗ dành cho tên người dùng và mật khẩu. Nhúng chúng vào URI của proxy sẽ đưa chúng vào danh sách tiến trình, lịch sử shell và mọi bản xuất cấu hình bị dán vào phiếu hỗ trợ. Tệp xác thực cần quyền hạn chặt, vì nó là kho thông tin xác thực.
Cũng hãy kiểm tra lược đồ. Một kho HTTPS vẫn có thể tới được qua proxy HTTP; tầng truyền là lựa chọn tách khỏi lược đồ URI của máy nhân bản.
Trung tâm phần mềm đồ họa là một giao diện riêng. Nếu nó dùng PackageKit hoặc phần phụ trợ snap, mẩu APT chẳng thay đổi gì cho nó, nên hãy xác nhận tiến trình nào đã gửi yêu cầu lỗi.
Xác nhận đường đi, không chỉ mã thoát
Khi mẩu đã vào chỗ, hãy quan sát yêu cầu thay vì tin vào một kết quả xanh. apt-get -o Debug::Acquire::http=true update in ra lần thử kết nối, proxy mà nó chọn và mã phản hồi, điều này tách một proxy sai khỏi một proxy đã từ chối bạn.
Sau đó thử trường hợp không nên chạy được. Ngắt VPN và xác nhận máy nhân bản nội bộ thôi trả lời; nếu nó vẫn tải được, thì có gì đó đang định tuyến vòng qua đường hầm hoặc một bộ nhớ đệm cũ đang phục vụ bạn. Xác nhận đường được phép vẫn kiểm tra TLS và vẫn kiểm tra chữ ký của kho gói, vì một proxy soi lưu lượng không phải lý do để tắt cả hai. Cũng xác nhận rằng một máy khách chưa xác thực nhận được sự từ chối rõ ràng thay vì một lần hết thời gian im lặng.
Giữ mẩu đang chạy được và đầu ra lỗi cạnh nhau trong nhật ký thay đổi. Người tiếp theo gặp đúng chỗ treo đó sẽ nhận ra khác biệt hai dòng nhanh hơn bất kỳ lời giải thích nào.