Tôi có hai máy chủ chuyên dụng: "web" (YYY.YYY.YYY.YYY) và "màn hình" (XXX.XXX.XXX.XXX).
Cả hai đều nằm trong cùng một mạng của một máy chủ lưu trữ hàng loạt (hetzner).
Bây giờ trên "web", tôi có 3 điểm cuối số liệu prometheus đang chạy: docker-engine (9323) trên máy chủ kim loại trần và neo4j (2004), telegraf (9273) làm bộ chứa docker.
Cả hai vùng chứa docker đều ánh xạ chính xác các cổng đầu ra của chúng tới Máy chủ, vì vậy các lệnh gọi sau được thực hiện trên "web" đều hoạt động:
linh miêu http://YYY.YYY.YYY.YYY:9323/metrics => OK
linh miêu http://YYY.YYY.YYY.YYY:9273/metrics => OK
linh miêu http://YYY.YYY.YYY.YYY:2004/metrics => OK
Nhưng việc gọi các điểm cuối đó từ máy chủ "màn hình" chỉ hoạt động đối với docker-engine dịch vụ kim loại gấu (9323)
linh miêu http://YYY.YYY.YYY.YYY:9323/metrics => OK
linh miêu http://YYY.YYY.YYY.YYY:9273/metrics => hết thời gian chờ
linh miêu http://YYY.YYY.YYY.YYY:2004/metrics => hết giờ
Trạng thái UFW tiết lộ như sau
Trạng thái: Đang hoạt động
Ghi nhật ký: bật (thấp)
Mặc định: từ chối (đến), cho phép (đi), từ chối (được định tuyến)
Hồ sơ mới: bỏ qua
Đến hành động từ
-- ------ ----
[…]
9323/tcp CHO PHÉP TRONG XXX.XXX.XXX.XXX
9273/tcp CHO PHÉP TRONG XXX.XXX.XXX.XXX
2004/tcp CHO PHÉP TRONG XXX.XXX.XXX.XXX
[…]
Không có quy tắc nào khác với các IP đó và không có quy tắc chung nào áp dụng cho mạng con, giao diện, v.v. Tất cả các quy tắc khác dành cho các cổng kín đáo, chẳng hạn như 22, 80, 443, v.v.
Điều kỳ lạ là nó đã hoạt động chỉ vài giờ trước đó. Trong khi chờ đợi, tôi đã thử nghiệm một chút với điều này ở đây https://medium.com/@pitapun_44686/what-is-the-best-practice-of-docker-ufw-under-ubuntu-69e11c826b31 và nối khối sau vào cuối /etc/ufw/after.rules
*lọc
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16
-A DOCKER-USER -j ufw-user-forward
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12
-A DOCKER-USER -j RETURN
LÀM
Bây giờ tôi đã nhận xét nó và khởi động lại ufw. Các cổng 9273 và 2004 vẫn không truy cập được, vì vậy đây không phải là lý do.
Tôi đã định cấu hình mức nhật ký ufw thành cao, nhưng tôi không thể thấy bất kỳ kết nối nào attepmtps hoặc các gói bị rớt từ máy chủ XXX.XXX.XXX.XXX.
Cố gắng telnet vào một cổng đang hoạt động (telnet YYY.YYY.YYY.YYY 9323) Tôi có thể thấy giao tiếp trong nhật ký ufw, nhưng không phải cho hai cổng còn lại.
[KIỂM TOÁN UFW] SRC=XXX.XXX.XXX.XXX DST=YYY.YYY.YYY.YYY DPT=9323 =>
[KIỂM TOÁN UFW] SRC=YYY.YYY.YYY.YYY DST=XXX.XXX.XXX.XXX SPT=9323
Tôi đã cung cấp ufw bằng cách sử dụng mô-đun "ufw" ansible.
Những lý do khác có thể có? Điều gì đang xảy ra? :-)
Có thể mạng máy chủ áp đặt một số loại bộ lọc giữa các máy chủ đó do hoạt động "đáng ngờ" (giao tiếp thường xuyên)?
Nó cũng xảy ra rằng tôi đã chạy một số bài kiểm tra quá mức cho gun.io từ XXX.XXX.XXX.XXX đến cổng 80/443 trên YYY.YYY.YYY.YYY hôm nay, nhưng giả thuyết này không giải thích được tại sao chỉ có hai cổng đó không hoạt động nữa không.
Và thử nghiệm cuối cùng, tắt ufw trên YYY.YYY.YYY.YYY, cũng không giúp được gì. Cổng 9273 và 2004 không truy cập được, 9323 thì được.
Đây là đầu ra từ iptables -L -v -n
https://Pastebin.com/HVeJGXb9