NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
22/05/2023
Lượt xem

Hướng dẫn cấu hình tường lửa Linux cho Docker Swarm trên CentOS 7

22/05/2023
14 phút đọc
Lượt xem

Đánh giá

5/5 - (73 bình chọn)

Trong bài viết dưới đây của Vietnix, bạn sẽ được hướng dẫn về cách cấu hình tưởng lửa Linux cho Docker Swarm trên CentOS 7 thông qua FirewallD và IPTables. Cùng theo dõi và và thực hiện nhé.

Điều kiện để cấu hình tường lửa Linux cho Docker Swarm trên CentOS 7

Docker Swarm là một tính năng của Docker giúp dễ dàng chạy nhiều Docker và chứa quy mô lớn. Hay nói cách khác là một cụm Docker hoạt động cùng nhau. Vì vậy, bạn cần đảm bảo rằng bạn đã thiết lập cụm Docker Swarm có một hoặc nhiều máy quản lý (manager nodes) đảm nhận việc quản lý các máy còn lại (worker nodes).

Ngoài ra, phải đảm bảo các port mạng cần thiết cho Docker Swarm hoạt động bình thường gồm:

  • TCP port 2376: Dùng để giao tiếp an toàn giữa Docker client và Docker Machine. (Docker Machine yêu cầu port này để hoạt động)
  • TCP port 2377: Dùng để giao tiếp giữa các manager node trong Docker Swarm hoặc giữa các cluster.
  • TCP và UDP port 7946: Dùng giao tiếp giữa các nodes (khám phá node mạng overlay).
  • UDP port 4789: Có thể cấu hình – dùng cho lưu lượng mạng overlay.

Lưu ý: Ngoài các port trên, các port được yêu cầu cũng quan trọng với hệ thống và service cũng cần đảm bảo đã mở thông suốt.

Trường hợp bạn đang cần VPS để triển khai và vận hành Docker. Thì việc lựa chọn VPS phù hợp và cấu hình tài nguyên, hệ điều hành phù hợp là vô cùng quan trọng.

Hiện tại Vietnix đang cung cấp nhiều gói VPS với đa dạng hệ điều hành gồm (CentOS, Ubuntu Server, Windows Server,…) nhiều cấu hình và chi phí hợp lý có thể đảm bảo hiệu suất ổn định và an toàn của Docker gồm: VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS NVMe và VPS GPU.

Đặc biệt, Vietnix còn rất nhiều ưu đãi đặc biệt cho khách hàng đăng ký dịch vụ VPS như: Tặng bộ Theme & Plugin bản quyền trị giá tới 50.000.000 VND/Năm.

Nhanh tay đăng ký dịch vụ thuê máy ảo của Vietnix ngay hôm nay!

Phương pháp 1 – Mở Docker Swarm Ports bằng FirewallD

FirewallD là ứng dụng tường lửa mặc định trên CentOS 7, nhưng trên một máy chủ CentOS 7 mới, nó sẽ không hoạt động. Vì vậy, bạn cần bật nó lên và thêm các cổng mạng cần thiết để Docker Swarm có thể hoạt động.

Trước khi bắt đầu, hãy sử dụng lệnh sau để kiểm tra trạng thái của FirewallD:

systemctl status firewalld

Nếu thấy FirewallD chưa chạy thì hãy bật FirewallD bằng lệnh sau:

systemctl start firewalld

Cho phép FirewallD tự động chạy khi khởi động máy:

systemctl enable firewalld

Sau đó, trên Swarm manager, sử dụng các lệnh sau để mở các port cần thiết:

firewall-cmd --add-port=2376/tcp --permanent
firewall-cmd --add-port=2377/tcp --permanent
firewall-cmd --add-port=7946/tcp --permanent
firewall-cmd --add-port=7946/udp --permanent
firewall-cmd --add-port=4789/udp --permanent

Lưu ý: Nếu trong quá trình mở các port mà bạn bị lỗi, thì hãy xóa port đó đi và mở lại bằng lệnh:

firewall-cmd --remove-port=port-number/tcp —permanent.

Thay thế port-number bằng port mà bạn muốn xóa.

Sau khi các port cần thiết đã được mở, hãy tải lại FirewallD bằng lệnh:

firewall-cmd --reload

Và tiến hành khởi động lại Docker:

systemctl restart docker

Sau đó trên mỗi máy con (worker nodes), thực hiện các lệnh sau:

firewall-cmd --add-port=2376/tcp --permanent
firewall-cmd --add-port=7946/tcp --permanent
firewall-cmd --add-port=7946/udp --permanent
firewall-cmd --add-port=4789/udp –permanent

Và khởi động lại tường lửa trên các worker node và khởi động lại Docker như trên manager node bằng lệnh:

firewall-cmd –reload
systemctl restart docker

Vậy là bạn đã thành công trong việc sử dụng FirewallD để mở các port cần thiết cho Docker Swarm theo phương pháp này.

Lưu ý: Nếu bạn muốn kiểm tra các ứng dụng trên cụm và cần truy cập mạng bên ngoài, hãy mở các cổng cần thiết. Ví dụ: Nếu bạn muốn truy cập web và cần phải mở port 80, thì bạn phải chạy lệnh sau trên tất cả các node trong cụm (bao gồm cả máy quản lý và máy con):

firewall-cmd --add-port=80/tcp –permanent

Và đừng quên tải lại tường lửa và khởi động lại Docker sau khi bạn thực hiện mở port nhé.

Phương pháp 2 – Mở Docker Swarm Ports bằng IPTables

Để sử dụng IPTables trên Linux, trước tiên bạn phải gỡ bỏ hết các tiện ích tường lửa ở trên Linux. Để chuyển từ FirewallD sang IPTables, thì bạn phải dừng FirewallD lại trước bằng lệnh:

systemctl stop firewalld

Sau đó vô hiệu hóa FirewallD:

systemctl disable firewalld

Tiến hành cài đặt gói iptables-services, dùng để quản lý việc tải các quy tắc IPTables tự động bằng lệnh:

yum install iptables-services

Sau khi tải xong, hãy khởi động tiến trình IPTables lên và kích hoạt tính năng tự động chạy khi khởi động cho IPTables:

systemctl start iptables
systemctl enable iptables

Trước khi bạn bắt đầu thêm các quy tắc cụ thể cho Docker Swarm vào chuỗi (chain) INPUT, hãy xem qua các quy tắc mặc định tại chuỗi đó:

iptables -L INPUT --line-numbers

Bạn sẽ nhận được đầu ra là danh sách các quy tắc tương tự bên dưới đây:

Output
Chain INPUT (policy ACCEPT)
num  target      prot    opt     source                 destination         
1    ACCEPT      all        --      anywhere             anywhere             state RELATED,ESTABLISHED
2    ACCEPT      icmp    --      anywhere             anywhere            
3    ACCEPT      all        --      anywhere             anywhere            
4    ACCEPT      tcp       --      anywhere             anywhere             state NEW tcp dpt:ssh
5    REJECT       all        --      anywhere             anywhere             reject-with icmp-host-prohibited

Các quy tắc trên cung cấp khả năng bảo vệ máy chủ và từ chối tất cả lưu lượng truy cập ngoại trừ những lưu lượng đã được thiết lập và lưu lượng SSH.

quy tắc số 5 ở trên là quy tắc từ chối tất cả các lưu lượng truy cập. Để Docker Swarm hoạt động đúng cách, các quy tắc mới mà bạn thêm vào sẽ cần được đặt vào trước quy tắc này.

Đến đây bạn đã hiểu quy trình để thêm các quy tắc mà bạn cần, bạn có thể tiến hành thêm các quy tắc mới bằng cách sử dụng lệnh iptables, lưu ý là nhóm lệnh dưới đây sẽ phải chạy trên máy quản lý (Manager nodes):

iptables -I INPUT 5 -p tcp --dport 2376 -j ACCEPT
iptables -I INPUT 6 -p tcp --dport 2377 -j ACCEPT
iptables -I INPUT 7 -p tcp --dport 7946 -j ACCEPT
iptables -I INPUT 8 -p udp --dport 7946 -j ACCEPT
iptables -I INPUT 9 -p udp --dport 4789 -j ACCEPT

Các quy tắc bạn vừa chạy hiện chỉ có hiệu lực trong thời gian này và sẽ bị mất nếu hệ thống khởi động lại. Vì vậy bạn nên lưu lại các quy tắc này vào tệp và đảm bảo rằng chúng vẫn tồn tại sau khi hệ thống khởi động lại thì chạy lệnh sau:

/usr/libexec/iptables/iptables.init save 

Lệnh này sẽ giúp cho những quy tắc vừa chạy bên trên sẽ được lưu trữ trong tệp có tên iptables trong thư mục /etc/sysconfig.

Bây giờ bạn có thể xem lại danh sách các quy tắc và thấy rằng tất cả các quy tắc mới đã được chèn vào trước quy tắc từ chối toàn bộ trong INPUT chain bằng lệnh:

iptables -L --line-numbers

Bạn sẽ thấy danh sách các quy tắc như bên dưới đây:

Output
Chain INPUT (policy ACCEPT)
num  target     prot    opt    source               destination         
1    ACCEPT     all         --     anywhere             anywhere             state RELATED,ESTABLISHED
2    ACCEPT     icmp     --     anywhere             anywhere            
3    ACCEPT     all         --     anywhere             anywhere            
4    ACCEPT     tcp        --     anywhere             anywhere             state NEW tcp dpt:ssh
5    ACCEPT     tcp        --     anywhere             anywhere             tcp dpt:2376
6    ACCEPT     tcp        --     anywhere             anywhere             tcp dpt:7946
7    ACCEPT     udp       --     anywhere             anywhere             udp dpt:7946
8    ACCEPT     udp       --     anywhere             anywhere             udp dpt:4789
9    ACCEPT     tcp        --     anywhere             anywhere             tcp dpt:http
10   REJECT     all         --     anywhere             anywhere             reject-with icmp-host-prohibited

Sau khi kiểm tra hoàn tất, tiến hành khởi động lại Docker:

systemctl restart docker

Và tương tự như trên phương pháp 1, tại các máy con (worker nodes), tiến hành chạy các lệnh sau:

iptables -I INPUT 5 -p tcp --dport 2376 -j ACCEPT
iptables -I INPUT 6 -p tcp --dport 7946 -j ACCEPT
iptables -I INPUT 7 -p udp --dport 7946 -j ACCEPT
iptables -I INPUT 8 -p udp --dport 4789 -j ACCEPT

Sau đó dùng lệnh sau để lưu các quy tắc này lại:

/usr/libexec/iptables/iptables.init save

Hãy khởi động lại Docker 1 lần nữa để các thay đổi được kích hoạt:

systemctl restart docker

Đó là tất cả những gì cần thiết để mở các port cho Docker Swarm bằng IPTables. Bạn có thể tìm hiểu thêm về cách các quy tắc này hoạt động và thêm vào các quy tắc mà bạn cảm thấy phù hợp hoặc cần thiết.

Lưu ý: Tương tự như phương pháp 1, nếu bạn cần truy cập mạng bên ngoài và sử dụng port 80, bạn cần phải chèn quy tắc sau để mở port 80:

iptables -I INPUT rule-number -p tcp --dport 80 -j ACCEPT

Và đừng quên kiểm tra xem quy tắc trên mà bạn vừa chèn có nằm trước quy tắc từ chối toàn bộ hay không nhé, vì nếu không thì quy tắc đó sẽ không có hiệu lực.

Với 11 năm hoạt động Vietnix hỗ trợ cho hơn 50.000 khách hàng cá nhân và doanh nghiệp phát triển kinh doanh trên internet. Vietnix luôn chú trọng đầu tư vào hạ tầng và nhân sự chất lượng nhằm mang đến cho khách hàng một dịch vụ ổn định nhất. Tính đến thời điểm hiện tại Vietnix tự hào vì đã đạt được những con số ấn tượng như sau:

  • Hơn 50.000 khách hàng.
  • 97% khách hàng đánh giá 5* và giới thiệu dịch vụ sau khi sử dụng.
  • 89% khách hàng duy trì dịch vụ đến thời điểm hiện tại.
  • 100.000 dịch vụ được kích hoạt.
  • Thương hiệu Việt Nam xuất sắc 2022.

Nhanh tay đăng ký VPS Vietnix ngay và trải nghiệm dịch vụ ổn định, tốc độ cao, hỗ trợ nhanh chóng với nhiều ưu đãi hấp dẫn nhất.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Hotline: 1800 1093 – 07 088 44444
  • Email: sales@vietnix.com.vn

Lời kết

FirewallD và IPTables là hai ứng dụng quản lý tường lửa phổ biến nhất Linux. Bạn vừa học được cách sử dụng chúng để mở các port mạng cần thiết cho Docker Swarm. Cách sử dụng nào tùy thuộc vào sở thích của bạn, vì chúng đều mang lại kết quả giống nhau. Theo dõi blog Vietnix để biết thêm nhiều kiến thức bổ ích cùng chủ đề nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG