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:
- Cài đặt các server tạo nên cụm của bạn, bao gồm ít nhất một người quản lý bầy đàn và một nhân viên bầy đàn. Bạn có thể làm theo hướng dẫn Cách Cung cấp và Quản lý Server Docker Từ xa bằng Máy Docker trên Ubuntu 16.04 để cài đặt các server này.
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.
Các tin liên quan
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP Stack) trên Debian 82016-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