# Forward proxy là gì? Cách hoạt động và khi nào nên dùng

> Forward proxy là điểm thoát duy nhất cho client nội bộ, giúp che địa chỉ IP, kiểm soát truy cập bằng ACL và tiết kiệm băng thông nhờ cache.

Nguồn: https://camnangai.com/ky-thuat/forward-proxy-la-gi  
Xuất bản: 2026-08-08

**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://camnangai.com/ky-thuat/http-la-gi), HTTPS hoặc [DNS](https://camnangai.com/ky-thuat/dns-hoat-dong-nhu-the-nao) 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](https://camnangai.com/ky-thuat/cach-internet-hoat-dong) 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.

![Các máy trạm trong mạng nội bộ đi ra internet qua một forward proxy duy nhất ở biên mạng](https://camnangai.com/articles/forward-proxy-la-gi/01-infographic-vn.webp)

## 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](https://camnangai.com/ky-thuat/javascript-la-gi) 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. Nói thẳng ra,
trong hai lý do để dựng proxy thì cache là lý do dễ chứng minh nhất bằng hóa đơn băng thông, còn giá
trị bảo mật thường phải đợi tới lúc có sự cố mới lộ ra.

## 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.

![Hành trình một request: client gửi tới proxy, proxy kiểm tra ACL rồi tra cache, trả ngay khi HIT hoặc đi tiếp tới máy chủ đích khi MISS](https://camnangai.com/articles/forward-proxy-la-gi/02-vn.webp)

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ủ. Nếu chỉ nhớ được một điều, hãy nhớ hướng của kết nối: forward proxy lo đường ra,
reverse proxy lo đường vào.

![So sánh forward proxy và reverse proxy: một bên là điểm thoát duy nhất của mạng nội bộ, một bên là điểm vào duy nhất của máy chủ](https://camnangai.com/articles/forward-proxy-la-gi/03-vn.webp)

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](https://camnangai.com/ky-thuat/trinh-duyet-hoat-dong-nhu-the-nao). 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ủ đó.

![Phương thức CONNECT: client yêu cầu mở tunnel tới cổng 443, proxy trả mã 2XX rồi chuyển tiếp mù dữ liệu đã mã hoá giữa hai đầu](https://camnangai.com/articles/forward-proxy-la-gi/04-vn.webp)

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 mù dữ liệu nhị phân 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:

```http
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, và 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.

![Ba cách để client biết đường tới proxy: nhập tay IP và port, dùng file PAC, hoặc proxy minh bạch chặn và điều hướng ở tường lửa](https://camnangai.com/articles/forward-proxy-la-gi/05-vn.webp)

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. Riêng `isInNet()`,
`isResolvable()` và `dnsResolve()` thì tôi tránh trừ khi quy tắc thực sự cần tới, bởi 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.

```javascript
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`.

```conf
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 all
```

## Doanh nghiệp dùng forward proxy vào việc gì?

Trong môi trường doanh nghiệp, forward proxy là thứ giữ cho máy tính văn phòng không phải chạm trực
tiếp vào 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.

![Cache phân cấp: proxy chi nhánh hỏi proxy anh em qua giao thức ICP trước, rồi mới lên proxy cha hoặc ra thẳng máy chủ gốc](https://camnangai.com/articles/forward-proxy-la-gi/06-vn.webp)

Tính năng lọc nội dung giúp doanh nghiệp tự động thực thi chính sách sử dụng internet. 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, tức là 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.

![Giải mã HTTPS: proxy cắt kết nối mã hoá thành hai chặng riêng và cài chứng chỉ gốc lên từng máy trạm để đọc được nội dung](https://camnangai.com/articles/forward-proxy-la-gi/07-vn.webp)

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](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Proxy_servers_and_tunneling)
- [CONNECT request method — MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/CONNECT)
- [What Is a Forward Proxy? — Zscaler](https://www.zscaler.com/resources/security-terms-glossary/what-is-forward-proxy)
- [Proxy Auto-Configuration (PAC) file — MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file)
- [Squid caching proxy server — SUSE Linux Enterprise Server 15 SP6](https://documentation.suse.com/sles/15-SP6/html/SLES-all/cha-squid.html)
- [TLS Interception and SSL Inspection — TLSeminar](https://tlseminar.github.io/tls-interception/)
- [Forward proxy vs. reverse proxy: What's the difference? — TheServerSide](https://www.theserverside.com/feature/Forward-proxy-vs-reverse-proxy-Whats-the-difference)
- [What is a Forward Proxy? — Check Point Software](https://www.checkpoint.com/cyber-hub/network-security/what-is-a-forward-proxy/)
