Tới nội dung
Cloudj

Kiến thức proxy

Tự tạo proxy trên VPS hay mua proxy riêng? So sánh thẳng thắn

Cách tự tạo proxy trên VPS bằng Squid chỉ cho IP của bạn dùng, những việc bảo trì và rủi ro lạm dụng phải gánh, và khi nào nên mua proxy riêng có sẵn.

Cập nhật · 6 phút đọc

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ựngProxy riêng của Cloudj
Loại IPIP 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ố IPMỗi máy chủ một IP1 đến 1.000 IP mỗi đơn
Vị trí14 quốc gia7 quốc gia
Thiết lậpCài đặt, cấu hình, firewall, kiểm traSẵn sàng sau vài phút trong console
Bảo trìBạn tự làmNhà cung cấp lo; bạn quản lý mật khẩu và whitelist
Giao thứcTùy phần mềm bạn càiHTTP hoặc SOCKS5 ở vị trí hỗ trợ
Kiểm soát truy cậpACL và firewall của bạnMật khẩu hoặc whitelist tối đa 20 IP
Dùng thêm việc khácMáy chủ chạy được cả ứng dụng khácChỉ 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á.

Triển khai máy chủ hoặc mua proxy

Chọn vị trí trong console, xem giá trực tiếp và thanh toán từ số dư tài khoản.