Ngiêm cấm sử đụng PROXY và VPS vào mục đích trái pháp luật bạn sẽ phải chịu toàn bộ trách nhiệm trước pháp luật khi sử dụng dịch vụ của chúng tôi tks!
Alpine apk proxy: cấu hình, kiểm tra và xử lý lỗi tải gói

Alpine apk proxy: cấu hình, kiểm tra và xử lý lỗi tải gói

Chuyên viên Kỹ thuật ProxyVN 08-19-2026 Đang tính... phút đọc

Alpine apk proxy là cách để trình quản lý gói apk của Alpine Linux tải danh sách và gói qua một máy chủ proxy. ProxyVN đọc man page apk và mã nguồn thư viện tải của apk-tools để biết biến nào được nhận, biến nào bị bỏ qua. Bài có script mô phỏng đã chạy với proxy lab có mật khẩu.

Alpine apk proxy dùng trong tình huống nào

Alpine Linux nhỏ và nhẹ, nên nó là hệ nền quen thuộc của container, máy ảo thử nghiệm và vài thiết bị mạng. Mọi thứ cài thêm đều đi qua apk. Khi máy đứng sau tường lửa công ty hoặc cần ra mạng bằng một IP khác, lệnh apk update sẽ treo hoặc báo lỗi tải, và lúc đó anh em cần đến proxy.

Có ba tình huống hay gặp. Tình huống thứ nhất là mạng công ty chỉ cho ra ngoài qua một proxy HTTP. Tình huống thứ hai là máy chủ ở nước ngoài tải gói chậm, và anh em muốn đi qua proxy ở gần kho gói hơn. Tình huống thứ ba là một nhóm máy dùng chung một proxy có tài khoản để tiện kiểm soát băng thông.

Bài này chỉ nói về apk, tức trình quản lý gói của Alpine. Một số bài khác trên blog cũng có chữ apk, nhưng đó là tệp APK của Android, không liên quan đến Alpine. Nếu anh em đang tìm cách cài proxy cho ứng dụng Android, bài Drony mới là chỗ cần đọc.

Bài này khác bài Docker ở đâu

ProxyVN đã có bài cấu hình proxy cho Docker, nói về daemon, client và biến môi trường của container. Bài này đi vào tầng thấp hơn: apk tự đọc biến nào, đọc theo thứ tự nào, và cách kiểm tra từng bước khi lệnh apk update không chạy.

Phần Docker chỉ xuất hiện ở cuối bài, đủ để anh em biết biến truyền vào lúc build cần khớp với biến apk đọc. Mọi chi tiết về daemon, về cấu hình client Docker, anh em xem bài đã nêu.

Phạm vi những gì đã kiểm chứng

Máy mình dùng để viết bài không có Docker và không có bản phân phối Linux nào, nên mình không chạy được apk thật. Mình đọc man page apk, man page apk-repositories và mã nguồn thư viện libfetch mà apk dùng để tải. Sau đó mình viết một script Python mô phỏng đúng các quy tắc đọc được và cho nó chạy với proxy HTTP tự dựng có mật khẩu.

Vì vậy mọi kết quả trong bài là kết quả của script mô phỏng, không phải đầu ra của lệnh apk. Chỗ nào mình suy ra từ mã nguồn mà chưa thử trên Alpine, bài sẽ ghi rõ để anh em tự kiểm tra bằng đúng lệnh được nêu.

Alpine apk proxy và repository mirror: hai việc khác nhau

Proxy và mirror là hai đường khác nhau

Proxy và mirror là hai đường khác nhau

Trước khi đặt biến môi trường, anh em cần phân biệt hai thứ hay bị lẫn. Proxy là đường đi: apk vẫn hỏi kho gói gốc, nhưng yêu cầu được chuyển qua một máy trung gian. Mirror là địa chỉ khác: anh em đổi kho gói sang một máy chủ khác có bản sao của kho gói.

Hai cách này giải quyết hai vấn đề khác nhau. Proxy xử lý chuyện máy không ra được internet trực tiếp hoặc cần đổi IP đầu ra. Mirror xử lý chuyện kho gói gốc chậm, bị chặn hoặc cần phiên bản gói cố định.

Theo man page apk-repositories, danh sách kho gói nằm trong tệp /etc/apk/repositories và các tệp .list trong thư mục repositories.d. Mỗi dòng là một địa chỉ http, https hoặc đường dẫn cục bộ. Đổi mirror nghĩa là sửa các dòng này, còn proxy thì không đụng đến chúng.

Khi nào nên chọn mirror

Nếu công ty anh em có sẵn một máy chủ mirror trong mạng nội bộ, đổi dòng trong repositories là đơn giản nhất. Gói tải về nhanh, không cần proxy và không phụ thuộc đường ra internet. Đây cũng là cách an toàn hơn cho môi trường đóng, vì anh em kiểm soát được từng phiên bản gói.

Man page cho thấy dòng kho gói có thể dùng biến, ví dụ khai báo một biến bằng dòng set rồi dùng lại trong các dòng sau. Cú pháp này có vẻ thuộc nhánh apk-tools mới. Bản apk cũ hơn trong nhiều image Alpine sẽ không hiểu dòng set, nên anh em kiểm bằng lệnh apk --version trước khi dùng.

Khi nào nên chọn proxy

Chọn proxy khi anh em không có mirror, hoặc không muốn duy trì một bản sao kho gói chỉ để cài vài thứ. Chọn proxy cả khi đường ra internet vốn phải đi qua một cổng kiểm soát. Proxy cũng hợp với việc kiểm tra kho gói từ một vị trí khác, ví dụ xem máy chủ kho có trả đúng nội dung cho khu vực đó hay không.

Có một cách kết hợp hay gặp: máy trong mạng nội bộ dùng mirror nội bộ qua NO_PROXY để đi thẳng, còn mọi địa chỉ khác đi qua proxy. Phần cấu hình bên dưới sẽ làm đúng kiểu này.

Chuẩn bị phiên bản apk, tài khoản proxy và môi trường cho Alpine apk proxy

Trước khi sửa gì, anh em ghi lại ba thông tin: phiên bản apk, loại proxy đang có và cách xác thực. Ba thông tin này quyết định cú pháp cần dùng, và thiếu một cái là dễ cấu hình sai mà không biết.

Xem phiên bản apk

Chạy lệnh apk --version trên máy Alpine để biết phiên bản. Man page mình đọc trên trang man.archlinux.org có các tùy chọn như --network và --force-refresh, còn tệp repositories có dòng set và dòng v3. Các image Alpine cũ có thể chưa có những thứ này.

Phần đọc proxy thì khác. Mình so mã libfetch ở hai bản apk-tools đánh thẻ v2.14.2 và v3.0.7. Các hàm chọn proxy, đọc NO_PROXY và gửi tài khoản proxy giống nhau ở cả hai bản, nên quy tắc dưới đây áp dụng cho cả nhánh 2 lẫn nhánh 3. Mình đọc bản sao của Chimera Linux vì máy chủ GitLab của Alpine không trả lời lúc mình tải.

Loại proxy: apk chỉ nói chuyện với proxy HTTP

Đoạn mã của hàm tạo địa chỉ proxy trong libfetch http.c chỉ chấp nhận proxy có scheme http. Nếu biến chứa địa chỉ bắt đầu bằng https:// hoặc socks5://, hàm trả về rỗng và apk đi thẳng, không báo lỗi.

Đây là bẫy dễ gặp nhất. Anh em copy một địa chỉ socks5 từ trang quản lý proxy, đặt vào http_proxy, và apk lặng lẽ bỏ qua nó. Vì vậy với apk, anh em cần proxy HTTP, thường ghi dạng http://host:cổng. Proxy SOCKS5 không dùng trực tiếp được cho apk.

Cách xác thực

Có ba kiểu xác thực hay gặp. Kiểu thứ nhất là whitelist IP: proxy nhận IP của máy anh em, không cần mật khẩu, nên chỉ cần địa chỉ và cổng. Kiểu thứ hai là tài khoản và mật khẩu nằm trong địa chỉ proxy. Kiểu thứ ba là tài khoản đặt trong biến HTTP_PROXY_AUTH.

Bài xác thực proxy bằng IP whitelist hay user password so sánh hai hướng đầu. Với máy chủ có IP cố định, whitelist gọn hơn vì mật khẩu không nằm trong biến môi trường hay lịch sử lệnh.

Định dạng thông tin proxy

Nhiều nhà cung cấp trả proxy dạng ip:port:user:pass. Apk cần dạng URL, nên anh em chuyển thành http://user:pass@ip:port trước khi đặt vào biến. Bài định dạng proxy hướng dẫn tách và ghép đúng. Nếu mật khẩu có ký tự đặc biệt như @ hoặc #, cần mã hóa phần trăm trong URL, và mình sẽ quay lại điểm này ở phần kiểm tra.

Cấu hình tối thiểu cho Alpine apk proxy bằng biến môi trường

Bốn biến môi trường apk đọc

Bốn biến môi trường apk đọc

Man page apk(8) có mục ENVIRONMENT với nhóm biến cho thư viện tải tích hợp. Trong nhóm này có bốn biến liên quan đến proxy. Mình chép lại ý chính để anh em đối chiếu.

  • HTTP_PROXY và http_proxy: địa chỉ proxy cho kết nối http.
  • HTTPS_PROXY và https_proxy: địa chỉ proxy cho kết nối https.
  • HTTP_PROXY_AUTH: giá trị cho tiêu đề Proxy-Authorization, chỉ dùng khi kết nối đi qua proxy HTTP đã cấu hình.
  • NO_PROXY và no_proxy: danh sách các hostname không dùng proxy.

Mã nguồn cho biết thứ tự: biến viết hoa được đọc trước, nếu rỗng mới đọc biến viết thường. Đoạn dưới đây là cấu hình tối thiểu cho một phiên làm việc.

export http_proxy="http://203.0.113.10:8080"
export https_proxy="http://203.0.113.10:8080"
apk update

Hai biến trỏ về cùng một địa chỉ proxy HTTP. Biến https_proxy không có nghĩa là proxy phải dùng TLS. Địa chỉ vẫn bắt đầu bằng http://, và với kho gói https thì kết nối đi qua proxy theo cách thông thường của proxy HTTP. Man page không mô tả chi tiết đoạn này, nên mình ghi là suy luận.

Giữ cấu hình qua các lần đăng nhập

Biến export chỉ sống trong shell hiện tại. Để giữ lại, nhiều người tạo tệp /etc/profile.d/proxy.sh và đặt các dòng export vào đó. Cách này chạy với shell đăng nhập. Dịch vụ OpenRC, tác vụ cron và shell không đăng nhập thường không đọc tệp này.

Nếu anh em chạy apk qua sudo hoặc doas, hãy kiểm tra biến có sang được tiến trình mới không. Sudo mặc định đặt lại môi trường, nên biến đặt ở user thường có thể không tới apk. Lệnh env | grep -i proxy chạy cùng cách gọi sẽ cho biết biến còn hay mất.

Xem apk có đang đi qua proxy không

Nhìn vào lệnh thì khó biết proxy có được dùng hay không. Cách chắc ăn là xem nhật ký phía proxy: yêu cầu của apk phải xuất hiện ở đó, kèm tên đăng nhập nếu có. Nếu proxy của anh em không có nhật ký dễ đọc, hãy dựng thử một proxy nhỏ trên máy mình để quan sát trước.

Chạy một lần mà không đổi cấu hình

Cách gọn nhất để thử là đặt biến ngay trước lệnh. Cú pháp http_proxy=... apk update chỉ áp dụng cho một lần chạy và không để lại gì trong môi trường. Mình thường làm vậy trước, thấy chạy được mới ghi vào tệp cấu hình.

http_proxy="http://203.0.113.10:8080" https_proxy="http://203.0.113.10:8080" apk update

Dùng tuỳ chọn cache khi proxy có bộ nhớ đệm

Một tuỳ chọn đáng nhớ là --force-refresh. Man page mô tả: không dùng tệp cache, cả cache cục bộ lẫn cache từ proxy. Nếu proxy của anh em có lưu đệm và trả danh sách gói cũ, tuỳ chọn này buộc apk hỏi lại. Tuỳ chọn --no-network làm điều ngược lại: không dùng mạng, chỉ dùng gói đã có trong cache.

Alpine apk proxy với tài khoản, NO_PROXY và kho nội bộ

Phần này là chỗ nhiều người mắc lỗi nhất, nên mình đọc kỹ mã nguồn. Có ba cách đưa tài khoản cho proxy, và mỗi cách có định dạng riêng.

Tài khoản nằm trong địa chỉ proxy

Hàm gửi tiêu đề xác thực proxy trong http.c kiểm tra trước xem địa chỉ proxy có chứa user hoặc mật khẩu không. Nếu có, nó gửi tiêu đề Proxy-Authorization kiểu Basic từ hai giá trị đó. Vì vậy dạng http://user:pass@host:port hoạt động.

Mình chưa chạy apk thật để kiểm việc giải mã phần trăm. Trong script mô phỏng, mình giải mã %40 thành @ và %23 thành #. Khi dùng thật, anh em thử bằng một mật khẩu có ký tự đặc biệt trước, rồi mới áp cho toàn bộ máy.

Tài khoản trong HTTP_PROXY_AUTH

Nếu địa chỉ proxy không chứa tài khoản, mã mới đọc đến HTTP_PROXY_AUTH. Hàm xử lý biến này đòi định dạng cố định gồm bốn phần: basic, tên miền xác thực, tên đăng nhập và mật khẩu, ngăn cách bằng dấu hai chấm. Phần tên miền xác thực có thể là dấu sao.

export HTTP_PROXY_AUTH='basic:*:user1:matkhau'

Man page chỉ nói biến này chứa tiêu đề Proxy-Authorization và không ghi định dạng. Nếu anh em đặt cả chuỗi Basic kèm mã base64 như trong tiêu đề HTTP, hàm xử lý sẽ không nhận ra và trả lỗi, rồi proxy trả 407. Đây là điểm man page dễ gây hiểu nhầm.

NO_PROXY: khớp theo hậu tố, không theo dấu chấm

Hàm kiểm tra danh sách ngoại lệ trong libfetch common.c làm bốn việc. Một dấu sao đứng một mình khớp mọi host. Các mục được tách bằng dấu phẩy hoặc khoảng trắng. Một mục khớp khi nó là phần đuôi của hostname, so sánh không phân biệt hoa thường. Mục dạng CIDR chỉ so khi hostname vốn là một địa chỉ IP.

Hai hệ quả cần nhớ. Hệ quả thứ nhất: đặt NO_PROXY là lab.test sẽ khớp cả mirror.lab.test lẫn xlab.test, vì hàm không đòi dấu chấm ở ranh giới. Hệ quả thứ hai: ghi dải 10.0.0.0/8 không giúp gì cho một hostname nội bộ phân giải ra IP trong dải đó, vì mã chỉ so CIDR với host viết sẵn là IP.

Man page nói đúng ý thứ hai: chỉ so phần hostname của URL, không so IP mà tên miền phân giải ra. Vì vậy với kho nội bộ dùng tên miền, anh em liệt kê tên miền trong NO_PROXY, không dùng CIDR.

Thứ tự áp dụng

Thứ tự trong mã nguồn là: kiểm tra NO_PROXY trước, nếu khớp thì đi thẳng. Nếu không khớp, đọc biến theo scheme của kho gói. Kho https dùng HTTPS_PROXY, kho http dùng HTTP_PROXY, và một biến chỉ áp dụng cho scheme của nó. Anh em đặt http_proxy mà quên https_proxy thì kho https vẫn đi thẳng.

Lúc này mình tóm bốn quy tắc trong một bảng để dễ đối chiếu khi gỡ lỗi.

Bảng: Thứ tự áp dụng

Tình huống

apk làm gì

Nguồn

Proxy khai báo bằng https:// hoặc socks5://

Bỏ qua, đi thẳng

libfetch http.c

Tài khoản trong địa chỉ proxy

Gửi Proxy-Authorization Basic

libfetch http.c

HTTP_PROXY_AUTH

Chỉ nhận dạng basic:realm:user:pass

libfetch http.c

NO_PROXY có mục khớp hậu tố hostname

Đi thẳng, không qua proxy

libfetch common.c

NO_PROXY chỉ có CIDR, kho dùng tên miền

Vẫn qua proxy

libfetch common.c

Kiểm chứng Alpine apk proxy bằng script lab đã chạy thật

Kết quả script lab theo kịch bản

Kết quả script lab theo kịch bản

Mình viết script apk_proxy_check.py, nạp một tệp repositories mẫu, chọn proxy theo đúng các quy tắc ở trên rồi tải thử tệp APKINDEX.tar.gz qua proxy HTTP của lab. Proxy lab có mật khẩu, và trang đích là một máy chủ giả nằm trên máy mình. Tên miền đuôi .test chỉ proxy lab phân giải được, nên nếu yêu cầu đi thẳng thì sẽ lỗi phân giải tên.

Tệp repositories mẫu có năm dòng: hai kho dùng biến set, một kho nội bộ, một kho https của Alpine và một kho theo địa chỉ IP với thẻ edge. Tên nhánh trong tệp chỉ là ví dụ cho lab.

set -default MIRROR=http://mirror.lab.test:19301/alpine
${MIRROR}/v3.22/main
${MIRROR}/v3.22/community
http://noi-bo.lab.test:19301/alpine/v3.22/main
https://dl-cdn.alpinelinux.org/alpine/v3.22/main
@edge http://10.0.0.5:19301/alpine/edge/testing

Kết quả theo từng kịch bản

Mình chạy tám kịch bản và ghi mã trả về của từng kho. Kho https của Alpine không được tải thật vì lab không có đường ra internet, nên trong bảng nó chỉ cho thấy script chọn hay không chọn proxy.

Bảng: Kết quả theo từng kịch bản

Kịch bản

Kho mirror

Kho nội bộ

Ghi chú

A. Không đặt biến

Lỗi phân giải tên

Lỗi phân giải tên

Đi thẳng, tên .test không phân giải được

B. Có proxy, không có tài khoản

407

407

Proxy từ chối vì thiếu Proxy-Authorization

C. HTTP_PROXY_AUTH=basic:*:user:pass

200

200

Proxy nhận đúng tài khoản

D. Tài khoản trong địa chỉ proxy

200

200

Mật khẩu có @ và # đã mã hóa phần trăm

E. NO_PROXY=noi-bo.lab.test

200

Lỗi phân giải tên

Kho nội bộ đi thẳng nên lỗi

F. NO_PROXY=lab.test

Lỗi phân giải tên

Lỗi phân giải tên

Khớp hậu tố, cả hai kho đi thẳng

G. NO_PROXY chỉ có 127.0.0.0/8

200

200

CIDR không khớp tên miền, vẫn qua proxy

H. Proxy khai báo https://

Lỗi phân giải tên

Lỗi phân giải tên

Proxy bị bỏ qua, đi thẳng

Nhật ký phía proxy lab xác nhận các kết quả này. Ở kịch bản B, proxy ghi nhận yêu cầu không có tiêu đề xác thực. Ở kịch bản C và D, proxy ghi nhận tên đăng nhập user1 và xác thực thành công. Ở kịch bản E, F và H, proxy không nhận yêu cầu nào cho các kho bị đi thẳng.

Biến có đặt rồi chưa chắc đã được dùng. Kịch bản H cho thấy một dòng proxy sai scheme làm apk đi thẳng mà không báo gì.

Phạm vi của kết quả

Script này mô phỏng quy tắc, không phải apk. Nó không kiểm tra việc giải mã phần trăm của libfetch, không kiểm tra kết nối https qua proxy bằng phương thức CONNECT và không kiểm tra cách apk xử lý khi proxy trả 407. Ba điểm đó mình chưa thử và cần chạy trên máy Alpine thật.

Nếu anh em có máy Alpine, cách kiểm nhanh nhất là chạy apk -vv update với biến đã đặt và nhìn nhật ký phía proxy. Mình khuyên chạy proxy thử của chính mình trước, như squid hoặc script lab, rồi mới thay bằng proxy dịch vụ thật.

Lỗi thường gặp khi chạy Alpine apk proxy

Bảng lỗi apk qua proxy

Bảng lỗi apk qua proxy

Bảng dưới gom các triệu chứng hay gặp và nguyên nhân tương ứng. Phần nguyên nhân mình suy từ mã nguồn và từ kết quả lab. Mình chưa tái hiện từng thông báo lỗi trên Alpine thật, nên anh em coi cột triệu chứng là hướng dẫn tìm lỗi, không phải bản sao thông báo.

Bảng: Lỗi thường gặp khi chạy Alpine apk proxy

Triệu chứng

Nguyên nhân có thể

Cách kiểm

apk update treo hoặc báo lỗi tải

Biến proxy không tới được apk

Chạy lệnh env cùng cách gọi, tìm chữ proxy

Kho http chạy, kho https đi thẳng

Chỉ đặt http_proxy

Đặt thêm https_proxy

Proxy trả 407

Thiếu hoặc sai tài khoản

Xem nhật ký proxy, thử HTTP_PROXY_AUTH đúng định dạng

Đặt proxy mà proxy không thấy yêu cầu

Địa chỉ proxy bắt đầu bằng https:// hoặc socks5://

Đổi thành http://

Kho nội bộ vẫn qua proxy

NO_PROXY dùng CIDR cho tên miền

Liệt kê tên miền

Kho ngoài lại đi thẳng

NO_PROXY khớp hậu tố quá rộng

Xem lại các mục ngắn

Danh sách gói cũ

Proxy có cache

apk update --force-refresh

Lỗi chứng chỉ khi tải kho https

Proxy chặn và thay chứng chỉ

Kiểm chứng chỉ gốc của công ty

Lỗi chứng chỉ không phải lỗi proxy

Một số proxy doanh nghiệp giải mã lưu lượng https rồi ký lại bằng chứng chỉ của công ty. Khi đó apk báo lỗi xác thực chứng chỉ, dù proxy hoạt động. Cách xử lý là cài chứng chỉ gốc của công ty vào Alpine, không phải tắt kiểm tra.

Man page apk có nhắc biến SSL_NO_VERIFY_HOSTNAME dùng để tắt kiểm tra tên máy chủ trong chứng chỉ. Mình không khuyên dùng nó để chữa lỗi proxy, vì nó tắt lớp kiểm tra cuối cùng giữa máy anh em và kho gói. Lỗi chứng chỉ nên được sửa ở gốc.

Phân biệt lỗi proxy và lỗi kho gói

Khi apk báo không chọn được gói, đừng vội đổ cho proxy. Lỗi ở lớp chọn gói thường do tệp repositories sai nhánh hoặc thiếu kho community. Lỗi ở lớp tải thì xuất hiện khi apk update, trước cả bước chọn gói.

Cách phân biệt nhanh là chạy curl tới địa chỉ APKINDEX của một kho với cùng biến proxy. Nếu curl tải được mà apk không, vấn đề nằm ở cách apk đọc biến, như các bẫy ở phần trên. Nếu curl cũng lỗi, vấn đề nằm ở proxy hoặc đường mạng.

Alpine apk proxy trong Docker và CI

Trong Dockerfile dùng nền Alpine, lệnh RUN apk add chạy bên trong container build, và nó đọc biến môi trường của container đó. Docker có cơ chế truyền biến proxy vào lúc build, đã được giải thích trong bài về Docker. Điều anh em cần kiểm ở đây là tên biến Docker truyền có khớp tên biến apk đọc hay không.

Docker truyền các biến viết thường và viết hoa như http_proxy, https_proxy, no_proxy. Apk đọc cả hai dạng, nên phần lớn trường hợp khớp. Cái cần chú ý là scheme: nếu proxy được khai báo bằng scheme khác http, apk bỏ qua nó giống kịch bản H ở trên.

Đừng để mật khẩu proxy nằm lại trong image

Biến truyền lúc build có thể để lại dấu vết trong lịch sử image. Nếu proxy cần mật khẩu, anh em nên dùng cơ chế bí mật của công cụ build, hoặc dùng proxy xác thực bằng whitelist IP. Một image đã bị lộ mật khẩu proxy thì phải đổi mật khẩu, không xóa lịch sử là đủ.

Trong CI, biến proxy thường được đặt ở mức runner. Kiểm tra bằng cách in danh sách biến, che phần mật khẩu, ngay trước bước apk. Làm vậy mất một dòng lệnh nhưng tiết kiệm nhiều giờ tìm lỗi.

Bảng mini: biến nào cho đường nào

Để đặt nhanh trong CI, anh em dùng bảng dưới. Cột cuối là việc cần kiểm trước khi chạy apk.

Bảng: Bảng mini: biến nào cho đường nào

Đường tải

Biến apk đọc

Cần kiểm

Kho http

HTTP_PROXY rồi http_proxy

Scheme của proxy là http

Kho https

HTTPS_PROXY rồi https_proxy

Scheme của proxy là http

Proxy có tài khoản

Tài khoản trong URL hoặc HTTP_PROXY_AUTH

Định dạng basic:*:user:pass

Kho nội bộ

NO_PROXY

Liệt kê tên miền

Gỡ cấu hình thử và quản lý bí mật khi dùng Alpine apk proxy

Sau khi thử xong, anh em dọn dẹp để không bỏ sót proxy trong môi trường. Với biến export trong shell, lệnh unset http_proxy https_proxy HTTP_PROXY_AUTH NO_PROXY là đủ. Với tệp /etc/profile.d/proxy.sh, anh em xóa tệp hoặc đổi tên.

Mật khẩu proxy là bí mật như mọi mật khẩu khác. Đừng ghi nó vào tệp cấu hình đặt trong kho mã, đừng in nó ra nhật ký CI. Lịch sử lệnh của shell cũng lưu mật khẩu nếu anh em gõ nó trong dòng lệnh. Dùng proxy xác thực bằng IP khi có thể sẽ giảm hẳn rủi ro này.

Checklist trước khi dùng thật

  • Xác nhận phiên bản apk bằng apk --version và ghi lại.
  • Xác nhận proxy dùng scheme http, không phải https hay socks5.
  • Đặt cả http_proxy và https_proxy nếu kho có cả hai loại.
  • Thử một lần với biến đặt trước lệnh, rồi mới ghi vào tệp.
  • Liệt kê tên miền kho nội bộ trong NO_PROXY, không dùng CIDR.
  • Kiểm tra nhật ký phía proxy để thấy yêu cầu thật sự đi qua.
  • Dọn biến và tệp thử sau khi xong.

Cần proxy HTTP có tài khoản hoặc whitelist IP để chạy các bước trên, anh em có thể mua proxy tại ProxyVN: proxy dân cư tĩnh Viettel, VNPT, FPT, datacenter Việt Nam và Mỹ, 4G và proxy xoay. Nhà cung cấp hỗ trợ HTTP và SOCKS5, và với apk anh em chọn kiểu HTTP.

Một lưu ý nữa về vận hành: khi dùng chung một proxy cho nhiều máy Alpine, hãy ghi lại máy nào dùng tài khoản nào. Khi proxy báo quá tải hoặc khóa tài khoản, anh em biết ngay máy nào gây ra. Với proxy whitelist IP thì danh sách IP máy chính là sổ ghi chép đó, nên cập nhật nó mỗi khi thêm hoặc bỏ máy.

Khi nào nên nghĩ đến công cụ khác

Apk chỉ là một trong nhiều trình quản lý gói. Với hệ dùng yum hoặc dnf, bài yum và dnf proxy có quy tắc riêng, và với Ubuntu thì bài cấu hình proxy Ubuntu nói về apt. Mỗi công cụ đọc biến khác nhau, nên đừng áp quy tắc của công cụ này cho công cụ kia.

Bài no_proxy là gì giải thích khái niệm danh sách ngoại lệ ở mức chung. Phần NO_PROXY của apk có quy tắc khớp hậu tố riêng, nên khi chuyển từ công cụ khác sang apk, anh em đọc lại danh sách ngoại lệ một lần.

Alpine apk proxy: câu hỏi thường gặp

Alpine apk proxy có dùng được proxy SOCKS5 không. Theo mã libfetch mình đọc, apk chỉ nhận proxy có scheme http. Địa chỉ socks5 bị bỏ qua. Nếu chỉ có SOCKS5, anh em cần một chương trình trung gian đổi sang HTTP, hoặc đổi sang loại proxy HTTP.

Đặt http_proxy rồi mà kho https không qua proxy. Mỗi biến chỉ áp dụng cho scheme của nó. Kho https đọc https_proxy, nên anh em đặt cả hai biến.

HTTP_PROXY_AUTH nhận chuỗi nào. Mã nhận dạng basic:realm:user:pass, với realm có thể là dấu sao. Chuỗi Basic kèm base64 theo kiểu tiêu đề HTTP không được nhận.

NO_PROXY có dùng được dải IP không. Có, nhưng chỉ khi kho gói được khai báo bằng địa chỉ IP. Với kho khai báo bằng tên miền, dải IP không khớp, và anh em cần ghi tên miền.

Có cần cấu hình proxy riêng cho apk không nếu đã đặt proxy hệ thống. Alpine không có cấu hình proxy hệ thống kiểu giao diện. Biến môi trường là cách chính. Cấu hình nào cho shell đăng nhập thì không tự áp dụng cho dịch vụ nền.

Proxy có làm apk tải chậm hơn không. Có thêm một chặng nên độ trễ tăng chút ít. Với proxy có cache, lần tải sau có thể nhanh hơn, nhưng cần dùng --force-refresh khi nghi ngờ dữ liệu cũ.

Mình có thể thử bài này khi không có máy Alpine không. Script mô phỏng chạy được trên Python bất kỳ và giúp anh em hiểu quy tắc. Muốn chắc về hành vi thật của apk, anh em vẫn cần chạy trên Alpine.

Alpine apk proxy và những điều cần nhớ

Alpine apk proxy đọc http_proxy, https_proxy, NO_PROXY và HTTP_PROXY_AUTH, nhưng chỉ nhận proxy HTTP và khớp NO_PROXY theo hậu tố hostname. Kiểm biến bằng env, chạy thử một lần trước khi ghi cấu hình và xem nhật ký phía proxy. Cần proxy HTTP ổn định, liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam cho Alpine apk proxy.

TIN TỨC LIÊN QUAN