Kiểm tra lỗi của tập tin cấu hình

Một phần của tài liệu Nghiên cứu, triển khai dịch vụ squid proxy server trên centos (Trang 30)

Trước khi chạy Squid, ta nên kiểm tra file squid.conf đã đúng hay chưa. Chỉ cần chạy tùy chọn sau:

squid -k parse

Nếu màn hình không xuất hiện ra gì thì file cấu hình đó không bị lỗi và có thể tiến hành bước tiếp theo. Tuy nhiên, nếu tập tin cấu cấu hình bị lỗi, Squid sẽ hiển thị trên màn hình.

Hình 2.5: Hiển thị lỗi cấu hình trước khi chạy squid 2.4.2.4. Tải lại tập tin cấu hình

Đôi khi cần phải thay đổi tập tin cấu hình Squid. Sau khi thực hiện thay đổi, không muốn phải khởi động lại Squid Proxy Server. Trong trường hợp này có thể sử dụng tùy chọn -k như sau:

squid -k reconfigure

Khi thực hiện câu lệnh trên Squid sẽ phải chạy lại tập tin cấu hình mà trong khi đó vẫn phục vụ các yêu cầu bình thường khác và không chấm dứt bất kỳ kết nối đang hoạt động nào.

2.4.2.5. Kiểm tra trạng thái của một quá trình chạy Squid

Để biết Squid có chạy hay không, có thể kiểm tra trạng thái tiến trình chạy của Squid. Squid sẽ kiểm tra tập tin cấu hình và báo cáo cho ta biết bất kỳ vấn đề gì khiến Squid không chạy được. Sử dụng tùy chọn -k. Nếu Squid chạy tốt thì sẽ không hiện ra kết quả gì, ngược lại sẽ hiện ra kết quả.

squid -k check

Hình 2.6: Hiển thị của câu lệnh kiểm tra trạng thái

2.5. Tập tin log và định dạng log

2.5.1. Tập tin log

Thông điệp log của bất kỳ một ứng dụng nào để truyền tải về hành động hiện tại của nó cho người dùng biết. Squid cũng có các tập tin log khác nhau cho mỗi hành động khác nhau ở các giai đoạn khác nhau. Khi Squid gặp bất kỳ lỗi nào trước khi bắt đầu, Squid sẽ ghi chúng vào một tập tin là cache.log. Tương tự như vậy, khi Client truy cập vào Proxy Server, một thông báo đăng nhập sẽ ghi vào tập tin tên là access.log.

Squid sử dụng định dạng khác nhau cho các tập tin log. Các tập tin log rất quan trọng, ta có thể sử dụng chúng để có thể phân tích sử dụng tài nguyên hay hiệu suất của Proxy Server.

2.5.1.1. cache.log

Squid log ghi lại tất cả các lỗi và các thông điệp gỡ lỗi vào tập tin cache.log. Ví dụ kiểm tra thử một vài thông tin log và xem chúng có ý nghĩa gì.

Hình 2.7: Phiên bản, một số thông tin về nền tảng, tiến trình của squid

Ví dụ trên cho thấy, dòng đầu tiên hiển thị phiên bản của Squid và cung cấp một số thông tin về nền tảng. Dòng tiếp theo cho biết ID tiến trình của Squid.

Hình 2.8: Số lượng tập tin mô tả để squid hoạt động

Dòng trên cho thấy số lượng các tập tin mô tả có sẵn để cho Squid hoạt động.

Hình 2.9: Thông tin về hệ thống DNS squid sẽ khởi tạo

Khi Squid bắt đầu, Squid sẽ khởi tạo hệ thống DNS bắt đầu với IP Cache như thể hiện ở dòng đầu tiên trên hình. Các dòng thứ hai và thứ ba hiển thị thông tin về cấu hình DNS. Squid thêm 192.0.2.86 như một máy chủ DNS từ tập tin /etc/resolv.conf, đó là vị trí mặc định để chỉ định máy chủ DNS trên hệ thống. Nếu có nhiều hơn một máy chủ DNS trong tập tin /etc/resolv.conf, sẽ có nhiều dòng tương tự như dòng cuối cùng.

Hình 2.10: Trạng thái modules được kích hoạt khi biên dịch squid

Ở dòng trên, Squid hiển thị trạng thái của các modules mà đã được kích hoạt trong khi biên dịch Squid. Kết quả trên cho thấy User-Agent và Referer bị vô hiệu hóa cho hoạt động này.

Hình 2.11: Hiển thị thông tin về logfile, unlink, local cache digest, store log

Trong thông báo trên, dòng đầu tiên cho thấy Squid sẽ sử dụng tập tin /opt/squid/var/logs/access.log như là một tập tin access log. Nó cũng cho thấy Unlink đang được sử dụng như một chương trình lọc các đối tượng Cache. Ngoài ra Cache Digest được kích hoạt và sẽ được xây dựng, viết lại mỗi giờ. Dòng cuối cùng cho thấy các log của tất cả các hoạt động liên quan đến lưu trữ bị vô hiệu hóa.

Hình 2.12: Hiển thị thông báo lỗi và cách sửa chữa

Ở ví dụ trên có thể thấy Squid thông báo “Permission denied” trên thư mục Cache. Bất kỳ lúc nào có vấn đề, Squid sẽ cố gắng mô tả nguyên nhân và đưa ra hành động thích hợp để có thể sửa chữa vấn đề.

2.5.1.2. access.log

Khi Squid bị lỗi thì cache.log rất quan trọng cho việc sửa lỗi. Nhưng tập tin log quan trọng nhất là access.log. Access.log được Squid lưu các thông tin về người dùng truy câp vào máy chủ Proxy, và các thông tin liên quan đến tình trạng requests và replies. Vị trí của tập tin access.log được xác định bởi dòng lệnh access_log trong file cấu hình Squid. Mặc định được thiết lập cấu hình là $ {prefix}/var/logs/access.log.

Những thông điệp được ghi trong tập tin access.log không phải dễ đọc được như trong cache.log, nhưng một khi hiểu được ý nghĩa các trường trong access.log thì lại rất dễ dàng giải thích các thông điệp trong đó. Có rất nhiều định dạng trong thông điệp của access.log. Xét ví dụ sau :

Cột đầu tiên đại diện cho các giây trôi qua kể từ một kỷ nguyên Unix. Nhưng không thể hiểu được, có thể sử dụng perl để chuyển đổi sang nhãn thời gian.

perl –p –e 's/^([0-9]*)/"[".localtime($1)."]"/e' <access.log> access.log.h

Bây giờ thông điệp access.log sẽ chuyển đổi thành nhãn thời gian bình thường.

Hình 2.14: Thông điệp access.log sau khi chuyển đổi

Cột thứ hai đại cho thời gian đáp ứng được tính bằng milliseconds. Cột thứ ba là địa chỉ IP của Client. Cột thứ 4 là sự kết hợp trạng thái requests của Squid và mã trạng thái HTTP. Cột thứ năm đại diện cho kích thước reply bao gồm cả tiêu đề HTTP. Cột thứ sáu trong thông điệp log đại diện cho phương thức yêu cầu của HTTP là GET. Ở đây cũng có thể có giá trị là POST, PUT, DELETE… Cột thứ bảy đại diện cho yêu cầu của URL. Cột tám là tên người dùng, nhưng ở đây trống vì yêu cầu không được chứng thực. Cột chín là sự kết hợp của tình trạng hệ thống Squid phân cấp và địa chỉ IP hoặc tên của các Cache ngang hàng. Cột cuối cùng đại diện cho các kiểu nội dung của reply.

2.5.1.3. referer.log

Khi Client kích chuột vào một liên kết đến other.example.com trên trang web example.com, một referrer HTTP header được gửi tới. Squid có khả năng ghi lại referrer HTTP header để sau này có thể sử dụng để phân tích mẫu lưu lượng.

Mặc định không có referrer.log. Để tạo ra các referrer.log trước hết cần phải tạo ra một định dạng log như sau:

logformat referer %ts.%03tu %>a %{Referer}>h %ru Cấu hình này định nghĩa một định dạng log mới là referrer, trong đó có một request timestamp, địa chỉ IP của Client, referer URL và request URL. Bây giờ cần phải sử dụng dòng lệnh access_log với định dạng trên.

access_log /opt/squid/var/logs/referer.log referrer

Xét một vài dòng từ tập tin referrer.log:

Hình 2.15: Thông điệp referrer.log

2.5.2. Định dạng log

Định dạng log được định nghĩa bằng cách sử dụng dòng lệnh logformat có sẵn trong tập tin cấu hình Squid. Cú pháp sử dụng logformat như sau :

logformat <name> <format specification>

< format specification > là một loạt các mã định dạng được mô tả trong dưới đây:

Mã định dạng

Ý nghĩa

% Chuỗi ký tự %

sn Dãy số duy nhất cho mỗi dòng log

err_code ID lỗi của đáp ứng bởi squid hay một lỗi tương tự được nội bộ định nghĩa

err_detail Thông tin lỗi được bổ sung vào err_code >a Địa chỉ IP nguồn của client

>A FQDN của client ( Fully Qualified Domain Name ) >p Cổng nguồn của client

<A Địa chỉ IP của máy chủ hoặc tên ngang hàng la Địa chỉ IP cục bộ của máy chủ squid proxy lp Số cổng cục bộ mà squid lắng nghe

<lp Số cổng cục bộ cuối cùng của máy chủ hoặc máy ngang hàng kết nối Ts Những giây từ kỷ nguyên UNIX

tu Thời gian giây tiếp theo ( Tính bằng milliseconds )

tl Thời gian cục bộ. Mặc định là %d/%b/%Y:%H:%M:%S %z tg Thời gian GMT. Mặc định là %d/%b/%Y:%H:%M:%S %z

tr Thời gian đáp ứng ( tính bằng milliseconds )

dt Tổng thời gian tra cứu DNS ( tính bằng milliseconds )

[http::]>h Bản gốc yêu cầu tiêu đề. Tên tham số tiêu đề định dạng heade heade [:[separator]element] [http::]>ha Các tiêu đề HTTP yêu cầu sau khi đáp ứng và chuyển hướng

[http::]un Tên người dùng [http::]<h Tiêu đề reply

[http::]ul Người dùng từ chứng thực [http::]ui Người dùng từ yêu cầu ident [http::]>Hs Mã trạng thái HTTP gửi cho client

[http::]<Hs Mã trạng thái HTTP nhận từ bước truyền kế tiếp [http::]<bs

Số lượng các thông điệp HTTP tính bằng bytes nhận được từ các bước truyền kế tiếp, không bao gồm mã chuyển chunk và thông điệp điều khiển

[http::]Sh Trạng thái hệ thống phân cấp của squid ( DEFAULT_PARENT…)

[http::]mt Reply theo kiểu MIME

[http::]rm Phương pháp yêu cầu HTTP ( GET/POST, …) [http::]ru

Yêu cầu URL

[http::]rp Yêu cầu URL, không bao gồm hostname [http::]rv Yêu cầu phiên bản giao thức

[http::]<st Gửi kích thước trả lời bao gồm tiêu đề HTTP [http::]>st

Nhận được kích thước yêu cầu bao gồm tiêu đề HTTP. Trong trường hợp chunked yêu cầu, các dữ liệu mà hóa chunked không được bao gồm

[http::]>sh Nhận được kích cỡ yêu cầu của tiêu đề HTTP [http::]<sh Gửi kích cỡ trả lời của tiêu đề HTTP

[http::]st Kích cỡ yêu cầu và trả lời bao gồm các tiêu đề HTTP [http::]<sS Kích cỡ đối tượng ngược tuyến

[http::]<pt

Thời gian đáp ứng ngang hàng tính bằng milliseconds. Thời gian bắt đầu khi các byte yêu cầu cuối cùng được gửi tới các bước truyền kế tiếp và dừng lại khi các byte đáp ứng cuối cùng nhận được

2.6. Quản lý Squid và giám sát lưu lượng

2.6.1. Cache Manager

Cache Manger sử dụng giao diện web để quản lý các máy chủ Squid Proxy. Ta không cần phải cài đặt thêm bất kỳ một module, phần mềm nào để có được giao diện web để quản lý các máy chủ Squid Proxy. Ngoài ra Cache Manager còn cung cấp số liệu thống kê khác nhau về cách sử dụng các nguồn tài nguyên, điều đó giúp việc giám sát các máy chủ Squid Proxy từ một giao diện web.

Trước khi có thể sử dụng giao diện web để quản lý, cần phải cấu hình Squid và chương trình cachmgr.cgi để cung cấp giao diện web.

2.6.1.1. Cài đặt Apache Web server

Để cài đặt Apache trên Red Hat Enterprise Linux, CentOS, hay Fedora sử dụng Yum. Lệnh như sau:

yum install httpd

2.6.1.2. Cấu hình Apache

Cấu hình Apache để sử dụng cachemgr.cgi như script để cung cấp giao diện web Cache Manager.

Sau khi cài đặt Apache, cần phải cấu hình để sử dụng cachemgr.cgi. Các tập tin cachemgr.cgi thường được đặt tại ${prefix}/libexec/cachemgr.cgi với $ {prefix} là tùy chọn -prefix trước khi chạy configure.

Tiếp đến cần đặt các dòng sau trong squid-cachemgr.conf và chuyển tập tin này vào thư mục cái đặt conf.d của Apache. (conf.d thường nằm ở /etc/httpd/conf.d/)

Hình 2.16: Thông số cần chỉnh trong tập tin conf.d của Apache

Sau khi làm xong bước trên cần phải khởi động hoặc nạp lại Apache web server sử dụng dòng lệnh sau:

2.6.1.3. Truy cập giao diện web cache manager

Trước khi có thể sử dụng Cache Manager, cần cấu hình Squid để cho phép đăng nhập vào giao diện web cache manager.

a, Cấu hình Squid

Dòng lệnh cache_mgr được dùng để chị định mail của người quản trị. Mặc định là người quản trị trang web, tuy nhiên có thể thay đổi thành một địa chỉ ta muốn như admin@example.com.

cache_mgr admin@example.com

Cấu hình trên sẽ thiết lập địa chỉ mail của nhà quản trị là admin@example.com và sẽ gửi cảnh báo tới địa chỉ mail trên nếu Squid có bất kỳ một vấn đề gì xảy ra.

Dòng lệnh cachemgr_passwd được dùng để kiểm soát truy vào các phần khác nhau của giao diện web cache manager. Các định dạng để sử dụng dòng lệnh cachemgr_passwd như sau:

cachemgr_passwd PASSWORD ACTION ACTION ...

Tham số PASSWORD là mật khẩu cho giao diện web cache manager dưới dạng văn bản rõ.

Tham số ACTION được thay bằng tên của một hay nhiều phần của giao diện web cache manager. Tham số này có một giá trị đặc biệt là all, có nghĩa là giao diện web cache manager sẽ quản lý tất cả. Ví dụ muốn giao diện web cache manager quản lý tất cả các phần sử dụng mật khẩu, sử dụng dòng cấu hình sau đây:

cachemgr_passwd s3cr3tP4sS all

Cấu hình này sẽ cho phép mật khẩu này truy cập tới tất cả các phần của giao diện web cache manager.

b, Đăng nhập vào cache manager

Để truy cập vào giao diện web cache manager cần sử dụng trình duyệt và đánh vào đường dẫn http://localhost/Squid/cgi-bin/cachemgr.cgi. Nếu truy cập vào Proxy Server ở một máy tính khác thì phải thay thế localhost bằng địa chỉ IP của máy Proxy Server.

Hình 2.17: Giao diện đăng nhập của Cache manager

Ở đây nhập admin@example.com với pass word được thiết lập như phía bên trên. Sau đó bấm Continue. Khi đăng nhập thành công, một danh sách các liên kết sẽ xuất hiện mà ta có thể sử dụng chúng để tìm hiểu về Squid.

Hình 2.18: Danh sách menu của cache manager 2.6.1.4. Một số liên kết quan trọng

a, General Runtime information

Ta có thể tìm hiểu thêm về Squid và sử dụng tài nguyên của Squid từ liên kết General Runtime information trong trình đơn cache manager. Liên kết này sẽ đưa đến một trang hiển thị thông tin về các thành phần của Proxy Server.

Hình 2.19: Nội dung thông tin của General Runtime information

Trong hình có một bảng ở trên cùng. Bảng này hiển thị thông tin về thời gian Squid bắt đầu chạy và thời gian hiện hành của Squid.

Tiếp theo là thông tin chi tiết về các kết nối. Theo thống kê trong hình, có 1146 Client truy cập vào Proxy Server và có hơn 60 triệu yêu cầu mà Squid nhận được kể từ khi bắt đầu chạy.

Cuối cùng là hiển thị thông tin về hiệu suất của ổ cứng và bộ nhớ Cache. Request Hit Ratios là tỷ lệ các yêu cầu từ bộ nhớ Cache với tổng số yêu cầu trong một khoảng thời gian cụ thể. Byte Hit Ratios là tỷ lệ số bytes phục vụ từ bộ nhớ Cache với tổng số byte phục vụ từ các Proxy Server.

b, IP cache stats and Content

Tìm tới IP cache stats and Content trong danh sách Cache Manager và kích vào. Điều này sẽ cho thấy số liệu thống kê về IP Cache mà Squid đã xây dựng theo thời gian (Tham khảo thêm dòng lệnh ipcache_low, ipcache_size, ipcache_high trong tập tin cấu hình squid).

Hình 2.20: Nội dung thông tin của IP cache stats and Content

Ý nghĩa của một số các số liệu thống kê:

- IPcache Entries: Tổng số đầu vào trong bộ nhớ cache IP. Điều này có thể được giới hạn bằng dòng lệnh ipcache_size trong squid.conf.

- IPcache Requests: Tổng số yêu cầu phân giải tên miền mà Squid nhận được cho tới nay.

- IPcache Hits: Số lượng yêu cầu mà bộ nhớ cache IP có thể thỏa mãn. - IPcache Negative Hits: Số lượng yêu cầu truy vấn bị lỗi.

- IPcache Numeric Hits: Số lượt truy cập yêu cầu một địa chỉ IP thay vì tên miền.

- IPcache Misses: Số lượng truy vấn DNS mà Squid phải làm vì các địa chỉ IP cho những tên miền không có trong bộ nhớ Cache.

- IPcache Invalid Requests: Yêu cầu không hợp lệ do tên miền bị định dạng.

c, FQDN Cache Statistics

FQDN (Fully Qualified Domain Name) là tên miền mà đã xác định chính xác vị trí trong hệ thống phân cấp dạng cây của các hệ thống phân giải tên miền (DNS). Ta có thể cấu hình squid để giới hạn đầu vào FQDN trong bộ nhớ Cache bằng dòng lệnh fqdncache_size trong squid.conf. Từ danh sách trong Cache Manager kích vào FQDN cache Statistics.

Trong phần này, ta cũng sẽ thấy số liệu thống kê tương tự như số liệu thống kê trong bộ nhớ cache. Các số liệu thống kê sẽ giống như sau:

Hình 2.21: Nội dung thông tin của FQDN Cache Statistics d, HTTP Header Statistics

Kích vào HTTP header Statistics trong danh sách Cache Manager. Trên trang này có thể xem thống kê về các trường tiêu đề trong requests và reply. Xét một vài mục trong bảng:

Hình 2.22: Nội dung thông tin của HTTP Header Statistics

Cột đầu tiên là cột ID mà Squid sử dụng. Cột thứ hai là tên của trường tiêu đề HTTP.

Một phần của tài liệu Nghiên cứu, triển khai dịch vụ squid proxy server trên centos (Trang 30)

Tải bản đầy đủ (DOC)

(75 trang)
w