Nếu bạn đang thuê máy chủ, ý tưởng tự tạo proxy trên VPS thay vì đi mua rất hấp dẫn. Phần mềm miễn phí, cài đặt mất vài phút, và bạn kiểm soát mọi thứ. Với một số việc, đó thật sự là lựa chọn đúng. Với những việc khác, các chi phí ẩn (mỗi máy chủ chỉ một IP, IP thuộc dải hosting, công bảo trì và nguy cơ biến máy chủ thành proxy mở) khiến proxy riêng mua sẵn trở thành lựa chọn đơn giản hơn. Bài này phác thảo một cấu hình Squid đúng và được khóa chặt, sau đó so sánh hai hướng một cách thẳng thắn.
Khi nào tự dựng proxy là hợp lý
Tự vận hành proxy phù hợp khi:
- Bạn cần một hai IP ra cố định ở một thành phố cụ thể, ví dụ để gọi một API hay vào trang quản trị có whitelist IP.
- Bạn muốn proxy chạy chung với các ứng dụng khác trên cùng máy chủ.
- Bạn quen quản trị Linux và muốn toàn quyền với log và cấu hình.
- Bạn cần một vị trí có bán máy chủ nhưng không có proxy. Cloud server của Cloudj có mặt ở 14 quốc gia, còn proxy của Cloudj có ở 7 quốc gia; bài hướng dẫn chọn vị trí VPS liệt kê đầy đủ.
Không phù hợp khi bạn cần nhiều IP, cần IP đăng ký thuộc nhà mạng (ISP) thay vì nhà cung cấp hosting, hoặc không muốn bảo trì gì cả.
Cách tự tạo proxy trên VPS bằng Squid
Ví dụ dưới đây dùng Ubuntu hoặc Debian và Squid làm HTTP proxy. Thay 198.51.100.25 bằng IP public mà bạn sẽ kết nối từ đó. Bạn có thể xem IP này bằng lệnh curl https://ifconfig.me/ip chạy trên chính máy đó. Lưu ý nhiều gói Internet gia đình ở Việt Nam thỉnh thoảng đổi IP, nên hãy kiểm tra lại khi proxy bỗng nhiên từ chối kết nối.
1. Cài Squid
sudo apt update
sudo apt install -y squid
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
2. Viết cấu hình tối giản, có giới hạn truy cập
Thay toàn bộ nội dung /etc/squid/squid.conf bằng:
http_port 3128
acl me src 198.51.100.25/32
acl SSL_ports port 443
acl Safe_ports port 80 443
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow me
http_access deny all
forwarded_for delete
via off
Cấu hình này làm gì: chỉ IP của bạn được dùng proxy, chỉ cho phép đi tới port 80 và 443, và dòng deny all cuối cùng từ chối tất cả những ai còn lại. forwarded_for delete và via off ngăn Squid chèn header làm lộ IP gốc của bạn hoặc cho biết bạn đang dùng proxy. Nếu bạn kết nối từ nhiều IP cố định, thêm các dòng acl me src tương ứng.
3. Kiểm tra cấu hình và khởi động lại
sudo squid -k parse
sudo systemctl restart squid
sudo systemctl enable squid
squid -k parse báo lỗi cấu hình trước khi lỗi đó làm dịch vụ ngừng chạy.
4. Giới hạn port bằng firewall
Bảo vệ nhiều lớp: dù đã có ACL, port proxy cũng không nên mở cho cả Internet.
sudo ufw allow OpenSSH
sudo ufw allow from 198.51.100.25 to any port 3128 proto tcp
sudo ufw enable
Cho phép SSH trước khi bật firewall để không tự khóa mình ở ngoài. Bài cấu hình firewall UFW cho VPS hướng dẫn chi tiết hơn.
5. Kiểm tra từ máy của bạn
curl -x http://IP_VPS_CUA_BAN:3128 https://ifconfig.me/ip
Kết quả phải là IP của VPS. Chạy cùng lệnh từ một mạng khác thì phải bị từ chối. Bài kiểm tra proxy bằng curl giải thích cách đo thời gian và đọc lỗi.
Tùy chọn: xác thực bằng mật khẩu
Nếu IP của bạn thay đổi thường xuyên, hãy thêm mật khẩu thay vì chỉ dựa vào IP nguồn. Cài apache2-utils, tạo file mật khẩu bằng sudo htpasswd -c /etc/squid/passwords myuser, rồi thêm các dòng sau vào phía trên dòng http_access allow me:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
acl authed proxy_auth REQUIRED
http_access allow authed
Nhớ tới quy tắc firewall: nếu mở port cho mọi nơi để dùng mật khẩu, mật khẩu mạnh và theo dõi log trở thành bắt buộc. Xác thực basic gửi thông tin đăng nhập ở dạng rất dễ giải mã, nên tránh dùng qua mạng không tin cậy.
Nếu cần SOCKS5 thay vì HTTP, các phần mềm nhẹ như 3proxy làm được; nguyên tắc vẫn vậy: chỉ cho IP của bạn hoặc thông tin đăng nhập mạnh được truy cập. Bài SOCKS5 và HTTP proxy giúp bạn quyết định có cần SOCKS5 không. Tài liệu chính thức của Squid tại squid-cache.org liệt kê mọi chỉ thị cấu hình.
Những đánh đổi mà bài hướng dẫn thường không nói
Mỗi máy chủ thường chỉ một IP
Mỗi VPS thông thường đi kèm một địa chỉ IPv4 public. Cần mười IP ra nghĩa là cần mười máy chủ, mỗi máy một lần cài đặt, cập nhật và giám sát. Bài toán chi phí đổi khác rất nhanh.
IP là IP hosting
Proxy trên VPS đi ra Internet bằng địa chỉ của máy chủ, thuộc dải của nhà cung cấp hosting, cùng loại IP mà proxy datacenter sử dụng. Loại IP này ổn cho whitelist, gọi API và nhiều việc theo dõi. Proxy riêng của Cloudj thì khác: đó là địa chỉ IPv4 tĩnh đăng ký thuộc nhà mạng (proxy ISP tĩnh), chỉ cấp cho một khách hàng. Bài so sánh proxy datacenter và static ISP giải thích sự khác biệt. Không loại IP nào đảm bảo bạn vào được một website cụ thể.
Bảo trì là việc của bạn
Bạn tự lo cập nhật hệ điều hành, cập nhật Squid, xoay vòng log, dung lượng ổ đĩa và giám sát. Proxy ngừng chạy lúc nửa đêm thì không ai báo cho bạn. Checklist bảo mật VPS mới là điểm khởi đầu tốt.
Rủi ro bị lạm dụng là có thật
Một proxy mở, tức là nhận kết nối từ bất kỳ ai, sẽ bị các công cụ quét tự động tìm ra rất nhanh rồi bị dùng để spam, tấn công và lừa đảo. Khiếu nại lạm dụng đổ về máy chủ và tài khoản của bạn, và uy tín của IP bị ảnh hưởng. ACL theo IP nguồn và quy tắc firewall ở trên là bắt buộc, không phải tùy chọn.
Lưu lượng proxy tính vào máy chủ
Lưu lượng proxy chính là lưu lượng của máy chủ. Với gói theo tháng, nó trừ vào hạn mức lưu lượng đi kèm, mức này tùy vị trí và gói; hãy xem trang bảng giá cho vị trí bạn chọn. Với tính phí theo giờ, băng thông tính theo từng GB sử dụng, và máy chủ theo giờ bị tính phí suốt thời gian còn tồn tại, dù đang chạy hay đã tắt.
So sánh hai hướng
| Proxy trên VPS tự dựng | Proxy riêng của Cloudj | |
|---|---|---|
| Loại IP | IP hosting của máy chủ | IPv4 tĩnh đăng ký thuộc nhà mạng; IP dân dụng tĩnh tại Mỹ và Việt Nam |
| Số IP | Mỗi máy chủ một IP | 1 đến 1.000 IP mỗi đơn |
| Vị trí | 14 quốc gia | 7 quốc gia |
| Thiết lập | Cài đặt, cấu hình, firewall, kiểm tra | Sẵn sàng sau vài phút trong console |
| Bảo trì | Bạn tự làm | Nhà cung cấp lo; bạn quản lý mật khẩu và whitelist |
| Giao thức | Tùy phần mềm bạn cài | HTTP hoặc SOCKS5 ở vị trí hỗ trợ |
| Kiểm soát truy cập | ACL và firewall của bạn | Mật khẩu hoặc whitelist tối đa 20 IP |
| Dùng thêm việc khác | Máy chủ chạy được cả ứng dụng khác | Chỉ làm proxy |
Tính chi phí thế nào cho đúng
Hãy so sánh cùng một mặt bằng. Với proxy tự dựng, chi phí gồm máy chủ (xem trang bảng giá), băng thông và thời gian của bạn để cài đặt và vá lỗi. Với proxy riêng, giá tính theo mỗi IP mỗi tháng, đơn càng lớn giá mỗi IP càng thấp, hiển thị trực tiếp trong console. Nguyên tắc chung: một hai IP ở thành phố mà bạn đã có máy chủ thì tự dựng có lợi; từ vài IP trở lên, hoặc khi cần IP đăng ký thuộc nhà mạng, proxy riêng có lợi hơn. Bài proxy riêng và proxy dùng chung nêu những điều cần xem khi đi mua.
Câu hỏi thường gặp
Tự chạy proxy trên VPS có hợp pháp không?
Chạy proxy là một việc quản trị bình thường. Những gì đi qua proxy phải tuân thủ pháp luật, điều khoản của nhà cung cấp và quy định của các website bạn truy cập.
Đã có mật khẩu rồi sao còn phải giới hạn IP?
Giới hạn IP khiến công cụ quét không thể thử mật khẩu, và bảo vệ bạn nếu mật khẩu bị lộ. Nếu được, hãy dùng cả hai.
Một VPS có cho nhiều IP proxy không?
Một máy chủ thông thường có một IPv4 public, tức là một IP ra. Muốn nhiều IP, bạn chạy nhiều máy chủ hoặc mua một đơn proxy với số lượng cần dùng.
Nên chọn Squid hay 3proxy?
Squid là HTTP proxy lâu đời với khả năng kiểm soát truy cập chi tiết. 3proxy là phần mềm nhỏ gọn, hỗ trợ cả SOCKS5. Hãy chọn theo giao thức mà công cụ của bạn cần.
Chọn hướng phù hợp
Nếu bạn cần một IP cố định chạy cạnh ứng dụng sẵn có, hãy tạo một máy chủ nhỏ trong console và khóa Squid như hướng dẫn ở trên. Nếu bạn cần nhiều địa chỉ hoặc IP đăng ký thuộc nhà mạng mà không phải bảo trì, xem trang proxy IPv4, trang proxy Việt Nam và giá cập nhật trên trang bảng giá.