III. ConnectControl – Server Load Balancing
2. Các phương pháp dùng để cân bằng tải
ConnectControl sẽ điều chỉnh traffic đến các server khác nhau để cân bẳng tải giữa các server theo nhiều cách khác nhau bao gồm những cách sau đây:
Server Load: ConnectControl sẽ đo tải trên từng server để quyết định xem
server nào có khả năng đáp ứng dịch vụ tốt nhất. Mỗi server lúc này sẽ chạy một chương trình dùng để đo độ tải trên server và báo cáo về cho ConnectControl trên CSG.
Round Trip: để chắc rằng những request từ Client sẽ được đáp ứng với thời
gian nhanh nhất. ConnectControl xác định thời gian đáp ứng của các server bằng cách ping các server 3 lần theo mặc định sao đó ConnectControl sẽ lấy tổng thời gian này chia cho 3 để lấy thời gian trung bình, ConnectControl sẽ chọn server nào có thời gian ngắn nhất. ConnectControl sau đó sẽ chuyển các request đến server đó.
Round Robin: ConnectControl sẽ chuyển tiếp các request đến server theo trình
tự, phương pháp round robin sẽ tối ưu việc cân bằng tải giửa các server khi tất cả các server có cùng cấu hình như RAM và CPU và đặt trong dùng một đoạn mạng.
khi tất cả các server có cùng cấu hình như RAM và CPU và đặt trong dùng một đoạn mạng.
Domain: chuyển tiếp các request đến các server dựa theo domain. 3. Cách hoạt động của ConnectControl
3.1 Packet Flow
Khi Client truy cập đến dịch vụ và dịch vụ đó đang được cân bằng tải bởi ConnectControl.
1. Client khởi tạo kết nối đến logical server bằng IP ảo 192.168.1.1
2. Tại security gateway, yêu cầu từ client thỏa mãn logical server rule trong firewall rule base, firewall sao đó sẽ chuyển request của client đến các server.
3. ConnectControl sẽ chuyển request đến server dựa theo phương pháp cân bằng tải đã được cấu hình.
3.2 Các loại logical server
ConnectControl sẽ xử lý các request của Client theo những cách khác nhau tùy theo loại logical server (HTTP, FTP, Mail server…)
3.2.1 HTTP logical server
HTTP logical server là loại server mà ConnectControl chuyên dùng để tiếp nhận các request HTTP từ client và chuyển tiếp đến server. HTTP logical server chỉ tiếp nhận duy nhất các HTTP request, việc chuyển tiếp phải chắc chắn rằng toàn bộ session của Client chỉ trao đổi với cùng một sever.
Cơ chế chuyển đổi HTTP hoạt động trong sự kết hợp của phương pháp cân bằng tải của ConnectControl. Client đầu tiên khởi tạo mởi kết nối đến HTTP logical server. Lúc này ConnectControl sẽ báo cho Client rằng Client sẽ phải nối đến server nào tùy theo phương pháp cân bằng tải đã được cấu hình. Client tiến hành kết nối đến server theo địa chỉ IP của server mà ConnectControl đã báo về cho Client, những kết nối theo sau sẽ chuyển trực tiếp đến server và không cần sự can thiệp của ConnectControl.
3.2.2 Logical server dành cho các dịch vụ khác
Trên CSG cung cấp 2 loại logical server là HTTP logical server và một loại logical server dành cho tất cả các service khác bao gồm cả HTTP mà Check Point gọi là Other Logical Server. Other logical server sử dụng Destination NAT để chuyển kết nối của Client đến các server. Destination NAT sẽ thay đổi destination IP trong request của Client trong lúc đi vào và thay đổi địa chị source IP đi khi ra.
4. Persistent server mode 4.1 Persistent by server 4.1 Persistent by server
Persistent by server là một chức năng hửu ích dành cho HTTP logical server, trong trường hợp có nhiều server và chức năng Persistent by server được bật, lúc này ConnectControl sẽ chuyển kết nối HTTP của client đến một server cố định và những kết nối theo của Client này sẽ được chuyển đến cùng một server để tránh trường mất dữ liệu trong lúc trao đổi giữa server và client trong một session nếu Client được chuyển đến nhiều server trong cùng một session.
4.2 Persistent by service
Persistent by service là một chức năng hửu ích khi ta sử dụng nhiều dịch vụ trong cùng một server group, trong trường hợp ta chạy 2 dịch vụ FTP và HTTP trên cùng một server trong nhóm nhiều server cân bằng tải, sử dụng chức năng persistent by service lúc này cùng một Client nhưng dịch vụ HTTP và FTP sẽ được chuyển đến 2 server khác nhau để giảm tải cho server.
4.3 Persistent server timeout
Persistent server timeout quy định khoảng thời gian mà Client duy trì kết nối đến cùng một server, do đó trong trường hợp server đó xảy ra sự cố Client có thể được chuyển đến server khác thậm chí khi chức năng persistent server mode vẫn đang hoạt động.
4.4 Server Availability
Server Availity là chức năng cho phép CSG sẽ thường xuyên kiểm tra các server trong server group có cịn hoạt động bình thường hay khơng. Người dùng có thể cấu hình lại khoảng thời gian và CSG sẽ ping để kiểm tra server đế chắc rằng server vẫn hoạt động tốt, trong trường hợp CSG không nhận được trã lời từ server thì ConnectControl sẽ không được chuyển đến server nữa.
Đo tải trên server
Load Agent Application là một chương trình của Check Point dùng để đo tải trên server và dựa vào khả năng chịu tải của server lúc nào ConnectControl sẽ chuyển kết nối đến cho server. Load Agent Application là một chương trình nhỏ gọn và dùng giao thức UDP để trao đổi với ConnectControl.
5. Cấu hình ConnectControl
Đề cấu hình ConnectControl, dùng SmartDashboard thực hiện các bước sau đây:
1. Vào ManageNetwork ObjectsNewNodeHost
Lần lượt tạo các Object tương ứng với số Server hiện có mà tham gia vào cân bằng tải.
2. Tiếp tục vào
NewGroupSimple Group.
Tại đây ta tạo một server group gồm cá server sẽ tham gia vào nhóm cân bằng tải. Đặt tên cho server group và lần lượt chọn các server ở cột bên trái và chọn Move để di chuyển server vào group
3. Vào NewLogical Server, tại
bước này ta tạo logical server đại diện cho các server tham gia vào cân bằng tải.
Chọn loại logical server và server group.
Có thể bật chức năng Peristent server mode và chọn loại
Persistentcy by Server hay
Persistency by Service
Chọn phương pháp cân bằng tải.
Bấm OK để hoàn tất
5. Đối với HTTP Logical Server ta tạo rule cho phép Client kết nối đến các server sao khi đã được redirect bởi logical server
6. Vào PolicyGlobal PropertiesFirewall, bật chức năng Accept ICMP
Request.
7. Từ menu PolicyGlobal Properties ConnectControl. Xem lại các thiết lập
mặc định của ConnectControl.
Server availability: quy định khoảng thời gian mà firewall sẽ ping các server
nếu nó vẫn hoạt động, trong trường hợp server khơng trả lời thì server firewall sẽ quy định số lần ping lại.
Server Persistency: Quy định khoảng thời gian mà kết nối của Client sẽ được
đến cùng một server và sao khoảng thời gian này khì timer sẽ được reset cho kết nối mới
Servers Load Balancing: quy định thời gian mà load measuring agent sẽ báo
cáo đến firewall độ tải của nó và port mà agent sẻ dùng.
IV. Brigde Mode 1. Tổng quan brigde mode 1. Tổng quan brigde mode
Khi triển khai một firewall vào một hệ thống mạng đã có sẵn địi hỏi lúc này phải cấu hình lại một số chức năng hoặc phải cấu hình lại tồn bộ hệ thống. Trong một số mạng có tính phức tạp cao thì địi hỏi lúc này người quản trị phải cấu hình lại hệ thống để tương thích với hệ thống routing đã có sẵn.
Brigde mode hoàn trong suốt đối với tất cả traffic của layer 3 và khi một traffic đi tới firewall, traffic sẽ được chuyển qua bình thường từ interface này sang interface khác mà khơng cần phải quan tâm gì đến vấn đề tại lớp 3. Bride mode hoạt động hoàn toàn tại lớp 2, brigde mode tạo ra một liên kết giữa 2 interface tại lớp 2, bất cứ traffic nào khi đi qua một trong nhiều interface sẽ luôn sao chép qua các interface khác. Lúc nào CSG có thể giám sát traffic bình thường mà khơng cần phải can thiệp vào vấn đề routing.
Hạn chế của brigde mode
Chỉ hổ trợ từng cặp interface
Không hổ trợ khi sử dụng trong liên kết nhiều firewall (ClusterXL)
Hoạt động trên SecurePlatform
2. Cấu hình
Brigde các interface
Sử dụng giao diện WebUI cấu hình như sau:
1. Chọn Network Connection New Brigde
Trước khi tạo một bridge connection thì các interface được bridge khơng được đặt địa chỉ IP.
2. Chọn interface để được Brigde, sau đó chọn Add.
3. Điền vào địa chỉ IP và Netmask sao cho cùng với Subnet hiện tại hoặc có thể điền 0.0.0.0. Bride Mode có thể hoạt động mà không cần địa chỉ IP.
4. Chọn Apply. Sử dụng command line
1. Nhập lệnh sysconfig
2. Chọn NetworkAdd new connectionBridge
3. Chọn 2 interface cần bridge, chú ý hai interface này hiện tại khơng có địa chỉ IP.
4. Bấm phím N để tiếp tục.
5. Điền vào địa chỉ IP và Netmask hoặc để 0.0.0.0
3. Xem Interface được Brigde bằng Command Line
Dùng lệnh brctl show để xem các interface đã được brigde. Lệnh brctl show phải được thực hiện trong mode Expert.
Phần 3 : CoreXL
1. Tổng quan về CoreXL
CoreXL là một công nghệ để tăng khả năng hoạt động của firewall bằng cách tận dụng khả năng cách tận dụng khả năng xử lý của nhiều vi xử lý để xử lý nhiều tiến trình cùng một lúc.
Với cơng nghệ CoreXL thì số vi xử lý sẽ tỉ lệ thuận với khả năng xử lý của firewall, việc tăng khả năng xử lý của firewall chỉ thực hiện trên firewall mà không cần thay đổi bất cứ gì trên hệ thống mạng.
Với cơng nghệ CoreXL thì kernel của firewall sẽ được sao chép tùy vào số lượng của vi xử lý, mỗi kernel hay instance của firewall sẽ được xử lý bởi một vi xử lý.
CoreXL chỉ hổ trợ trên nền SecurePlatform, Nokia và Crossbeam. CoreXL khơng hổ trợ các tính năng sao đây :
Check Point QoS
Traffic view in SmartView Monitor
Firewall-1 GX Route-based VPN IP Pool NAT IPv6 Overlaping NAT SMTP resource
1.1 Tổng quan về phân phối các vi xử lý
Phần chính trong kiến trúc của CoreXL là Secure Network Distributor (SND). SND trong CoreXL sẽ đãm nhiệm vai trò :
Xử lý những traffic đi vào các interface
Phân phối các gói tin khơng được tăng tốc giữa các kernel
Traffic khi đi vào các interface sẽ được chuyển hướng đến một vi xử lý và vi xử lý này chạy một SND. Việc liên kết một interface và một vi xử lý được gọi là
interface’s affinity của vi xử lý đó. Việc gắn kết này sẽ làm cho traffic của interface
được chuyển hướng đến vi xử lý và SND đang chạy trên vi xử lý đó. Ngồi ra, việc thiết lập một kernel hay một tiến trình (process) chạy trên một vi xử lý được gọi là kernel hay process’s affinity của vi xử lý đó.
Mặc định, tất cả các interface sẽ liên kết với các vi xử lý không được gắn kết với kernel của firewall và cũng cùng với SND chạy trên vi xử lý đó. Mặc định sự gắn kết cho tất cả các interface với các vi xử lý là tự động. Sự gắn kết tự động có nghĩa là nếu có Performing Pack thì sự gắn kết của các interface sẽ được reset 60s một lần và cân bằng giữa các vi xử lý. Nếu khơng có Performing Pack thì tất cả các interface sẽ được gắn kết với các vi xử lý không được gắn kết với kernel của firewall. Khi một vi xử lý đã gắn kết với một kernel thì sẽ khơng gắn kết với một interface nào khác điều này đảm bảo cho CoreXL hoạt động hiệu quả nhất.
1.2 Cấu hình mặc định của CoreXL
Trong cấu hình mặc định của CoreXL thì số lượng kernel sẽ tuân theo bảng sau đây:
Cấu hình mặc định
1.3 Xem cấu hình mặc định của CoreXL
Có thể xem được sự gắn kết của tất cả các interface, kernel của firewall với các vi xử lý bằng lệnh fw ctl affinity –l –a .
Có thể xem chi tiết các kernel và sự gắn kết của nó bằng lệnh fw ctl multik stat. Nếu Perfoming Pack đang hoạt động thì lúc đó ta xem bằng lệnh sim affinity –l
2. Phân phối lại các vi xử lý
2.1 Phân phối thêm một vi xử lý cho SND
Theo cấu hình mặc định của CoreXL thì tất cả các interface sẽ được gắn kết với các vi xử lý cịn lại khơng gắn kết với kernel của firewall. Tuy nhiên trong một số trường hợp điều này là không tối ưu và sẽ làm cho SND hoạt động chậm, làm chậm khả năng xử lý traffic tại đầu vào. Do firewall có đủ vi xử lý để phân phối thêm cho một SND và giảm đi một vi xử lý cho một kernel.
Để kiểm tra liệu SND có đang làm chậm traffic hay không ta thực hiện các bước sau: 1. Xác định vi xử lý nào hiện đang gắn kết với các interface : fw ctl affinity –l –r 2. Khi firewall trong tình trạng đang tải nặng, dùng lệnh top và kiểm tra giá trị
idle trên các vi xử lý.
1. Firewall có ít nhất 8 vi xử lý
2. Giá trị idle hiện tại của vi xử lý đang chạy SND từ 0%-5%.
3. Tổng giá trị các idle của các vi xử lý đang gắn kết với kernel lớn hơn 100%. Nếu khi không thoả các điều kiện ở trên thì cấu thì theo cấu hình mặc định thì một vi xử lý chạt SND là hiệu quả nhất và khơng cần phải cấu hình thay đổi bất cứ gì.
Để phân phối thêm một vi xử lý cho SND ta tiến hành theo các bước sau : 1. Giảm số lượng kernel của firewall bằng công cụ cpconfig 2. Phân phối vi xử lý còn lại cho SND
3. Reboot lại firewall để cập nhật cấu hình mới
2.2 Giảm số lượng instance
Để giảm số lượng kernel của ta thực hiện các bước sau :
Ngồi ra có thể dùng cơng cụ cpconfig : 1. Chạy lệnh cpconfig
2. Chọn mục Cofigure Check Point CoreXL
3. Nếu chức năng CoreXL đã được bật, chọn mục Change the number of firewall instances và thiết lập số instance
Nếu chức năng CoreXL chưa bật, bật chức năng CoreXL và chọn mục
Change the number of firewall instances
4. Reboot lại firewall
2.3 Phân phối vi xử lý cịn lại cho SND
2.3.1 Trong trường hợp có Performance Pack
Khi có Performance Pack, sự gắn kết giữa các interface và vi xử lý sẽ được thực hiện bằng lệnh sim affinity
Theo mặc định thì lệnh sim affinity sẽ được tự động, điền này có nghĩa là nếu Performance Pack chạy ở chế độ tự động thì sự gắn kết giửa các interface là vi xử lý còn lại sẽ được tự động bởi Performance Pack.
Trong hầu hết các trường hợp thì khơng cần phải thay đổi thiết lập sim affinity.
2.3.2 Trong trường hợp khơng có Performance Pack
Khi khơng có Performance Pack thì sự gắn kết giữa interface và vi xử lý sẽ được lấy từ file cấu hình tên là fwafinity.conf trong lúc boot, file này được lưu giử trong thư
mục $FWDIR/conf.
Trong file text này, kí tự i ở dịng đầu tiên đại điện cho sự liên kết giửa các interface
và vi xử lý. Nếu có Performance Pack thì dịng này sẽ được bỏ qua.
Nếu firewall chỉ có một vi xử lý chạy SND thì lúc này cách tốt nhất là để vi xử lý đó gắn kết với các interface với chế độ tự động mặc định, lúc này file cấu hình fwaffinity.conf sẽ có dạng như sau :
Nếu muốn cấu hình cho 2 vi xử lý chạy SND thì lúc này ta cần phải chỉ rỏ interface nào sẽ được gắn kết với vi xử lý nào trong trường hợp firewall có nhiều interface. Để thiết lập sự gắn kết giữa các interface khi Performance Pack không hoạt động ta làm như sau :
1. Thiết lập sự gắn kết giữa các interface và vi xử lý bằng cách chỉnh lại file cấu hình fwaffinity.conf. Mỗi dịng trong file này điều được bắt đầu bằng kí tự i và theo cú pháp sau đây :
i <interface name> <cpuid>
với :
interfacename: tên của interface, ví dụ eth0, eth1…
cpuid: số thứ tự của vi xử lý