Thứ hai, 09/01/2017 | 00:00 GMT+7

Cách cấu hình firewall Linux cho Docker Swarm trên Ubuntu 16.04

Docker Swarm là một tính năng của Docker giúp dễ dàng chạy các server và containers Docker trên quy mô lớn. Docker Swarm, hoặc cụm Docker, được tạo thành từ một hoặc nhiều server được Tài liệu hóa có chức năng như các node người quản lý và bất kỳ số lượng nút công nhân nào . Việc cài đặt một hệ thống như vậy đòi hỏi phải thao tác cẩn thận với firewall Linux.

Các cổng mạng cần thiết để Docker Swarm hoạt động chính xác là:

  • Cổng TCP 2376 để giao tiếp ứng dụng client Docker an toàn. Cổng này là cần thiết để Docker Machine hoạt động. Docker Machine được sử dụng để sắp xếp các server Docker.
  • Cổng TCP 2377 . Cổng này được sử dụng để giao tiếp giữa các node của một Docker Swarm hoặc cụm. Nó chỉ cần được mở trên các node quản lý.
  • Cổng TCP và UDP 7946 để giao tiếp giữa các node (khám phá mạng containers ).
  • Cổng UDP 4789 cho lưu lượng mạng lớp phủ (mạng xâm nhập containers ).

Lưu ý: Ngoài các cổng đó, cổng 22 (cho lưu lượng SSH) và bất kỳ cổng nào khác cần thiết cho các dịch vụ cụ thể chạy trên cụm phải được mở.

Trong bài viết này, bạn sẽ học cách cấu hình firewall Linux trên Ubuntu 16.04 bằng cách sử dụng các ứng dụng quản lý firewall khác nhau có sẵn trên tất cả các bản phân phối Linux. Các ứng dụng quản lý firewall đó là FirewallD, IPTables Tools và UFW, Uncomplicated Firewall. UFW là ứng dụng firewall mặc định trên các bản phân phối Ubuntu, bao gồm cả Ubuntu 16.04. Mặc dù hướng dẫn này bao gồm ba phương pháp, nhưng mỗi phương pháp đều mang lại kết quả giống nhau, vì vậy bạn có thể chọn phương pháp mà bạn quen thuộc nhất.

Yêu cầu

Trước khi tiếp tục với bài viết này, bạn nên:

Lưu ý: Bạn sẽ nhận thấy rằng các lệnh (và tất cả các lệnh trong bài viết này) không có tiền tố là sudo . Đó là vì giả định bạn đã đăng nhập vào server bằng lệnh docker-machine ssh sau khi cấp phép bằng Docker Machine.

Phương pháp 1 - Mở cổng Docker Swarm bằng UFW

Nếu bạn vừa cài đặt server Docker của bạn , UFW đã được cài đặt. Bạn chỉ cần kích hoạt và cấu hình nó. Làm theo hướng dẫn này để tìm hiểu thêm về cách sử dụng UFW trên Ubuntu 16.04.

Thực hiện các lệnh sau trên các node sẽ hoạt động như trình quản lý Swarm:

  • ufw allow 22/tcp
  • ufw allow 2376/tcp
  • ufw allow 2377/tcp
  • ufw allow 7946/tcp
  • ufw allow 7946/udp
  • ufw allow 4789/udp

Sau đó, reload UFW:

  • ufw reload

Nếu UFW không được bật, hãy làm như vậy bằng lệnh sau:

  • ufw enable

Điều này có thể không cần thiết, nhưng bạn không bao giờ khởi động lại daemon Docker bất cứ lúc nào bạn thực hiện thay đổi và khởi động lại firewall :

systemctl restart docker 

Sau đó, trên mỗi nút sẽ hoạt động như một công nhân, hãy thực hiện các lệnh sau:

  • ufw allow 22/tcp
  • ufw allow 2376/tcp
  • ufw allow 7946/tcp
  • ufw allow 7946/udp
  • ufw allow 4789/udp

Sau đó, reload UFW:

  • ufw reload

Nếu UFW không được bật, hãy bật nó:

  • ufw enable

Sau đó khởi động lại daemon Docker:

systemctl restart docker 

Đó là tất cả những gì bạn cần làm để mở các cổng cần thiết cho Docker Swarm bằng UFW.

Phương pháp 2 - Mở cổng Docker Swarm bằng FirewallD

FirewallD là ứng dụng firewall mặc định trên Fedora, CentOS và các bản phân phối Linux khác dựa trên chúng. Nhưng FirewallD cũng có sẵn trên các bản phân phối Linux khác, bao gồm cả Ubuntu 16.04.

Nếu bạn chọn sử dụng FirewallD thay vì UFW, trước tiên hãy gỡ cài đặt UFW:

  • apt-get purge ufw

Sau đó cài đặt FirewallD:

  • apt-get install firewalld

Xác minh nó đang chạy:

  • systemctl status firewalld

Nếu nó không chạy, hãy khởi động nó:

  • systemctl start firewalld

Sau đó, kích hoạt nó để nó bắt đầu khởi động:

  • systemctl enable firewalld

Trên nút sẽ là trình quản lý Swarm, hãy sử dụng các lệnh sau để mở các cổng cần thiết:

  • firewall-cmd --add-port=22/tcp --permanent
  • 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 bạn mắc lỗi và cần xóa một mục nhập, hãy nhập:
firewall-cmd --remove-port= port-number /tcp —permanent .

Sau đó, cập nhật firewall :

  • firewall-cmd --reload

Sau đó khởi động lại Docker.

  • systemctl restart docker

Sau đó, trên mỗi nút sẽ hoạt động như một nhân viên Swarm, hãy thực hiện các lệnh sau:

  • firewall-cmd --add-port=22/tcp --permanent
  • 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

Sau đó, cập nhật firewall :

  • firewall-cmd --reload

Sau đó khởi động lại Docker.

systemctl restart docker 

Bạn đã sử dụng thành công FirewallD để mở các cổng cần thiết cho Docker Swarm.

Phương pháp 3 - Mở cổng Docker Swarm bằng IPTables

Để sử dụng IPtables trên bất kỳ bản phân phối Linux nào, trước tiên bạn sẽ phải gỡ cài đặt bất kỳ tiện ích firewall nào khác. Nếu bạn đang chuyển từ FirewallD hoặc UFW, trước tiên hãy gỡ cài đặt chúng.

Sau đó, cài đặt gói iptables-persistent gói này quản lý việc tải tự động các luật IPtables:

  • apt-get install iptables-persistent

Tiếp theo, xóa mọi luật hiện có bằng lệnh này:

  • netfilter-persistent flush

Đến đây bạn có thể thêm các luật bằng tiện ích iptables . Bộ lệnh đầu tiên này sẽ được thực thi trên các node sẽ đóng role là người quản lý Swarm.

  • iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • iptables -A INPUT -p tcp --dport 2376 -j ACCEPT
  • iptables -A INPUT -p tcp --dport 2377 -j ACCEPT
  • iptables -A INPUT -p tcp --dport 7946 -j ACCEPT
  • iptables -A INPUT -p udp --dport 7946 -j ACCEPT
  • iptables -A INPUT -p udp --dport 4789 -j ACCEPT

Sau khi bạn nhập tất cả các lệnh, hãy lưu các luật vào đĩa:

  • netfilter-persistent save

Sau đó khởi động lại Docker.

  • sudo systemctl restart docker

Trên các node sẽ hoạt động như Swarm worker, hãy thực hiện các lệnh sau:

  • iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • iptables -A INPUT -p tcp --dport 2376 -j ACCEPT
  • iptables -A INPUT -p tcp --dport 7946 -j ACCEPT
  • iptables -A INPUT -p udp --dport 7946 -j ACCEPT
  • iptables -A INPUT -p udp --dport 4789 -j ACCEPT

Lưu các luật mới này vào đĩa:

  • netfilter-persistent save

Sau đó khởi động lại Docker:

  • sudo systemctl restart docker

Đó là tất cả những gì cần thiết để mở các cổng cần thiết cho Docker Swarm bằng IPTables. Bạn có thể tìm hiểu thêm về cách các luật này hoạt động trong hướng dẫn Cách hoạt động của Tường lửa Iptables .

Nếu bạn muốn chuyển sang FirewallD hoặc UFW sau khi sử dụng phương pháp này, cách thích hợp để tiếp tục là trước tiên dừng firewall :

  • sudo netfilter-persistent stop

Sau đó đưa ra các luật :

  • sudo netfilter-persistent flush

Cuối cùng, lưu các bảng trống vào đĩa:

  • sudo netfilter-persistent save

Sau đó, bạn có thể chuyển sang UFW hoặc FirewallD.

Kết luận

FirewallD, IPTables Tools và UFW là ba ứng dụng quản lý firewall trong thế giới Linux. Bạn vừa học cách sử dụng từng cái để mở các cổng mạng cần thiết để cài đặt Docker Swarm. Bạn sử dụng phương pháp nào chỉ là vấn đề sở thích cá nhân, vì chúng đều có khả năng như nhau.


Tags:

Các tin liên quan

Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP Stack) trên Debian 8
2016-12-20
Cách thiết lập xác thực Linux tập trung với FreeIPA trên CentOS 7
2016-12-15
Cách bảo vệ server của bạn chống lại lỗ hổng Linux COW bẩn
2016-10-31
Cách cấu hình TRIM định kỳ cho bộ lưu trữ SSD trên server Linux
2016-08-25
Cách bảo vệ server của bạn chống lại lỗ hổng HTTPoxy
2016-07-18
Cách phân vùng và định dạng thiết bị lưu trữ trong Linux
2016-07-13
Cách thực hiện các tác vụ quản trị cơ bản cho thiết bị lưu trữ trong Linux
2016-07-13
Giới thiệu về thuật ngữ và khái niệm lưu trữ trong Linux
2016-07-13
Cách cấu hình BIND làm server DNS Mạng riêng trên Ubuntu 16.04
2016-05-09
cách cấu hình bind làm server lưu trữ hoặc chuyển tiếp DNS trên Ubuntu 16.04
2016-05-02