PAC Proxy: Hướng dẫn cấu hình tự động cho doanh nghiệp
PAC Proxy cho phép trình duyệt và ứng dụng tự quyết định mỗi yêu cầu nên đi qua proxy nào hay kết nối trực tiếp, dựa trên tên miền, địa chỉ IP hoặc thời gian. Thay vì nhập proxy thủ công cho từng máy, từng website, doanh nghiệp chỉ cần duy trì một tệp quy tắc duy nhất. Trong bài này, ProxyVN hướng dẫn anh em hiểu cú pháp, viết PAC file theo từng tình huống, triển khai trên máy người dùng, kiểm tra lỗi và bảo mật tệp cấu hình. Đây là bài tổng quan, các chủ đề chuyên sâu như WPAD, tấn công WPAD hay biến môi trường no_proxy được liên kết ở từng phần tương ứng.
PAC Proxy là gì và hoạt động ra sao
PAC là viết tắt của Proxy Auto-Configuration. Đây là tệp JavaScript chứa quy tắc để ứng dụng xác định một yêu cầu web nên đi qua máy chủ proxy nào hay kết nối trực tiếp tới website.

Proxy Auto-Configuration
Theo tài liệu PAC của MDN, tệp tự động cấu hình thường được lưu với đuôi .pac. Bên trong tệp bắt buộc phải có hàm sau:
function FindProxyForURL(url, host) {
// quy tắc chọn đường đi
return "DIRECT";
}
Mỗi khi người dùng mở một địa chỉ, trình duyệt gọi hàm này. Tham số url chứa địa chỉ đầy đủ, còn host chứa tên miền hoặc địa chỉ máy chủ. Với trang HTTPS, nhiều trình duyệt hiện đại chỉ truyền phần gốc của url để bảo vệ quyền riêng tư, nên quy tắc nên dựa chủ yếu vào host.
Các giá trị trả về
Giá trị hàm trả về quyết định đường đi của kết nối. Những dạng phổ biến gồm:
- DIRECT: kết nối thẳng tới website, không qua proxy.
- PROXY host:port: dùng HTTP proxy tại máy chủ và cổng chỉ định.
- SOCKS host:port hoặc SOCKS5 host:port: dùng SOCKS proxy nếu ứng dụng hỗ trợ.
- HTTPS host:port: dùng proxy với kết nối mã hóa tới chính proxy, chỉ một số trình duyệt hỗ trợ.
- Chuỗi nhiều giá trị ngăn cách bằng dấu chấm phẩy: thử lần lượt từng lựa chọn.
Thứ tự trong chuỗi trả về chính là thứ tự dự phòng. Đặt DIRECT ở cuối giúp duy trì truy cập khi mọi proxy đều lỗi, nhưng cũng có thể tạo đường vòng nằm ngoài chính sách kiểm soát của doanh nghiệp.
Vì sao doanh nghiệp dùng PAC
Trong doanh nghiệp, PAC phù hợp khi mạng nội bộ và Internet cần đi theo đường khác nhau, khi một số đối tác yêu cầu truy cập từ IP cố định, hoặc khi cần proxy dự phòng. PAC file quản lý theo quy tắc thay vì cấu hình cứng trên từng thiết bị, nên thay đổi chính sách chỉ cần sửa một tệp.
Các hàm thường dùng trong PAC Proxy
PAC có sẵn một số hàm để so khớp tên miền, IP và thời gian. Dùng đúng hàm giúp quy tắc chính xác và hạn chế truy vấn DNS không cần thiết.
So khớp tên miền và URL
- dnsDomainIs(host, ".example.com"): kiểm tra host có kết thúc bằng hậu tố tên miền.
- shExpMatch(host, "*.example.com"): so khớp theo ký tự đại diện kiểu shell.
- isPlainHostName(host): nhận biết tên máy nội bộ không có dấu chấm, chẳng hạn intranet.
- localHostOrDomainIs(host, "www.example.com"): khớp tên đầy đủ hoặc tên rút gọn.
Lưu ý mẫu *.example.com khớp với tên miền con nhưng không khớp với chính example.com. Nếu cần cả hai, hãy viết hai điều kiện riêng.
Kiểm tra IP và mạng con
- isInNet(host, pattern, mask): kiểm tra host có thuộc dải IPv4 đã xác định không.
- dnsResolve(host): phân giải tên miền thành địa chỉ IP.
- myIpAddress(): lấy địa chỉ IP của thiết bị khách theo cách trình duyệt triển khai.
- isResolvable(host): kiểm tra tên miền có phân giải được không.
MDN lưu ý isInNet và dnsResolve có thể tạo truy vấn DNS cho mỗi yêu cầu. Nếu chỉ cần xét tên miền, so khớp chuỗi luôn nhẹ hơn. Hàm myIpAddress cũng không đáng tin trên máy có nhiều card mạng hoặc dùng VPN.
Chọn tuyến theo ngày và giờ
Các hàm weekdayRange, dateRange và timeRange hỗ trợ quy tắc theo lịch, ví dụ chỉ dùng proxy trong giờ hành chính. Logic này cần kiểm thử kỹ nếu nhân viên làm việc ở nhiều múi giờ, vì thời gian được tính theo đồng hồ của thiết bị.
Bảng tóm tắt các hàm
Hàm |
Mục đích |
Có tạo truy vấn DNS |
|---|---|---|
dnsDomainIs |
Khớp hậu tố tên miền |
Không |
shExpMatch |
Khớp ký tự đại diện |
Không |
isPlainHostName |
Nhận biết tên nội bộ |
Không |
isInNet |
Kiểm tra dải IP |
Có, nếu host là tên miền |
dnsResolve |
Phân giải tên miền |
Có |
myIpAddress |
Lấy IP thiết bị |
Có thể |
timeRange, weekdayRange |
Quy tắc theo thời gian |
Không |
Nhìn chung, anh em nên đặt ngoại lệ cụ thể ở đầu và tuyến mặc định ở cuối. Cấu trúc này giúp PAC file dễ đọc và dễ bảo trì.
Cách viết PAC Proxy theo từng tình huống
Trước khi viết mã, hãy chia lưu lượng thành ba nhóm: đi trực tiếp, bắt buộc qua proxy và được phép dùng tuyến dự phòng. Sau đó, sắp xếp quy tắc từ cụ thể tới tổng quát.

Viết PAC file theo từng tình huống
Tình huống 1: Định tuyến một nhóm tên miền
Đoạn mã minh họa dưới đây đưa tên miền gốc và mọi tên miền con của example.com qua proxy, các địa chỉ khác kết nối trực tiếp:
function FindProxyForURL(url, host) {
if (host === "example.com" || dnsDomainIs(host, ".example.com")) {
return "PROXY proxy.company.local:8080";
}
return "DIRECT";
}
Cách viết này rõ ràng hơn việc chỉ dùng mẫu *.example.com, vì tên miền gốc đã được xử lý riêng.
Tình huống 2: Mạng nội bộ và proxy dự phòng
Ví dụ sau cho phép tên máy nội bộ, tên miền nội bộ và dải IP riêng đi trực tiếp. Lưu lượng còn lại đi qua proxy chính, rồi tới proxy phụ:
function FindProxyForURL(url, host) {
if (isPlainHostName(host) ||
dnsDomainIs(host, ".company.local") ||
isInNet(host, "10.0.0.0", "255.0.0.0") ||
isInNet(host, "192.168.0.0", "255.255.0.0")) {
return "DIRECT";
}
return "PROXY proxy1.company.local:8080; PROXY proxy2.company.local:8080";
}
Ví dụ không thêm DIRECT ở cuối vì doanh nghiệp không muốn lưu lượng bỏ qua kiểm soát khi cả hai proxy ngừng phản hồi. Đổi lại, khi cả hai proxy lỗi, người dùng sẽ mất Internet cho tới khi proxy được khôi phục.
Tình huống 3: Dùng IP cố định cho đối tác
Một số đối tác hay cổng thanh toán chỉ chấp nhận yêu cầu từ IP đã đăng ký. Doanh nghiệp có thể đưa riêng các tên miền này qua một proxy có IP tĩnh, còn lưu lượng khác vẫn đi đường thường:
function FindProxyForURL(url, host) {
if (dnsDomainIs(host, ".partner-api.example")) {
return "PROXY static-ip-proxy.company.local:3128";
}
return "DIRECT";
}
Tình huống 4: Tách lưu lượng theo phòng ban
Khi phòng marketing cần kiểm tra quảng cáo ở thị trường khác, có thể phát hành một tệp PAC riêng cho nhóm này, đưa các tên miền nền tảng quảng cáo qua proxy đặt ở quốc gia mục tiêu. Các phòng ban khác dùng tệp PAC mặc định. Cách này tránh việc mọi nhân viên đều đi qua proxy nước ngoài một cách không cần thiết.
Kinh nghiệm viết quy tắc
Kinh nghiệm vận hành cho thấy lỗi khó tìm thường không nằm ở cú pháp. Chúng xuất hiện khi một ngoại lệ quá rộng, khi DNS phản hồi khác nhau giữa mạng trong và mạng ngoài, hoặc khi DIRECT vô tình trở thành đường né chính sách. Trước khi áp dụng diện rộng, hãy thử tên miền nội bộ, tên miền ngoài, tên miền gốc, tên miền con và một địa chỉ dự kiến bị chặn.
Triển khai PAC Proxy trên máy người dùng
Khi logic đã ổn, hãy đưa tệp lên máy chủ và thử với một nhóm nhỏ trước khi triển khai toàn công ty.
Đặt tệp lên máy chủ web
Anh em có thể tạo tệp bằng trình soạn thảo quen thuộc rồi đặt lên một máy chủ web nội bộ. Máy chủ cần trả đúng kiểu nội dung application/x-ns-proxy-autoconfig, theo hướng dẫn proxy và tunneling của MDN. Với Nginx, có thể khai báo như minh họa:
location = /proxy.pac {
default_type application/x-ns-proxy-autoconfig;
}
Máy chủ chứa tệp phải truy cập được mà không phụ thuộc vào chính proxy đang được cấu hình, nếu không sẽ tạo vòng lặp: thiết bị cần proxy để tải tệp chỉ định proxy.
Cấu hình trên từng hệ điều hành
Trên thiết bị người dùng, vị trí thiết lập thường nằm ở:
- Windows 11: Settings, Network and internet, Proxy, bật Use setup script và nhập Script address.
- macOS: System Settings, Network, chọn kết nối, Details, Proxies, bật Automatic Proxy Configuration.
- Linux GNOME: Settings, Network, Network Proxy, chọn Automatic và nhập Configuration URL.
- Firefox: Settings, Network Settings, chọn Automatic proxy configuration URL. Mozilla Support hướng dẫn dùng nút Reload để tải lại tệp sau khi thay đổi.
- Android và iOS: trong cài đặt Wi-Fi của từng mạng, chọn proxy tự động và nhập địa chỉ tệp PAC.
Tên menu có thể thay đổi theo phiên bản. Doanh nghiệp lớn nên phân phối địa chỉ tệp bằng chính sách quản lý thiết bị thay vì hướng dẫn từng người.
Phân phối tự động bằng WPAD
Ngoài nhập địa chỉ thủ công, thiết bị có thể tự tìm tệp PAC qua DHCP hoặc DNS bằng cơ chế WPAD. Cách này tiện cho mạng lớn nhưng đi kèm rủi ro bảo mật riêng. Bài Web Proxy Auto-Discovery giải thích chi tiết cơ chế, còn bài WPAD proxy attack phân tích cách kẻ tấn công lợi dụng WPAD để đưa tệp PAC giả vào máy nạn nhân.
Kiểm tra PAC Proxy theo ba lớp
Đừng chỉ mở một website rồi kết luận PAC đã hoạt động. Một quy trình đáng tin cậy nên kiểm tra lần lượt ba lớp.

Kiểm tra Proxy Auto-Configuration
Lớp 1: Kiểm tra phân phối
Xác nhận tệp tải được và trả đúng kiểu nội dung:
curl -I https://intranet.example.com/proxy.pac
Kết quả trả về cần có mã 200 và dòng Content-Type là application/x-ns-proxy-autoconfig.
Lớp 2: Kiểm tra quyết định
Dùng pacparser và công cụ pactester để nhập từng địa chỉ mẫu và xem kết quả là DIRECT hay proxy dự kiến:
pactester -p proxy.pac -u https://www.example.com
pactester -p proxy.pac -u http://intranet/
Nên chuẩn bị một danh sách địa chỉ kiểm thử cố định, chạy lại mỗi lần sửa tệp để phát hiện quy tắc bị ảnh hưởng ngoài ý muốn.
Lớp 3: Kiểm tra kết nối thật
Truy cập địa chỉ trên thiết bị thử nghiệm, xác nhận IP thoát ra, nhật ký của proxy và khả năng chuyển sang máy chủ dự phòng khi tắt proxy chính. Với Chrome hoặc Edge, có thể ghi nhật ký mạng tại trang chrome://net-export, tái hiện lỗi rồi phân tích tệp nhật ký.
Một lưu ý quan trọng: lệnh lấy dòng return từ tệp PAC rồi đưa vào tham số proxy của curl không kiểm tra PAC đúng cách. curl không thực thi hàm FindProxyForURL, nên kết quả dễ sai hoặc lệnh không chạy.
Sự cố thường gặp với PAC Proxy
Triệu chứng |
Nguyên nhân thường gặp |
Cách xử lý |
|---|---|---|
Mọi trang đều đi thẳng |
Tệp không tải được hoặc lỗi cú pháp |
Kiểm tra lớp phân phối, chạy pactester |
Trang nội bộ không vào được |
Tên miền nội bộ bị đưa qua proxy |
Bổ sung vào nhánh DIRECT |
Trình duyệt chậm bất thường |
Lạm dụng dnsResolve, isInNet |
Thay bằng so khớp chuỗi |
Sửa tệp không có tác dụng |
Bộ nhớ đệm tệp PAC |
Khởi động lại trình duyệt, bấm Reload |
Mất Internet khi proxy lỗi |
Không có DIRECT dự phòng |
Cân nhắc thêm DIRECT hoặc proxy phụ |
Công cụ dòng lệnh không đi qua proxy |
Công cụ không đọc PAC |
Cấu hình biến môi trường riêng |
Ứng dụng không hỗ trợ PAC
Nhiều công cụ dòng lệnh, trình quản lý gói và ứng dụng phát triển không đọc tệp PAC. Chúng thường dùng biến môi trường HTTP_PROXY, HTTPS_PROXY và NO_PROXY. Với các công cụ này, quản trị viên cần cấu hình song song. Bài no_proxy là gì hướng dẫn loại trừ tên miền nội bộ khỏi proxy bằng biến môi trường.
Công cụ kiểm thử API như Postman cũng có cài đặt proxy riêng, có thể dùng proxy hệ thống hoặc proxy tùy chỉnh. Bài proxy Postman là gì giải thích cách cấu hình để kiểm thử API qua proxy.
So sánh PAC Proxy với các cách cấu hình proxy khác
Doanh nghiệp có nhiều cách đưa cấu hình proxy tới thiết bị. Mỗi cách phù hợp với một quy mô và một mức độ kiểm soát khác nhau. Bảng dưới đây giúp anh em chọn đúng cách cho tổ chức của mình.
Cách cấu hình |
Mức linh hoạt |
Công sức triển khai |
Phù hợp nhất |
|---|---|---|---|
Nhập thủ công từng máy |
Thấp |
Cao khi nhiều máy |
Cá nhân, nhóm rất nhỏ |
PAC file nhập địa chỉ |
Cao |
Trung bình |
Doanh nghiệp vừa và nhỏ |
PAC qua WPAD |
Cao |
Thấp sau khi dựng xong |
Doanh nghiệp lớn, quản trị tập trung |
Biến môi trường |
Trung bình |
Trung bình |
Máy chủ, công cụ dòng lệnh |
Proxy trong suốt |
Thấp với người dùng |
Cao ở hạ tầng |
Lọc nội dung toàn mạng |
Trong thực tế, nhiều tổ chức kết hợp hai hoặc ba cách: PAC cho trình duyệt của nhân viên, biến môi trường cho máy chủ và công cụ lập trình, còn proxy trong suốt cho thiết bị không hỗ trợ cấu hình như máy in hay camera.
Lộ trình triển khai PAC Proxy cho doanh nghiệp
Với doanh nghiệp lần đầu áp dụng PAC, chia việc triển khai thành các giai đoạn giúp giảm rủi ro gián đoạn và dễ xử lý khi có sự cố.
Giai đoạn 1: Khảo sát nhu cầu
Liệt kê các nhóm lưu lượng hiện có: hệ thống nội bộ, dịch vụ đám mây doanh nghiệp đang dùng, đối tác yêu cầu IP cố định, các nền tảng cần truy cập từ quốc gia khác. Ghi rõ nhóm nào cần đi trực tiếp, nhóm nào bắt buộc qua proxy và nhóm nào được phép dự phòng. Bước này thường mất nhiều thời gian nhất nhưng quyết định chất lượng của toàn bộ tệp PAC.
Giai đoạn 2: Viết tệp và bộ kiểm thử
Viết tệp PAC theo đúng các nhóm đã xác định. Song song, tạo một danh sách địa chỉ kiểm thử bao phủ mọi nhánh quy tắc, kèm kết quả mong đợi. Chạy pactester với danh sách này cho tới khi mọi kết quả khớp.
Giai đoạn 3: Thử nghiệm với nhóm nhỏ
Chọn một nhóm người dùng đại diện cho nhiều phòng ban và nhiều loại thiết bị. Áp dụng tệp PAC trong một đến hai tuần, thu thập phản hồi về trang không vào được, tốc độ và các ứng dụng gặp lỗi. Điều chỉnh quy tắc theo phản hồi thực tế.
Giai đoạn 4: Triển khai rộng
Phân phối địa chỉ tệp PAC qua chính sách quản lý thiết bị cho toàn bộ máy tính. Chuẩn bị hướng dẫn ngắn cho bộ phận hỗ trợ, gồm các lỗi thường gặp và cách kiểm tra nhanh. Theo dõi sát nhật ký proxy trong những ngày đầu.
Giai đoạn 5: Vận hành và rà soát định kỳ
Mỗi quý, rà soát lại tệp PAC: loại bỏ quy tắc cho hệ thống đã ngừng dùng, bổ sung dịch vụ mới, kiểm tra proxy dự phòng còn hoạt động. Một tệp PAC không được rà soát sẽ dần chứa nhiều quy tắc cũ, khó hiểu và dễ gây lỗi.
Tình huống mẫu
Một công ty khoảng 80 nhân viên dùng proxy để truy cập cổng thanh toán của đối tác yêu cầu IP cố định. Trước đây, mỗi nhân viên kế toán phải tự bật tắt proxy trên máy, thường quên tắt, khiến mọi website khác cũng đi qua proxy và chậm hẳn. Sau khi chuyển sang PAC, chỉ tên miền của cổng thanh toán đi qua proxy, phần còn lại đi trực tiếp. Nhân viên không còn phải thao tác gì, còn đối tác vẫn nhận yêu cầu từ đúng IP đã đăng ký.
Bảo mật và quản trị PAC Proxy trong doanh nghiệp
Tệp PAC quyết định toàn bộ đường đi của lưu lượng web. Ai sửa được tệp này có thể đưa lưu lượng của cả công ty qua bất kỳ máy chủ nào. Vì vậy, PAC cần được quản trị như một cấu hình bảo mật quan trọng.

Bảo mật và quản trị PAC file trong doanh nghiệp
Kiểm soát quyền sửa tệp
Chỉ một nhóm nhỏ quản trị viên được quyền sửa tệp PAC. Lưu tệp trong hệ thống quản lý phiên bản để biết ai đã thay đổi gì và khi nào, đồng thời có thể hoàn nguyên nhanh khi có lỗi.
Quy trình thay đổi
Mỗi thay đổi nên đi qua các bước soạn thảo, chạy bộ kiểm thử bằng pactester, thử trên nhóm nhỏ rồi mới áp dụng rộng. Thông báo trước cho bộ phận hỗ trợ để họ biết cần kiểm tra gì khi nhận phản ánh từ người dùng.
Phân phối qua kênh an toàn
Ưu tiên phân phối tệp qua HTTPS khi nền tảng hỗ trợ, để tránh tệp bị sửa trên đường truyền. Hạn chế dùng WPAD trên mạng không được kiểm soát đầy đủ.
Giám sát lưu lượng sau mỗi thay đổi
Sau mỗi lần cập nhật tệp PAC, theo dõi nhật ký của các máy chủ proxy trong vài giờ đầu. Lưu lượng tăng hoặc giảm đột ngột là dấu hiệu quy tắc mới đang đưa nhầm một nhóm tên miền lớn vào hoặc ra khỏi proxy. Phát hiện sớm giúp hoàn nguyên trước khi người dùng bị ảnh hưởng diện rộng.
Không đặt thông tin nhạy cảm trong tệp
Tệp PAC có thể được bất kỳ ai trong mạng tải về và đọc, kể cả khách truy cập Wi-Fi nếu mạng khách không được tách riêng khỏi mạng nội bộ. Không đặt mật khẩu proxy, tên máy chủ nhạy cảm hay ghi chú nội bộ quan trọng trong tệp.
PAC Proxy với proxy thuê ngoài
Nhiều doanh nghiệp vừa và nhỏ không tự vận hành proxy mà thuê từ nhà cung cấp. PAC vẫn hữu ích trong trường hợp này: chỉ những tên miền cần IP cố định hoặc IP nước ngoài mới đi qua proxy thuê, phần còn lại đi trực tiếp để tiết kiệm băng thông và giữ tốc độ.
Anh em có thể mua proxy tại ProxyVN rồi khai báo trong file PAC để chỉ những tên miền cần thiết đi qua proxy.
Xem thêm:
- Web Proxy Auto-Discovery: Cơ chế, rủi ro và cách dùng
- FoxyProxy là gì? Cài và chuyển proxy trên Chrome, Firefox
Câu hỏi thường gặp về PAC Proxy
PAC Proxy có làm chậm trình duyệt không?
Một tệp PAC đơn giản, chỉ gồm vài phép so khớp chuỗi, chạy gần như tức thì. Chỉ khi tệp dùng nhiều hàm phân giải DNS, mỗi yêu cầu mới phải chờ thêm. Giữ quy tắc ngắn gọn và ưu tiên so khớp chuỗi giúp tránh vấn đề này.
Có thể dùng một tệp PAC cho mọi thiết bị không?
Có thể, nhưng anh em cần kiểm thử cẩn thận trên từng hệ điều hành và trình duyệt, vì mức hỗ trợ các hàm và giá trị trả về như SOCKS5 hay HTTPS có khác biệt nhỏ.
Tệp PAC có thể chứa lỗi cú pháp mà không ai biết không?
Có. Khi tệp PAC lỗi cú pháp, nhiều trình duyệt lặng lẽ bỏ qua tệp và kết nối trực tiếp mà không hiển thị cảnh báo. Người dùng vẫn vào được Internet, nên lỗi có thể tồn tại nhiều ngày mà không ai phát hiện, trong khi chính sách proxy của doanh nghiệp thực tế không được áp dụng. Đây là lý do cần chạy pactester sau mỗi lần sửa và theo dõi nhật ký proxy để phát hiện lưu lượng giảm bất thường.
Doanh nghiệp nhỏ có cần PAC không?
Nếu chỉ có vài máy và mọi lưu lượng đều đi cùng một đường, cấu hình thủ công là đủ. PAC bắt đầu đáng giá khi cần tách lưu lượng theo tên miền, cần proxy dự phòng hoặc số máy tăng tới mức cấu hình thủ công trở nên mất thời gian và dễ sai.
PAC khác gì so với cấu hình proxy thủ công?
Cấu hình thủ công áp dụng một proxy cho mọi website, kèm danh sách ngoại lệ đơn giản. PAC cho phép logic phức tạp hơn: nhiều proxy, dự phòng, quy tắc theo dải IP và thời gian.
PAC Proxy giúp doanh nghiệp chọn proxy theo tên miền, dải IP và tuyến dự phòng thay vì cấu hình thủ công trên từng máy. Để vận hành ổn định, anh em nên giữ quy tắc ngắn gọn, hạn chế truy vấn DNS, cân nhắc kỹ việc dùng DIRECT, kiểm thử theo ba lớp và quản trị tệp như một cấu hình bảo mật. Khi cần tư vấn, hãy liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam.