Quản lý truy cập internet với Squid proxy
Hầu hết các tổ chức, doanh nghiệp cỡ vừa và nhỏ đều có nhu cầu giới hạn truy cập internet
chỉ cho 1 số người dùng và tiết kiệm băng thông internet. Một trong những giải pháp mở,
miễn phí và rất hiệu quả hiện nay là sử dụng Squid trên nền Linux làm 1 Proxy Server.
Người sử dụng cấu hình trình duyệt web của họ để kết nối internet thông qua Squid Server
thay vì kết nối trực tiếp. Khi 1 yêu cầu duyệt web đến từ người dùng, Squid sẽ kiểm tra trong
cache của nó thông tin về trang web đó. Nếu tìm thấy, nó sẽ gửi trang web đó về trình duyệt
người dùng mà không cần kết nối vào internet. Nếu không thấy, nó bắt đầu kết nối vào địa
chỉ trang đó và tải về rồi chuyển tiếp cho trình duyệt.
Điều này làm giảm đáng kể lượng dữ liệu tải về từ internet. Một lợi ích khác nữa là chúng ta
có thể cấu hình firewall để chỉ cho phép kết nối web thông qua Squid, còn lại tất cả các máy
trong mạng nội bộ đều không được phép kết nối trực tiếp internet. Do đó, ta có thể kiểm soát
truy cập internet của người dùng thông qua cơ chế xác thực User/Password.
Download và Cài đặt Squid Package
Hiện nay, hầu hết các phần mềm trên Linux đều phổ biến ở 2 dạng đã được biên dịch sẵn là
RPM (dành cho distro Redhat Linux) và DEB (cho Debian Linux). Việc download và cài đặt
các gói phần mềm này không khó. Trong tất cả các distro này đều hỗ trợ cơ chế cài đặt tự
động (trình cài đặt sẽ kết nối đến Server của hãng và tải gói phần mềm được yêu cầu về và
tiến hành cài đặt). Với những phiên bản mới nhất, Squid là 1 tùy chọn cài đặt trong quá trình
cài đặt hệ điều hành.
Trong bản demo này, tôi tiến hành trên bản Fedora Core 8, một phiên bản rất ổn định của
Redhat Linux, yêu cầu cấu hình không cao, dễ cấu hình, quản trị. Đối với những quản trị viên
đã có kinh nghiệm về Linux, có thể sử dụng bản Ubuntu Server 7.10 (chỉ có giao diện
command line). Đây là bản cũng thích hợp cho môi trường doanh nghiệp cỡ trung bình, phục
vụ khoảng 1000-2000 người dùng.
Khởi động Squid
Sử dụng lệnh chkconfig để cấu hình chạy Squid mỗi khi khởi động máy:
[root@proxy tmp]# chkconfig squid on
Sử dụng câu lệnh service để start, stop, và restart Squid sau khi đã khởi chạy:
[root@proxy tmp]# service squid start
[root@proxy tmp]# service squid stop
[root@proxy tmp]# service squid restart
Sử dụng câu lệnh pgrep để kiểm tra Squid có đang chạy hay không:
[root@proxy tmp]# pgrep squid
Kết quả câu lệnh trên sẽ là ProcessID của Squid
Hoặc bạn cũng có thể dùng câu lệnh:
[root@proxy tmp]# ps –aux
File cấu hình Squid: /etc/squid/squid.conf
File cấu hình chính của Squid là squid.conf. Để cấu hình Squid, cần phải chỉnh sửa các thông
số cần thiết trong file cấu hình và khởi động lại Squid
Thông số Visible Host Name
Squid sẽ không thể khởi chạy nếu không được cung cấp tên máy. Để cung cấp thông số này,
hiệu chỉnh thông số visible_hostname. Ở đây, hostname là tên của Proxy server
visible_hostname proxy
Các danh sách truy cập: Access Control Lists
Để giới hạn người dùng duyệt web, chúng ta sử dụng access control lists (ACLs). Mỗi dòng
ACL định nghĩa một loại giới hạn hoạt động cụ thể, ví dụ như thời gian truy cập hoặc mạng
nguồn (thường là LAN). Các dòng ACL sau đó được liên kết tới các phát biểu http_access
tương ứng, cung cấp thông tin cho Squid Allow hay Deny yêu cầu khi yêu cầu nằm trong
phạm vi của ACL
Squid so sánh mỗi yêu cầu truy cập web mà nó nhận được bằng cách kiểm tra danh sách
http_access từ đầu tới cuối. Nếu nó tìm thấy 1 phát biểu phù hợp, nó sẽ áp dụng để Allow hay
Deny và dừng không đọc tiếp các phát biểu phía dưới nữa. Do vậy, chúng ta cần phải cẩn
thận khi sắp sếp các phát biểu. Không được đặt các phát biểu Deny bên trên các phát biểu
Allow trong khi muốn Allow các ACL thỏa mãn phát biểu đó. Cuối cùng, phải có phát biểu:
http_access deny all
để từ chối tất cả các yêu cầu mà không được nói đến trong các phát biểu trước đó.
MỘT VÀI VÍ DỤ
Giới hạn truy cập web theo thời gian
Chúng ta có thể tạo ACL với các thông số là thời gian. Ví dụ, nếu muốn chỉ cho phép truy
cập web trong thời gian làm việc, trong khi cấm truy cập đến host 192.168.1.123, chúng ta
thực hiện như sau:
#
# Thêm các dòng ACL này vào phía trên trong đoạn ACL trong
squid.conf
#
acl home_network src 192.168.1.0/24
acl business_hours time M T W H F 9:00-17:00
acl RestrictedHost src 192.168.1.23
#
# Thêm các phát biểu sau vào phần dưới cùng của đoạn
http_access trong file squid.conf
#
http_access deny RestrictedHost
http_access allow home_network business_hours
#chú ý rằng phát biểu deny phải đặt trước
Hoặc nếu chỉ muốn cho truy cập vào buổi sáng:
#
# Thêm dòng ACL này vào phía trên trong đoạn ACL trong
squid.conf
#
acl mornings time 08:00-12:00
#
# Thêm phát biểu sau vào phần dưới cùng của đoạn http_access
trong file squid.conf
#
http_access allow mornings
Giới hạn truy cập tới các đã website xác định
Để giới hạn người dùng không truy cập đến những website không được phép, chúng ta có thể
lưu danh sách các website đó vào trong 1 file. Squid có thể đọc những file chứa danh sách
các website hoặc domain để sử dụng trong các ACL. Ví dụ, chúng ta có 2 danh sách được lưu
trong 2 file:
/usr/local/etc/allowed-sites.squid
/usr/local/etc/restricted-sites.squid.
Với nội dung các file như sau:
# File: /usr/local/etc/allowed-sites.squid
www.openfree.org
www.ncsteam.com
# File: /usr/local/etc/restricted-sites.squid
www.porn.com
illegal.com
Chúng ta có thể sử dụng để ngăn chặn các site bị giới hạn và cho phép truy cập các site không
bị giới hạn trong suốt thời gian làm việc như ví dụ dưới đây:
#
# Thêm vào phía dưới của đoạn ACL trong squid.conf
#
acl home_network src 192.168.1.0/24
acl business_hours time M T W H F 9:00-17:00
acl GoodSites dstdomain "/usr/local/etc/allowed-sites.squid"
acl BadSites dstdomain "/usr/local/etc/restricted-sites.squid"
#
# Thêm vào phần đầu tiên của đoạn http_access trong squid.conf
#
http_access deny BadSites
http_access allow home_network business_hours GoodSites
Giới hạn truy cập web theo IP
Chúng ta có thể tạo các ACL để giới hạn truy cập web của người dùng cụ thể thông qua địa
chỉ IP mà họ sử dụng. Trong ví dụ dưới, chúng ta định nghĩa giải địa chỉ LAN là 192.168.1.0
#
# Thêm vào phía dưới của đoạn ACL trong squid.conf
#
acl home_network src 192.168.1.0/255.255.255.0
Thêm phát biểu http_access tương ứng cho phép các địa chỉ IP
thỏa mãn ACL
#
# Thêm vào phần đầu tiên của đoạn http_access trong squid.conf
#
http_access allow home_network
Ngoài ra, chúng ta có thể cấu hình để xác thực người dùng thông qua User name và
password. Tham khảo thêm tài liệu về Squid để biết thêm chi tiết.
Bắt buộc tất cả người dùng phải sử dụng Squid
Để bắt buộc tất cả người dùng truy cập web đều phải thông qua Squid, chúng ta phải thiết lập
firewall (Iptables) để chỉ cho phép duy nhất Squid server có khả năng truy cập internet.
Người dùng muốn truy cập internet phải thông qua Squid.
Cấu hình Squid Server trong suốt đối với người dùng
Để giới hạn chỉ cho Squid server truy cập web mà không phải chỉnh sửa gì các thông số
proxy trong trình duyệt của người dùng, chúng ta phải cấu hình Squid tự động nhận các yêu
cầu kết nối web (transparent) của người dùng.
Các version trước 2.6: Chúng ta cấu hình các thông số như sau:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Các Version từ 2.6 trở về sau: thêm từ khóa transparent đằng sau dòng khai báo port:
http_port 8080 transparent
Cấu hình Iptable để hỗ trợ Squid Transparent Proxy
Để bắt buộc tất cả các yêu cầu kết nối web đều phải thông qua Squid proxy, chúng ta thực
hiện cấu hình Iptable như sau:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 
-j REDIRECT --to-port 3128
iptables -A INPUT -j ACCEPT -m state 
--state NEW,ESTABLISHED,RELATED -i eth1 -p tcp 
--dport 3128
iptables -A OUTPUT -j ACCEPT -m state 
--state NEW,ESTABLISHED,RELATED -o eth0 -p tcp 
--dport 80
iptables -A INPUT -j ACCEPT -m state 
--state ESTABLISHED,RELATED -i eth0 -p tcp 
--sport 80
iptables -A OUTPUT -j ACCEPT -m state 
--state ESTABLISHED,RELATED -o eth1 -p tcp 
--sport 80
Với eth0 kết nối ra internet, eth1 kết nối tới mạng nội bộ, Squid và Iptables nằm trên cùng 1
server
Để biết thêm chi tiết trong các trường hợp khác, như nhiều LAN, Iptables và Squid nằm trên
server khác nhau, các thủ thuật optimize Squid......các bạn hãy tham khảo thêm tài liệu chi
tiết về Squid (tại www.squid-cache.org) và tài liệu quản trị vận hành Linux.
Squid Proxy trong suốt cho phép client kết nối internet mà không cần phải cấu
hình gì. Mọi cấu hình đều tại server. Với Squid từ phiên bản 2.6 trở đi để cấu
hình proxy trong suốt chỉ cần thêm vào file cấu hình dòng:
http_port 3128 transparent
Sau đó sử dụng IPtables thực hiện các lệnh sau:
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-
port 3128
# echo 1 > /proc/sys/net/ipv4/ip_forward
với eth1 là card mạng kết nối với LAN. Câu lệnh thứ nhất thực hiện đổi tất cả
các kết nối đi qua cổng 80 sang cổng 3128, câu lệnh thứ hai bật chế độ IP
forwarding.
Tuy nhiên nếu server của bạn kết nối internet ppp0 qua một card mạng khác
eth0 thì cần thực hiện một lệnh nữa:
# iptables --table nat --append POSTROUTING --out-interface ppp0 -j
MASQUERADE
Khởi động lại squid là xong.
Để kiểm tra thử xem proxy đã trong suốt hay chưa, trên client hãy vào một
trang web bất kỳ và tại terminal trên server chạy:
# tail /var/log/squid/access.log
bạn dễ dàng có thể nhận thấy. Nhớ rằng trên client không cần cấu hình gì hết.
iptables -A INPUT -j ACCEPT -m state 
--state ESTABLISHED,RELATED -i eth0 -p tcp 
--sport 80
iptables -A OUTPUT -j ACCEPT -m state 
--state ESTABLISHED,RELATED -o eth1 -p tcp 
--sport 80
Với eth0 kết nối ra internet, eth1 kết nối tới mạng nội bộ, Squid và Iptables nằm trên cùng 1
server
Để biết thêm chi tiết trong các trường hợp khác, như nhiều LAN, Iptables và Squid nằm trên
server khác nhau, các thủ thuật optimize Squid......các bạn hãy tham khảo thêm tài liệu chi
tiết về Squid (tại www.squid-cache.org) và tài liệu quản trị vận hành Linux.
Squid Proxy trong suốt cho phép client kết nối internet mà không cần phải cấu
hình gì. Mọi cấu hình đều tại server. Với Squid từ phiên bản 2.6 trở đi để cấu
hình proxy trong suốt chỉ cần thêm vào file cấu hình dòng:
http_port 3128 transparent
Sau đó sử dụng IPtables thực hiện các lệnh sau:
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-
port 3128
# echo 1 > /proc/sys/net/ipv4/ip_forward
với eth1 là card mạng kết nối với LAN. Câu lệnh thứ nhất thực hiện đổi tất cả
các kết nối đi qua cổng 80 sang cổng 3128, câu lệnh thứ hai bật chế độ IP
forwarding.
Tuy nhiên nếu server của bạn kết nối internet ppp0 qua một card mạng khác
eth0 thì cần thực hiện một lệnh nữa:
# iptables --table nat --append POSTROUTING --out-interface ppp0 -j
MASQUERADE
Khởi động lại squid là xong.
Để kiểm tra thử xem proxy đã trong suốt hay chưa, trên client hãy vào một
trang web bất kỳ và tại terminal trên server chạy:
# tail /var/log/squid/access.log
bạn dễ dàng có thể nhận thấy. Nhớ rằng trên client không cần cấu hình gì hết.

Cai dat squid proxy trong suot

  • 1.
    Quản lý truycập internet với Squid proxy Hầu hết các tổ chức, doanh nghiệp cỡ vừa và nhỏ đều có nhu cầu giới hạn truy cập internet chỉ cho 1 số người dùng và tiết kiệm băng thông internet. Một trong những giải pháp mở, miễn phí và rất hiệu quả hiện nay là sử dụng Squid trên nền Linux làm 1 Proxy Server. Người sử dụng cấu hình trình duyệt web của họ để kết nối internet thông qua Squid Server thay vì kết nối trực tiếp. Khi 1 yêu cầu duyệt web đến từ người dùng, Squid sẽ kiểm tra trong cache của nó thông tin về trang web đó. Nếu tìm thấy, nó sẽ gửi trang web đó về trình duyệt người dùng mà không cần kết nối vào internet. Nếu không thấy, nó bắt đầu kết nối vào địa chỉ trang đó và tải về rồi chuyển tiếp cho trình duyệt. Điều này làm giảm đáng kể lượng dữ liệu tải về từ internet. Một lợi ích khác nữa là chúng ta có thể cấu hình firewall để chỉ cho phép kết nối web thông qua Squid, còn lại tất cả các máy trong mạng nội bộ đều không được phép kết nối trực tiếp internet. Do đó, ta có thể kiểm soát truy cập internet của người dùng thông qua cơ chế xác thực User/Password. Download và Cài đặt Squid Package Hiện nay, hầu hết các phần mềm trên Linux đều phổ biến ở 2 dạng đã được biên dịch sẵn là RPM (dành cho distro Redhat Linux) và DEB (cho Debian Linux). Việc download và cài đặt các gói phần mềm này không khó. Trong tất cả các distro này đều hỗ trợ cơ chế cài đặt tự động (trình cài đặt sẽ kết nối đến Server của hãng và tải gói phần mềm được yêu cầu về và tiến hành cài đặt). Với những phiên bản mới nhất, Squid là 1 tùy chọn cài đặt trong quá trình cài đặt hệ điều hành. Trong bản demo này, tôi tiến hành trên bản Fedora Core 8, một phiên bản rất ổn định của Redhat Linux, yêu cầu cấu hình không cao, dễ cấu hình, quản trị. Đối với những quản trị viên đã có kinh nghiệm về Linux, có thể sử dụng bản Ubuntu Server 7.10 (chỉ có giao diện command line). Đây là bản cũng thích hợp cho môi trường doanh nghiệp cỡ trung bình, phục vụ khoảng 1000-2000 người dùng. Khởi động Squid Sử dụng lệnh chkconfig để cấu hình chạy Squid mỗi khi khởi động máy: [root@proxy tmp]# chkconfig squid on Sử dụng câu lệnh service để start, stop, và restart Squid sau khi đã khởi chạy: [root@proxy tmp]# service squid start [root@proxy tmp]# service squid stop [root@proxy tmp]# service squid restart Sử dụng câu lệnh pgrep để kiểm tra Squid có đang chạy hay không: [root@proxy tmp]# pgrep squid Kết quả câu lệnh trên sẽ là ProcessID của Squid Hoặc bạn cũng có thể dùng câu lệnh: [root@proxy tmp]# ps –aux
  • 2.
    File cấu hìnhSquid: /etc/squid/squid.conf File cấu hình chính của Squid là squid.conf. Để cấu hình Squid, cần phải chỉnh sửa các thông số cần thiết trong file cấu hình và khởi động lại Squid Thông số Visible Host Name Squid sẽ không thể khởi chạy nếu không được cung cấp tên máy. Để cung cấp thông số này, hiệu chỉnh thông số visible_hostname. Ở đây, hostname là tên của Proxy server visible_hostname proxy Các danh sách truy cập: Access Control Lists Để giới hạn người dùng duyệt web, chúng ta sử dụng access control lists (ACLs). Mỗi dòng ACL định nghĩa một loại giới hạn hoạt động cụ thể, ví dụ như thời gian truy cập hoặc mạng nguồn (thường là LAN). Các dòng ACL sau đó được liên kết tới các phát biểu http_access tương ứng, cung cấp thông tin cho Squid Allow hay Deny yêu cầu khi yêu cầu nằm trong phạm vi của ACL Squid so sánh mỗi yêu cầu truy cập web mà nó nhận được bằng cách kiểm tra danh sách http_access từ đầu tới cuối. Nếu nó tìm thấy 1 phát biểu phù hợp, nó sẽ áp dụng để Allow hay Deny và dừng không đọc tiếp các phát biểu phía dưới nữa. Do vậy, chúng ta cần phải cẩn thận khi sắp sếp các phát biểu. Không được đặt các phát biểu Deny bên trên các phát biểu Allow trong khi muốn Allow các ACL thỏa mãn phát biểu đó. Cuối cùng, phải có phát biểu: http_access deny all để từ chối tất cả các yêu cầu mà không được nói đến trong các phát biểu trước đó. MỘT VÀI VÍ DỤ Giới hạn truy cập web theo thời gian Chúng ta có thể tạo ACL với các thông số là thời gian. Ví dụ, nếu muốn chỉ cho phép truy cập web trong thời gian làm việc, trong khi cấm truy cập đến host 192.168.1.123, chúng ta thực hiện như sau: # # Thêm các dòng ACL này vào phía trên trong đoạn ACL trong squid.conf # acl home_network src 192.168.1.0/24 acl business_hours time M T W H F 9:00-17:00 acl RestrictedHost src 192.168.1.23 # # Thêm các phát biểu sau vào phần dưới cùng của đoạn http_access trong file squid.conf # http_access deny RestrictedHost http_access allow home_network business_hours
  • 3.
    #chú ý rằngphát biểu deny phải đặt trước Hoặc nếu chỉ muốn cho truy cập vào buổi sáng: # # Thêm dòng ACL này vào phía trên trong đoạn ACL trong squid.conf # acl mornings time 08:00-12:00 # # Thêm phát biểu sau vào phần dưới cùng của đoạn http_access trong file squid.conf # http_access allow mornings Giới hạn truy cập tới các đã website xác định Để giới hạn người dùng không truy cập đến những website không được phép, chúng ta có thể lưu danh sách các website đó vào trong 1 file. Squid có thể đọc những file chứa danh sách các website hoặc domain để sử dụng trong các ACL. Ví dụ, chúng ta có 2 danh sách được lưu trong 2 file: /usr/local/etc/allowed-sites.squid /usr/local/etc/restricted-sites.squid. Với nội dung các file như sau: # File: /usr/local/etc/allowed-sites.squid www.openfree.org www.ncsteam.com # File: /usr/local/etc/restricted-sites.squid www.porn.com illegal.com Chúng ta có thể sử dụng để ngăn chặn các site bị giới hạn và cho phép truy cập các site không bị giới hạn trong suốt thời gian làm việc như ví dụ dưới đây: # # Thêm vào phía dưới của đoạn ACL trong squid.conf # acl home_network src 192.168.1.0/24 acl business_hours time M T W H F 9:00-17:00 acl GoodSites dstdomain "/usr/local/etc/allowed-sites.squid" acl BadSites dstdomain "/usr/local/etc/restricted-sites.squid" # # Thêm vào phần đầu tiên của đoạn http_access trong squid.conf # http_access deny BadSites http_access allow home_network business_hours GoodSites Giới hạn truy cập web theo IP
  • 4.
    Chúng ta cóthể tạo các ACL để giới hạn truy cập web của người dùng cụ thể thông qua địa chỉ IP mà họ sử dụng. Trong ví dụ dưới, chúng ta định nghĩa giải địa chỉ LAN là 192.168.1.0 # # Thêm vào phía dưới của đoạn ACL trong squid.conf # acl home_network src 192.168.1.0/255.255.255.0 Thêm phát biểu http_access tương ứng cho phép các địa chỉ IP thỏa mãn ACL # # Thêm vào phần đầu tiên của đoạn http_access trong squid.conf # http_access allow home_network Ngoài ra, chúng ta có thể cấu hình để xác thực người dùng thông qua User name và password. Tham khảo thêm tài liệu về Squid để biết thêm chi tiết. Bắt buộc tất cả người dùng phải sử dụng Squid Để bắt buộc tất cả người dùng truy cập web đều phải thông qua Squid, chúng ta phải thiết lập firewall (Iptables) để chỉ cho phép duy nhất Squid server có khả năng truy cập internet. Người dùng muốn truy cập internet phải thông qua Squid. Cấu hình Squid Server trong suốt đối với người dùng Để giới hạn chỉ cho Squid server truy cập web mà không phải chỉnh sửa gì các thông số proxy trong trình duyệt của người dùng, chúng ta phải cấu hình Squid tự động nhận các yêu cầu kết nối web (transparent) của người dùng. Các version trước 2.6: Chúng ta cấu hình các thông số như sau: httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on Các Version từ 2.6 trở về sau: thêm từ khóa transparent đằng sau dòng khai báo port: http_port 8080 transparent Cấu hình Iptable để hỗ trợ Squid Transparent Proxy Để bắt buộc tất cả các yêu cầu kết nối web đều phải thông qua Squid proxy, chúng ta thực hiện cấu hình Iptable như sau: iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i eth1 -p tcp --dport 3128 iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o eth0 -p tcp --dport 80
  • 5.
    iptables -A INPUT-j ACCEPT -m state --state ESTABLISHED,RELATED -i eth0 -p tcp --sport 80 iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o eth1 -p tcp --sport 80 Với eth0 kết nối ra internet, eth1 kết nối tới mạng nội bộ, Squid và Iptables nằm trên cùng 1 server Để biết thêm chi tiết trong các trường hợp khác, như nhiều LAN, Iptables và Squid nằm trên server khác nhau, các thủ thuật optimize Squid......các bạn hãy tham khảo thêm tài liệu chi tiết về Squid (tại www.squid-cache.org) và tài liệu quản trị vận hành Linux. Squid Proxy trong suốt cho phép client kết nối internet mà không cần phải cấu hình gì. Mọi cấu hình đều tại server. Với Squid từ phiên bản 2.6 trở đi để cấu hình proxy trong suốt chỉ cần thêm vào file cấu hình dòng: http_port 3128 transparent Sau đó sử dụng IPtables thực hiện các lệnh sau: # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to- port 3128 # echo 1 > /proc/sys/net/ipv4/ip_forward với eth1 là card mạng kết nối với LAN. Câu lệnh thứ nhất thực hiện đổi tất cả các kết nối đi qua cổng 80 sang cổng 3128, câu lệnh thứ hai bật chế độ IP forwarding. Tuy nhiên nếu server của bạn kết nối internet ppp0 qua một card mạng khác eth0 thì cần thực hiện một lệnh nữa: # iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE Khởi động lại squid là xong. Để kiểm tra thử xem proxy đã trong suốt hay chưa, trên client hãy vào một trang web bất kỳ và tại terminal trên server chạy: # tail /var/log/squid/access.log bạn dễ dàng có thể nhận thấy. Nhớ rằng trên client không cần cấu hình gì hết.
  • 6.
    iptables -A INPUT-j ACCEPT -m state --state ESTABLISHED,RELATED -i eth0 -p tcp --sport 80 iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o eth1 -p tcp --sport 80 Với eth0 kết nối ra internet, eth1 kết nối tới mạng nội bộ, Squid và Iptables nằm trên cùng 1 server Để biết thêm chi tiết trong các trường hợp khác, như nhiều LAN, Iptables và Squid nằm trên server khác nhau, các thủ thuật optimize Squid......các bạn hãy tham khảo thêm tài liệu chi tiết về Squid (tại www.squid-cache.org) và tài liệu quản trị vận hành Linux. Squid Proxy trong suốt cho phép client kết nối internet mà không cần phải cấu hình gì. Mọi cấu hình đều tại server. Với Squid từ phiên bản 2.6 trở đi để cấu hình proxy trong suốt chỉ cần thêm vào file cấu hình dòng: http_port 3128 transparent Sau đó sử dụng IPtables thực hiện các lệnh sau: # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to- port 3128 # echo 1 > /proc/sys/net/ipv4/ip_forward với eth1 là card mạng kết nối với LAN. Câu lệnh thứ nhất thực hiện đổi tất cả các kết nối đi qua cổng 80 sang cổng 3128, câu lệnh thứ hai bật chế độ IP forwarding. Tuy nhiên nếu server của bạn kết nối internet ppp0 qua một card mạng khác eth0 thì cần thực hiện một lệnh nữa: # iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE Khởi động lại squid là xong. Để kiểm tra thử xem proxy đã trong suốt hay chưa, trên client hãy vào một trang web bất kỳ và tại terminal trên server chạy: # tail /var/log/squid/access.log bạn dễ dàng có thể nhận thấy. Nhớ rằng trên client không cần cấu hình gì hết.