Forward proxy là một thành phần trung gian đóng vai trò làm điểm thoát duy nhất (single point of exit) cho các máy trạm trong mạng nội bộ khi muốn kết nối ra internet.
Bản chất của một forward proxy là đại diện cho phía client, tiếp nhận rồi chuyển tiếp các yêu cầu dịch vụ như HTTP, HTTPS hoặc DNS từ dải IP nội bộ ra mạng công cộng. Cơ chế này khác hẳn reverse proxy — thành phần đại diện cho phía máy chủ để tiếp nhận các kết nối từ internet đi vào một subnet riêng.
Khi một máy khách gửi request, proxy đứng ra thực hiện kết nối đó với tư cách người yêu cầu, nhờ vậy che được địa chỉ IP thật của máy gốc.
Với các máy chủ đích trên internet, toàn bộ lưu lượng dường như đều xuất phát từ địa chỉ IP của máy chủ proxy thay vì từ từng endpoint riêng lẻ.
Đó chính là lớp đệm an ninh cho phép quản trị viên kiểm soát tập trung mọi luồng dữ liệu đi ra và thực thi chính sách bảo mật ngay tại biên mạng doanh nghiệp. Trong các hạ tầng lớn, proxy còn tối ưu hiệu suất đường truyền bằng bộ nhớ đệm (cache): thay vì tải lại cùng một tài nguyên cho nhiều người dùng khác nhau, nó giữ một bản sao cục bộ và phục vụ ngay cho các yêu cầu tiếp theo, giúp giảm đáng kể lưu lượng đi ra ngoài.

Forward proxy là gì?
Một forward proxy là máy chủ trung gian nằm giữa một nhóm người dùng nội bộ và mạng internet. Chức năng cốt lõi của nó là tiếp nhận yêu cầu truy cập từ máy khách, rồi thực hiện các kết nối ra ngoài với tư cách thực thể đại diện. Sau khi nhận dữ liệu phản hồi từ máy chủ đích, proxy chuyển tiếp thông tin đó về đúng máy khách đã yêu cầu ban đầu. Kết quả là hạ tầng IP nội bộ tách biệt hoàn toàn khỏi các mối đe dọa trực tiếp từ internet.
Vai trò quan trọng nhất của hệ thống này là ẩn danh và bảo vệ danh tính cho các endpoint trong mạng. Khi dữ liệu đi qua proxy, các header chứa thông tin IP gốc thường bị lược bỏ hoặc thay bằng IP của chính máy chủ proxy, khiến dịch vụ bên ngoài không thể dựng lại cấu trúc mạng phía sau. Trong một số kịch bản bảo mật cao như mạng Tor, dữ liệu còn được định tuyến qua một chuỗi nhiều proxy liên tiếp để đạt mức ẩn danh cao hơn nữa.
Bên cạnh yếu tố bảo mật, forward proxy còn là bộ máy tối ưu tài nguyên mạng nhờ khả năng lưu trữ và chuyển tiếp. Nó giữ lại các đối tượng web như hình ảnh, tệp JavaScript hay nội dung tĩnh trong cache để phục vụ những yêu cầu lặp lại từ nhiều máy khách khác nhau. Quy trình này vừa giảm độ trễ truy cập, vừa tiết kiệm chi phí băng thông quốc tế cho doanh nghiệp bằng cách cắt bớt các kết nối dư thừa ra internet.
Một request đi qua forward proxy như thế nào?
Luồng dữ liệu khi đi qua một forward proxy tuân thủ nghiêm ngặt quy trình: Client → Forward Proxy → Destination Server. Đầu tiên, máy khách thiết lập kết nối TCP đến địa chỉ IP và cổng dịch vụ của proxy thay vì kết nối thẳng tới IP máy chủ đích. Proxy tiếp nhận yêu cầu, bóc tách gói tin ở tầng ứng dụng để xác định URL hoặc địa chỉ đích mà máy khách muốn truy cập, đồng thời đối chiếu với các quy tắc kiểm soát truy cập (ACL) hiện hành.

Sau khi xác thực yêu cầu là hợp lệ, proxy kiểm tra cache để tìm bản sao có sẵn. Nếu tài nguyên
tồn tại và còn hiệu lực, proxy ghi nhận trạng thái HIT và trả dữ liệu ngay cho client mà không cần
mở kết nối ra internet. Ngược lại, khi rơi vào trạng thái MISS, proxy tự thiết lập một kết nối mới
đến máy chủ đích, tải dữ liệu về, lưu một bản sao vào cache rồi mới chuyển tiếp kết quả cho máy khách
gốc.
Bạn có thể kiểm chứng đường đi này qua header Via, vốn ghi lại phiên bản giao thức và phần mềm
proxy đã xử lý request. Khi cần tiết lộ danh tính người yêu cầu ban đầu cho mục đích ghi log hoặc
phục vụ nội dung theo vị trí, proxy dùng thêm X-Forwarded-For để liệt kê địa chỉ IP gốc, cùng
X-Forwarded-Host và X-Forwarded-Proto cho host và giao thức ban đầu. Toàn bộ chu kỳ này diễn ra
có hệ thống, giúp quản trị viên ghi nhật ký mọi hoạt động truy cập internet để phục vụ giám sát và
hậu kiểm bảo mật.
Forward proxy khác reverse proxy ở chỗ nào?
Khác biệt cơ bản nhất giữa hai loại proxy nằm ở đối tượng chúng phục vụ và vị trí lắp đặt trong kiến trúc hệ thống. Forward proxy được thiết kế để giúp các máy tính trong mạng riêng kết nối ra internet, đóng vai trò đại diện cho phía khách hàng. Reverse proxy thì ngược lại: nó đứng trước các máy chủ trong trung tâm dữ liệu để tiếp nhận kết nối từ internet đi vào, hoạt động như người gác cổng bảo vệ phía máy chủ.

Về cách cấu hình, forward proxy thường đòi hỏi thiết lập thủ công trên từng máy trạm hoặc từng trình duyệt. Người dùng cuối biết rõ họ đang đi qua một proxy để ra ngoài, thông qua tham số IP và cổng (thường là 3128 hoặc 8080). Reverse proxy thì hoàn toàn vô hình với người dùng internet: họ truy cập tên miền công khai qua DNS mà không cần biết có máy chủ proxy nào đang điều phối tải phía sau.
Cả hai đều có khả năng cache và lọc dữ liệu, nhưng mục tiêu an ninh thì trái ngược. Forward proxy tập trung ngăn rò rỉ dữ liệu từ trong ra ngoài và cô lập máy trạm khỏi các cuộc tấn công trực tiếp nhắm vào dải IP nội bộ. Reverse proxy lại lo chống tấn công từ chối dịch vụ, xử lý giải mã TLS/SSL và cân bằng tải để bảo vệ tài nguyên máy chủ trước các truy cập độc hại từ bên ngoài.
HTTPS đi qua proxy bằng cách nào?
Lưu lượng HTTPS được xử lý bằng phương thức CONNECT để thiết lập một đường ống xuyên qua proxy. Vì
nội dung TLS/SSL được mã hóa đầu cuối giữa client và server đích, proxy không thể can thiệp vào
payload bên trong như với request HTTP thông thường. Client gửi một yêu cầu CONNECT đến proxy kèm
host và port cụ thể (thường là 443), đề nghị proxy mở một luồng TCP thô đến máy chủ đó.

Nhận được request, proxy thực hiện bắt tay TCP với máy chủ đích thay cho client rồi phản hồi bằng mã
trạng thái 2XX — thường là 200 Connection Established. Bất kỳ mã 2XX nào cũng kích hoạt việc proxy
chuyển sang chế độ tunnel, lúc đó nó ngừng xử lý dữ liệu ở tầng ứng dụng. Từ thời điểm này proxy chỉ
chuyển tiếp dữ liệu nhị phân một cách mù quáng giữa hai đầu kết nối, không quan tâm nội dung bên
trong là gì, cho tới khi tunnel đóng lại.
Cơ chế đó cũng cho phép các giao thức không phải web như SSH hay FTP đi xuyên qua proxy, nếu quản trị
viên mở các cổng tương ứng. Một request CONNECT tiêu chuẩn từ trình duyệt tới proxy có yêu cầu xác
thực trông như sau:
CONNECT server.example.com:443 HTTP/1.1
Host: server.example.com:443
Proxy-Authorization: basic aGVsbG86d29ybGQ=Điểm đáng chú ý là CONNECT giữ nguyên tính toàn vẹn của chứng chỉ SSL: quá trình trao đổi khóa diễn
ra trực tiếp giữa client và server, còn proxy chỉ là một ống dẫn dữ liệu thô.
Làm sao để client biết đường tới proxy?
Để thiết bị đầu cuối biết cách định tuyến traffic qua proxy, quản trị viên có thể dùng cấu hình thủ công hoặc cơ chế tự động qua file PAC. Ở mô hình tĩnh, thông số IP và port của proxy được nhập cứng vào cài đặt hệ thống — cách này gây khó khăn mỗi khi hạ tầng thay đổi hoặc khi phải quản lý hàng ngàn máy trạm. Vì vậy phần lớn doanh nghiệp ưu tiên dùng file Proxy Auto-Configuration (PAC) để tự động hóa việc ra quyết định định tuyến bằng logic JavaScript.

File PAC bản chất là một tập lệnh chứa hàm FindProxyForURL(url, host), cho phép trình duyệt quyết
định nên đi thẳng (DIRECT) hay đi qua một proxy cụ thể cho từng yêu cầu. File này phải được phục vụ
qua máy chủ web nội bộ với MIME type bắt buộc là application/x-ns-proxy-autoconfig, và thường được
đặt tên proxy.pac. Nhờ PAC, bạn có thể cấu hình cho traffic nội bộ đi thẳng trong khi traffic
internet buộc phải qua proxy.
Các hàm bổ trợ như isPlainHostName() giúp nhận diện máy chủ nội bộ không có tên miền mở rộng, còn
isInNet() kiểm tra xem IP đích có thuộc một dải mạng nhất định hay không. Nhưng hãy cân nhắc kỹ
trước khi dùng isInNet(), isResolvable() và dnsResolve(): chúng buộc client phải truy vấn DNS,
và nếu request sau đó còn đi qua proxy thì chính proxy lại truy vấn DNS lần nữa, nhân đôi tải lên máy
chủ DNS. Phần lớn trường hợp, các hàm so khớp chuỗi thuần túy đã đủ để đạt kết quả mong muốn.
function FindProxyForURL(url, host) {
// Nếu truy cập server nội bộ, đi trực tiếp (DIRECT)
if (isPlainHostName(host) || dnsDomainIs(host, ".internal.corp")) {
return "DIRECT";
}
// Các trường hợp khác đi qua proxy, nếu lỗi thì thử kết nối trực tiếp
return "PROXY proxy1.internal.corp:3128; PROXY proxy2.internal.corp:3128; DIRECT";
}Cấu hình phía máy chủ: ACL và cache trong Squid
Squid là giải pháp proxy phổ biến nhất trên Linux, với hệ thống Access Control List (ACL) cho phép
phân quyền truy cập rất chi tiết. Quản trị viên định nghĩa ACL dựa trên các tham số như IP nguồn
(src), tên miền đích (dstdomain) hoặc thời gian (time). Các quy tắc http_access được duyệt
tuần tự từ trên xuống và dừng ở quy tắc khớp đầu tiên, nên dòng chốt chặn cuối cùng luôn phải là
http_access deny all.
Hiệu suất của Squid phụ thuộc rất lớn vào phần cứng, và không theo cách bạn hay gặp ở các máy chủ khác. CPU nên ưu tiên xung nhịp cao thay vì số nhân thật lớn: Squid hoạt động tốt nhất trong khoảng 4 đến 8 nhân vật lý, còn các công nghệ tạo nhân ảo như hyperthreading có thể làm giảm hiệu suất. RAM cần đủ để chứa chỉ mục của cache, vì khi Squid buộc phải dùng swap trên đĩa thì hiệu năng tụt xuống rõ rệt.
Với hệ thống lưu trữ, thời gian tìm kiếm (seek time) của ổ đĩa quan trọng hơn băng thông truyền tải,
nên SSD là lựa chọn hợp lý còn RAID5 hay các thiết lập parity tương tự thì nên tránh. Mount ổ đĩa
cache với tùy chọn noatime cũng là một mẹo đáng dùng, bởi Squid tự quản lý dấu thời gian của riêng
nó và không cần hệ thống tệp ghi lại thời điểm truy cập. Dung lượng cache nên đặt trong khoảng 50%
đến tối đa 80% dung lượng đĩa còn trống; khi đầy, Squid dùng thuật toán LRU để loại bỏ những đối
tượng lâu chưa được yêu cầu nhất. Trạng thái mới hay cũ của một đối tượng được xác định qua các header
Last-Modified và Expires.
acl teachers src 192.168.1.0/24
acl students src 192.168.2.0/24
acl restricted_sites dstdomain .facebook.com .youtube.com
http_access allow teachers
http_access deny students restricted_sites
http_access allow students
http_access deny allDoanh nghiệp dùng forward proxy vào việc gì?
Trong môi trường doanh nghiệp, forward proxy đóng vai trò then chốt trong việc cô lập máy tính văn phòng khỏi rủi ro từ internet. Các tổ chức như ngân hàng hay cơ quan chính phủ dùng proxy để chặn mọi kết nối trực tiếp từ máy trạm ra bên ngoài, qua đó hạn chế nguy cơ máy bị điều khiển từ xa hoặc dữ liệu bị chuyển ra khỏi subnet được bảo vệ. Một cửa ngõ kiểm soát duy nhất cũng cho đội an ninh mạng cái nhìn tổng thể về mọi luồng dữ liệu phát sinh trong hệ thống.

Tính năng lọc nội dung giúp doanh nghiệp thực thi chính sách sử dụng internet một cách tự động. Quản trị viên có thể chặn các trang không phù hợp, phát hiện những dịch vụ shadow IT hoặc ứng dụng SaaS chưa được phê duyệt đang âm thầm gọi ra máy chủ đám mây, và giữ băng thông cho các hoạt động nghiệp vụ quan trọng. Vì mọi request đều kết thúc tại proxy, hệ thống còn dựng được thống kê chi tiết về các website hay được truy cập — dữ liệu cần thiết cho công tác đánh giá và rà soát vi phạm chính sách.
Về mặt chi phí, forward proxy tiết kiệm băng thông nhờ cơ chế cache phân cấp dùng giao thức ICP
(Internet Cache Protocol). Khi một proxy cục bộ gặp MISS, nó hỏi các proxy anh em xem có bản sao
không trước khi leo lên proxy cha hoặc ra thẳng máy chủ gốc. Nhờ vậy những tệp cập nhật phần mềm dung
lượng lớn hay nội dung tĩnh chỉ cần tải về một lần rồi phục vụ cho hàng ngàn nhân viên, cắt bớt đáng
kể chi phí đường truyền quốc tế.
Giải mã HTTPS: cái giá phải trả để nhìn thấy traffic
Thách thức lớn nhất khi vận hành proxy là dữ liệu mã hóa TLS/SSL không thể được lưu đệm theo cách
thông thường. Mỗi phiên kết nối là duy nhất, và proxy không đọc được nội dung bên trong nếu chỉ dùng
CONNECT truyền thống. Hệ quả là hiệu quả cache với các trang web hiện đại — vốn chiếm phần lớn
traffic ngày nay — giảm sút nghiêm trọng, trừ khi doanh nghiệp triển khai giải pháp can thiệp sâu như
SSL inspection. Nhưng cái giá của việc đó không nhỏ: proxy phải chấm dứt kết nối mã hóa từ client rồi
mở một kết nối mã hóa mới tới máy chủ đích, đồng thời cài một chứng chỉ gốc tin cậy lên từng thiết bị
trong mạng.

Vận hành một proxy hỗ trợ CONNECT cũng tiềm ẩn rủi ro nếu không giới hạn cổng đích thật nghiêm.
Buông lỏng khâu này, kẻ tấn công có thể lợi dụng proxy làm trạm trung chuyển thư rác qua SMTP, khiến
địa chỉ IP của doanh nghiệp bị đưa vào danh sách đen quốc tế. Tệ hơn, một proxy lỏng lẻo có thể bị
dùng để tấn công hệ thống khác, và trách nhiệm pháp lý sẽ thuộc về chủ sở hữu dải IP đó.
Cách phòng vệ là giới hạn các cổng mà CONNECT được phép mở tới, thông thường chỉ cổng 443 cho
HTTPS. Cho phép tunnel đến những cổng không an toàn đồng nghĩa vô hiệu hóa lớp phòng thủ của tường
lửa, mở đường cho các giao thức độc hại thoát ra ngoài hoặc xâm nhập vào trong. Rà soát nhật ký truy
cập định kỳ là việc bắt buộc để proxy của bạn không âm thầm biến thành một open proxy cho người khác
lợi dụng.
Khi nào bạn thực sự cần một forward proxy?
Bạn thực sự cần một forward proxy khi tổ chức đòi hỏi kiểm soát tập trung với mọi luồng dữ liệu đi ra internet từ mạng nội bộ. Đây là lựa chọn khó thay thế cho môi trường cần che địa chỉ IP thật của văn phòng và cần bằng chứng nhật ký chi tiết ở tầng ứng dụng để đáp ứng yêu cầu tuân thủ. Nếu thiết kế mạng của bạn bắt buộc máy trạm phải tách khỏi internet, proxy là con đường có kiểm soát duy nhất để những máy đó vẫn dùng được dịch vụ web.
Ngược lại, đừng dựng proxy chỉ vì thấy nơi khác dựng. Nó chỉ đáng công khi bạn có đội kỹ thuật đủ sức quản lý bộ quy tắc ACL và tối ưu phần cứng đúng hướng — bởi một forward proxy cấu hình cẩu thả sẽ biến thành điểm nghẽn duy nhất mà cả mạng doanh nghiệp phải đi qua.
Tài liệu tham khảo
- Proxy servers and tunneling — MDN
- CONNECT request method — MDN
- What Is a Forward Proxy? — Zscaler
- Proxy Auto-Configuration (PAC) file — MDN
- Squid caching proxy server — SUSE Linux Enterprise Server 15 SP6
- TLS Interception and SSL Inspection — TLSeminar
- Forward proxy vs. reverse proxy: What's the difference? — TheServerSide
- What is a Forward Proxy? — Check Point Software