Điểm:0

http hết thời gian chờ với mạng cầu nối docker, nhưng cổng 80 được mở trong tường lửa

lá cờ cn

Tôi đang cố cài đặt mailcow-dockerized trong máy chủ của mình nhưng tôi gặp sự cố với mạng Docker. Tôi đã thử một số cách nhưng tôi nhận được rất nhiều thời gian chờ kết nối trong vùng chứa.

Để giải quyết vấn đề, tôi quyết định bỏ Mailcow lại và chỉ cài đặt Docker để cố gắng xác định nguồn gốc của các thời gian chờ kết nối này.

Vì vậy, tôi đã cài đặt một hình ảnh Ubuntu 20.04 mới từ nhà cung cấp VPS của mình và thiết lập tường lửa ufw như thế này:

Sudo ufw mặc định cho phép gửi đi
sudo ufw mặc định từ chối đến
sudo ufw giới hạn ssh
sudo ufw cho phép ssh
sudo ufw cho phép http
sudo ufw cho phép https
sudo ufw cho phép smtp
sudo ufw cho phép gửi
sudo ufw cho phép gửi
sudo ufw cho phép pop3
sudo ufw cho phép pop3s
sudo ufw cho phép imap2
sudo ufw cho phép hình ảnh
sudo ufw cho phép 4190/tcp
sudo ufw cho phép 8080/tcp
Sudo systemctl kích hoạt ufw
kích hoạt sudo ufw

Tôi đã cài đặt Docker với tập lệnh get-docker.sh từ https://get.docker.com

Sau đó, tôi đã bật IPV6 trong tệp /etc/docker/daemon.json với:

{
  "ipv6": đúng,
  "fixed-cidr-v6": "2001:db8:1::/64"
}

Khởi động lại máy chủ và tạo docker-compose.yaml:

phiên bản: '2.1'
dịch vụ:
    S2:
      hình ảnh: nginx: mới nhất
      cổng:
        - 80:80
      khởi động lại: luôn luôn
      mạng:
        n1:
          ipv4_address: 172.22.1.254
          bí danh:
            - s2
    S3:
      hình ảnh: nginx: mới nhất
      cổng:
        - 8080:80
      khởi động lại: luôn luôn
      mạng:
        n1:
          ipv4_address: 172.22.1.248
          bí danh:
            - s3
mạng:
  n1:
    tài xế: cầu
    trình điều khiển_opts:
      com.docker.network.bridge.name: n1
    enable_ipv6: đúng
    tôi:
      trình điều khiển: mặc định
      cấu hình:
        - mạng con: 172.22.1.0/24
        - mạng con: fd4d:6169:6c63:6f77::/64

Cấu hình mạng này tôi lấy từ docker-compose.yaml trong Mailcow git và thay đổi nó để thích ứng với thử nghiệm của tôi.

Và tôi chạy các container với docker-compose up -d.

Khi tôi làm một cuộn tròn máy chủ cục bộ 80 trong máy chủ lưu trữ, nó trả về nội dung index.html mặc định từ Nginx, nhưng... kết nối bị treo trong vài phút và sau đó trình bao hiển thị thông báo sau ở cuối:

curl: (28) Không thể kết nối với 80 cổng 80: Đã hết thời gian kết nối

Khi tôi chạy cuộn tròn <myservername.com> 80 trong máy tính cục bộ của tôi, nó cũng trả về nội dung index.html từ Nginx mặc định, nhưng với thông báo ở cuối:

curl: (7) Không thể kết nối với cổng 0.0.0.80 80 sau 0 ms: Không thể truy cập mạng

Bất kỳ đầu mối về lý do tại sao tôi nhận được những lỗi này?

PS: trạng thái ufw của tôi:

# ufw trạng thái dài dòng
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ừ
-- ------ ----
22/tcp CHO PHÉP Ở mọi nơi
80/tcp CHO PHÉP Ở mọi nơi
443/tcp CHO PHÉP Ở mọi nơi
25/tcp CHO PHÉP Ở mọi nơi
587/tcp CHO PHÉP Ở Mọi Nơi
465/tcp CHO PHÉP Ở Mọi Nơi
110/tcp CHO PHÉP Ở mọi nơi
995/tcp CHO PHÉP Ở mọi nơi
143/tcp CHO PHÉP Ở mọi nơi
993/tcp CHO PHÉP Ở mọi nơi
4190/tcp CHO PHÉP Ở mọi nơi
8080/tcp CHO PHÉP Ở mọi nơi
22/tcp (v6) CHO PHÉP Ở Mọi Nơi (v6)
80/tcp (v6) CHO PHÉP Ở mọi nơi (v6)
443/tcp (v6) CHO PHÉP Ở Mọi Nơi (v6)
25/tcp (v6) CHO PHÉP Ở mọi nơi (v6)
587/tcp (v6) CHO PHÉP Ở Mọi Nơi (v6)
465/tcp (v6) CHO PHÉP Ở Mọi Nơi (v6)
110/tcp (v6) CHO PHÉP Ở mọi nơi (v6)
995/tcp (v6) CHO PHÉP Ở Mọi Nơi (v6)
143/tcp (v6) CHO PHÉP Ở Mọi Nơi (v6)
993/tcp (v6) CHO PHÉP Ở Mọi Nơi (v6)
4190/tcp (v6) CHO PHÉP Ở Mọi Nơi (v6)
8080/tcp (v6) CHO PHÉP Ở mọi nơi (v6)

Và lsof kết quả:

# lsof -i -P -n | grep NGHE
sshd 967 root 3u IPv4 35459 0t0 TCP *:22 (LẮNG NGHE)
sshd 967 root 4u IPv6 35461 0t0 TCP *:22 (LẮNG NGHE)
docker-pr 1290 root 4u IPv4 39102 0t0 TCP *:80 (LẮNG NGHE)
docker-pr 1308 root 4u IPv6 38124 0t0 TCP *:80 (LẮNG NGHE)
docker-pr 1322 root 4u IPv4 38165 0t0 TCP *:8080 (LẮNG NGHE)
docker-pr 1328 root 4u IPv6 38172 0t0 TCP *:8080 (LẮNG NGHE)

Giám sát termhark khi chạy cuộn tròn máy chủ cục bộ 80 trong máy chủ:

 Không.- Thời gian - Nguồn - Đích - Giao thức - Độ dài - Thông tin -                                      
 1 0,000000 fd4d:6169:6c63 fd4d:6169:6c63 TCP 94 39946 â 80 [SYN] Seq=0 Win=64800 Len=0 MSS= 
 2 0,000047 fd4d:6169:6c63 fd4d:6169:6c63 TCP 94 80 â 39946 [SYN, ACK] Seq=0 Xác nhận=1 Thắng=64260
 3 0.000088 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 39946 â 80 [ACK] Seq=1 Ack=1 Win=64896 Len=
 4 0,000516 fd4d:6169:6c63 fd4d:6169:6c63 HTTP 159 NHẬN / HTTP/1.1
 5 0,000544 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 80 â 39946 [ACK] Seq=1 Ack=74 Win=64256 Len
 6 0,000765 fd4d:6169:6c63 fd4d:6169:6c63 TCP 324 HTTP/1.1 200 OK [Phân đoạn TCP của quá trình lắp ráp lại
 7 0,000791 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 39946 â 80 [ACK] Seq=74 Ack=239 Thắng=64768 L
 8 0,000821 fd4d:6169:6c63 fd4d:6169:6c63 HTTP 701 HTTP/1.1 200 OK (văn bản/html)
 9 0,000829 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 39946 â 80 [ACK] Seq=74 Ack=854 Win=64256 L 
 10 65.01291 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 80 â 39946 [FIN, ACK] Seq=854 Ack=74 Win=64
 11 65.05677 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 39946 â 80 [ACK] Seq=74 Ack=855 Thắng=64256 L
 12 130.8576 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 39946 â 80 [FIN, ACK] Seq=74 Ack=855 Thắng=64
 13 130.8577 fd4d:6169:6c63 fd4d:6169:6c63 TCP 74 80 â 39946 [RST] Seq=855 Win=0 Len=0
 14 131.0647 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 [Truyền lại TCP] 39946 â 80 [FIN, ACK]
 15 131.0648 fd4d:6169:6c63 fd4d:6169:6c63 TCP 74 80 â 39946 [RST] Seq=855 Win=0 Len=0        
 16 131.2727 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 [Truyền lại TCP] 39946 â 80 [FIN, ACK]
 17 131.2728 fd4d:6169:6c63 fd4d:6169:6c63 TCP 74 80 â 39946 [RST] Seq=855 Win=0 Len=0
 18 131.6888 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 [Truyền lại TCP] 39946 â 80 [FIN, ACK]  
 19 131.6888 fd4d:6169:6c63 fd4d:6169:6c63 TCP 74 80 â 39946 [RST] Seq=855 Win=0 Len=0
 20 132.5208 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 [Truyền lại TCP] 39946 â 80 [FIN, ACK]
 21 132.5209 fd4d:6169:6c63 fd4d:6169:6c63 TCP 74 80 â 39946 [RST] Seq=855 Win=0 Len=0
 22 134.1847 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 [Truyền lại TCP] 39946 â 80 [FIN, ACK]
 23 134.1850 fd4d:6169:6c63 fd4d:6169:6c63 TCP 74 80 â 39946 [RST] Seq=855 Win=0 Len=0
 24 137.5129 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 [Truyền lại TCP] 39946 â 80 [FIN, ACK]  
 25 137.5131 fd4d:6169:6c63 fd4d:6169:6c63 TCP 74 80 â 39946 [RST] Seq=855 Win=0 Len=0        

Kết quả termhark khi chạy cuộn tròn <myserver.com> 80 trong máy tính của tôi

 STT - Thời gian - Nguồn - Đích - Giao thức - Độ dài - Thông tin -                                      
 1 0.000000 170.78.36.7 172.22.1.254 TCP 66 62787 â 80 [SYN] Seq=0 Win=64240 Len=0 MSS= 
 2 0.000063 172.22.1.254 170.78.36.7 TCP 66 80 â 62787 [SYN, ACK] Seq=0 Xác nhận=1 Thắng=64240
 3 0.007119 170.78.36.7 172.22.1.254 TCP 54 62787 â 80 [ACK] Seq=1 Ack=1 Win=131840 Len
 4 0,009563 170.78.36.7 172.22.1.254 HTTP 133 NHẬN / HTTP/1.1
 5 0.009628 172.22.1.254 170.78.36.7 TCP 54 80 â 62787 [ACK] Seq=1 Ack=80 Win=64256 Len
 6 0.009884 172.22.1.254 170.78.36.7 TCP 292 HTTP/1.1 200 OK [phân đoạn TCP của quá trình lắp ráp lại
 7 0.010001 172.22.1.254 170.78.36.7 HTTP 669 HTTP/1.1 200 OK (văn bản/html)
 8 0.019889 170.78.36.7 172.22.1.254 TCP 54 62787 â 80 [ACK] Seq=80 Ack=854 Thắng=130816
 9 0.039001 170.78.36.7 172.22.1.254 TCP 54 62787 â 80 [FIN, ACK] Seq=80 Ack=854 Win=13 
 10 0.039211 172.22.1.254 170.78.36.7 TCP 54 80 â 62787 [FIN, ACK] Seq=854 Ack=81 Win=64 
 11 0.046453 170.78.36.7 172.22.1.254 TCP 54 62787 â 80 [ACK] Seq=81 Ack=855 Thắng=130816  
Điểm:0
lá cờ cn

Tôi đã thay đổi phạm vi thử nghiệm của mình sang một máy chủ VPS đơn giản có cài đặt NGinx, không có Docker và sự cố hết thời gian chờ http vẫn tiếp diễn nên... Tôi phát hiện ra rằng sự cố là do cơ sở hạ tầng của nhà cung cấp VPS địa phương của tôi...

Tôi đã thay đổi máy chủ của mình sang một nhà cung cấp khác và mọi thứ đều hoạt động tốt...

Điểm:0
lá cờ cn

Hãy cẩn thận rằng với một số Docker tường lửa sẽ thêm các quy tắc cụ thể để hoạt động bình thường. Tôi không chắc liệu điều này có liên quan đến UFW hay không, nhưng có thể.

Khi điều này xảy ra với tôi với Iptables, tôi phải thêm một số quy tắc để chuyển tiếp kết nối đến trên một cổng cụ thể sang cổng cụ thể của dịch vụ của tôi trên Mạng Docker. Vì vậy, nếu tôi nhận được kết nối trên cổng 80, nhưng dịch vụ dockerized của tôi hiển thị cổng 8080, trong một số trường hợp, mặc dù bạn chỉ định ánh xạ: "80:8080", vẫn cần thêm một số quy tắc chuyển tiếp vào tường lửa của bạn .

Một điều khác bạn có thể kiểm tra lại là liệu máy chủ lưu trữ có thể tự "gọi" hay không.

Một lệnh có thể giúp bạn khắc phục sự cố là:

cổng máy chủ curl -Ivvv

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.