#

Hướng dẫn tạo proxy bằng Squid trên Ubuntu 20.04

Là một loại ứng dụng server, proxy servers làm nhiệm vụ kết nối giữa người dùng cuối và tài nguyên internet. Người dùng cuối có thể kiểm soát và giám sát lưu lượng truy cập web của họ cho nhiều mục đích khác nhau thông qua proxy server. Squid là một proxy HTTP mã nguồn mở, phổ biến, ổn định. Trong bài viết dưới đây, BKHOST sẽ hướng dẫn cho bạn cách tạo proxy bằng Squid trên Ubuntu 20.04 để cung cấp proxy HTTP.

Huong dan tao proxy bang Squid tren Ubuntu

Điều kiện tiên quyết:

Đăng ký tên miền .VN tại BKHOST

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký tên miền .VN:

  • Giảm ngay 140k.
  • Miễn phí 100% dịch vụ khởi tạo tên miền .VN

Đăng ký ngay:

mua tên miền vn giá rẻ

Muốn hoàn thành các hướng dẫn bên dưới bạn cần có máy chủ Ubuntu 20.04 và người dùng không phải root có đặc quyền sudo. Ở hướng dẫn này chúng ta sử dụng tên miền your_domain, tuy nhiên bạn nên thay thế tên miền này bằng tên miền hoặc địa chỉ IP của riêng bạn.

Bước 1 – Cài đặt Squid Proxy

Để tạo proxy bằng Squid trên Ubuntu đầu tiên cập nhật danh sách gói của bạn và cài đặt Squid Proxy với tư cách người dùng không phải root bằng câu lệnh sau:

sudo apt update
sudo apt install squid

Sau khi cài đặt Squid sẽ tự động thiết lập một dịch vụ nền và bắt đầu nó. Để kiểm tra xem dịch vụ có đang chạy đúng cách hay không ta dùng câu lệnh:
systemctl status squid.service

Output
● squid.service - Squid Web Proxy Server
Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-12-15 21:45:15 UTC; 2min 11s ago

Squid không cho phép bất kỳ máy khách nào kết nối với nó từ bên ngoài máy chủ này ở chế độ mặc định. Vì vậy bạn sẽ cần thực hiện một số thay đổi đối với tệp cấu hình của squid, tệp này được lưu trữ trong /etc/squid/squid.conf. Mở squid trong nano hoặc trình soạn thảo văn bản:
sudo nano /etc/squid/squid.conf

Squid chứa một số lượng lớn các tùy chọn đã tạm thời bị vô hiệu hóa bằng cách đặt một # ở đầu dòng chúng đang bật khi ở chế độ mặc định. Để tìm kiếm trong tệp để tìm các dòng bạn muốn chỉnh sửa trong nano bạn làm như sau: Nhấn Ctrl + W, nhập cụm từ cần tìm kiếm và nhấn Enter. Nếu muốn tìm phiên bản tiếp theo của cụm từ đó ta nhấn Alt + W. Nếu muốn thấy một khối văn bản giải thích các quy tắc truy cập mặc định của Squid ta điều hướng đến dòng có chứa cụm từ http_access deny all:
. . . 
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
include /etc/squid/conf.d/*
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all
. . .

Ở đây bạn có thể thấy hành vi hiện tại – localhost có cho phép các kết nối khác hay không. Bởi vì các quy tắc này được phân tích cú pháp tuần tự, nên bạn cần giữ deny all quy tắc ở cuối khối cấu hình này. Nếu muốn bạn có thể đổi quy tắc này thành allow all để cho phép bất kỳ ai kết nối với máy chủ proxy của bạn, nếu không muốn bạn có thể thêm một dòng ở trên http_access allow localhost bao gồm địa chỉ IP của riêng bạn, như sau:
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
include /etc/squid/conf.d/*
# Example rule allowing access from your local networks.
acl localnet src your_ip_address
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost

  • acl là viết tắt của A ccess C ontrol L ist, một thuật ngữ chung cho các chính sách cấp phép.
  • localnet trong trường hợp này là tên ACL của bạn.
  • src là nơi yêu cầu bắt nguồn từ ACL này, tức là địa chỉ IP của bạn.

Sau khi hoàn thành thay đổi bạn hãy lưu và đóng file. Nếu sử dụng nano bạn hãy bấm Ctrl + X sau đó nhấn Enter.

Vừa rồi bạn đã tạo proxy bằng Squid trên Ubuntu thành công bây giờ bạn đã có thể khởi động lại Squid và kết nối với nó, nhưng nên làm nhiều việc hơn để bảo mật nó trước khi khởi động lại.

Bước 2 – Bảo mật Squid

Để hạn chế quyền truy cập vào proxy của bạn bằng địa chỉ IP. Bằng chức năng tích hợp sẵn của Linux Squid bạn có thể tạo ra các cặp username-password. Cách làm như sau: Bạn thêm tệp có tên /etc/squid/password và trỏ cấu hình của Squid đến nó.

Đầu tiên để có quyền truy cập vào trình tạo mật khẩu Squid mà bạn thích. Bạn cần cài đặt một số tiện ích từ Apache project.

sudo apt install apache2-utils

Với gói htpasswd bạn có thể sử dụng lệnh để tạo mật khẩu cho người dùng Squid mới., Nếu muốn bạn có thể sử dụng cùng tên mà bạn đã đăng nhập. Bởi vì tên người dùng của Squid không bao giờ trùng lặp với tên người dùng hệ thống. Bạn cũng sẽ được nhắc thêm mật khẩu:
sudo htpasswd -c /etc/squid/passwords your_squid_username

Điều này giúp lưu tên người dùng của bạn cùng với mật khẩu mới của bạn /etc/squid/passwords, mật khẩu này dùng làm nguồn xác thực bởi Squid. Để xem nó bạn có thể cat tập tin:
sudo cat /etc/squid/passwords

Output
sammy:$apr1$Dgl.Mtnd$vdqLYjBGdtoWA47w4q1Td.

Bây giờ bạn có thể cập nhật cấu hình của Squid để sử dụng /etc/squid/passwords tệp mới của mình. Bằng cách sử dụng nano hoặc trình soạn thảo văn bản để mở lại tệp cấu hình Squid và thêm các dòng được đánh dấu sau:
sudo nano /etc/squid/squid.conf

…
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
include /etc/squid/conf.d/*
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# Example rule allowing access from your local networks.
acl localnet src your_ip_address
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all
…

Các dòng lệnh vừa được thêm yêu cầu Squid kiểm tra passwords tệp mới của bạn. Để tìm các mật khẩu được phân tích cú pháp bằng cách sử dụng basic_ncsa_auth cơ chế và yêu cầu xác thực nhằm truy cập vào proxy của bạn. Bây giờ bạn có thể khởi động lại Squid với các thay đổi cấu hình của mình. Quá trình này có thể mất một chút thời gian để hoàn thành.
sudo systemctl restart squid.service

Nếu bạn đang sử dụng ufw bạn cần phải mở cổng 3128 trong tường lửa của mình:
sudo ufw allow 3128

Cuối cùng bạn sẽ được kết nối với proxy của mình.

Bước 3 – Kết nối thông qua Squid

Trên tất cả các môi trường Windows, Mac và Linux hiện nay chương trình curl đều được cài đặt ở chế độ mặc định. Bạn sẽ dùng chương trình này để thực hiện các yêu cầu web khác nhau nhằm chứng minh máy chủ Squid của mình.

Bạn nên sử dụng curl nếu bạn muốn xác minh xem liệu một kết nối nhất định có hoạt động trong một trình duyệt ở những trường hợp lý tưởng hay không. Bạn hãy sử dụng curl trên máy cục bộ của mình để mở bất kỳ trình cục bộ nào và chạy lệnh sau:

curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 http://www.google.com/

Đối -x số chuyển một máy chủ proxy để cuộn lại và trong trường hợp này bạn đang sử dụng http://giao thức, chỉ định tên người dùng và mật khẩu của bạn cho máy chủ này, sau đó kết nối với một trang web hoạt động đã biết như thế nào google.com. Bạn sẽ thấy kết quả như sau nếu lệnh thành công:
 Trying 138.197.103.77...
* TCP_NODELAY set
* Connected to 138.197.103.77 (138.197.103.77) port 3128 (#0)
* Proxy auth using Basic with user 'sammy'
> GET http://www.google.com/ HTTP/1.1

Bạn cũng có thể truy cập https://các trang web bằng proxy Squid của mình mà không cần thực hiện thêm bất kỳ thay đổi cấu hình nào. Để duy trì SSL giữa máy khách và máy chủ chúng sử dụng một chỉ thị proxy riêng biệt được gọi CONNECT:
curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 https://www.google.com/

Output
* Trying 138.197.103.77...
* TCP_NODELAY set
* Connected to 138.197.103.77 (138.197.103.77) port 3128 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to www.google.com:443
* Proxy auth using Basic with user 'sammy'
> CONNECT www.google.com:443 HTTP/1.1
> Host: www.google.com:443
> Proxy-Authorization: Basic c2FtbXk6c2FtbXk=
> User-Agent: curl/7.55.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
* Proxy replied OK to CONNECT request
* CONNECT phase completed!

Thông tin đăng nhập mà bạn đã sử dụng curl giờ sẽ hoạt động ở bất kỳ nơi nào mà bạn muốn sử dụng máy chủ proxy mới của mình.

Tổng kết về cách tạo proxy bằng Squid trên Ubuntu

Với bài viết về tạo proxy bằng Squid trên Ubuntu trên đây. BKHOST hi vọng bạn đã biết cách triển khai một điểm cuối API nguồn mở, phổ biến cho lưu lượng truy cập ủy quyền với chi phí thấp hoặc không tốn phí. Nhiều ứng dụng có hỗ trợ proxy tích hợp (thường ở cấp hệ điều hành) từ nhiều thập kỷ trước, làm cho ngăn xếp proxy này có khả năng tái sử dụng cao.

Nếu còn gặp bất cứ vướng mắc gì về nội dung bài viết trên, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.


  • Hướng dẫn tạo proxy bằng Squid trên ubuntu
  • cách tạo proxy bằng Squid
  • Squid Proxy ubuntu

Dịch vụ NVMe Hosting WordPress tốc độ cao

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký dịch vụ NVMe Hosting WordPress:

  • Giảm giá lên đến 40%.
  • Giá chỉ từ 23k/tháng.
  • Tặng gói bảo mật SSL Let’s Encrypt.

Đăng ký ngay:

wordpress hosting giá rẻ

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger