Score:0

หมดเวลา http กับเครือข่ายนักเทียบท่า แต่พอร์ต 80 ถูกเปิดในไฟร์วอลล์

ธง cn

ฉันกำลังพยายามติดตั้ง mailcow-dockerized ในเซิร์ฟเวอร์ของฉัน แต่ฉันมีปัญหากับเครือข่าย Docker ฉันลองหลายวิธีแล้ว แต่พบว่าการเชื่อมต่อหมดเวลาจำนวนมากในคอนเทนเนอร์

เพื่อแยกย่อยปัญหา ฉันตัดสินใจทิ้ง Mailcow ไว้ข้างหลังและติดตั้งเพียง Docker เพื่อพยายามระบุแหล่งที่มาของการหมดเวลาการเชื่อมต่อเหล่านี้

ดังนั้นฉันได้ติดตั้งอิมเมจ Ubuntu 20.04 ใหม่จากผู้จำหน่าย VPS ของฉันและตั้งค่าไฟร์วอลล์ ufw ดังนี้:

ค่าเริ่มต้น sudo ufw อนุญาตให้ส่งออก
sudo ufw เริ่มต้นปฏิเสธการรับเข้า
sudo ufw จำกัด ssh
sudo ufw อนุญาต ssh
sudo ufw อนุญาต http
sudo ufw อนุญาต https
sudo ufw อนุญาต smtp
sudo ufw อนุญาตให้ส่ง
sudo ufw อนุญาตให้ส่ง
sudo ufw อนุญาต pop3
sudo ufw อนุญาต pop3s
sudo ufw อนุญาต imap2
sudo ufw อนุญาต imaps
sudo ufw อนุญาต 4190/tcp
sudo ufw อนุญาต 8080/tcp
sudo systemctl เปิดใช้งาน ufw
sudo ufw เปิดใช้งาน

ฉันติดตั้ง Docker ด้วยสคริปต์ get-docker.sh จาก https://get.docker.com

จากนั้นฉันเปิดใช้งาน IPV6 ในไฟล์ /etc/docker/daemon.json ด้วย:

{
  "ipv6": จริง
  "fixed-cidr-v6": "2001:db8:1::/64"
}

รีบูตเซิร์ฟเวอร์และสร้าง docker-compose.yaml:

รุ่น: '2.1'
บริการ:
    S2:
      ภาพ: nginx: ล่าสุด
      พอร์ต:
        - 80:80
      รีสตาร์ท: เสมอ
      เครือข่าย:
        n1:
          ipv4_address: 172.22.1.254
          นามแฝง:
            - s2
    S3:
      ภาพ: nginx: ล่าสุด
      พอร์ต:
        - 8080:80
      รีสตาร์ท: เสมอ
      เครือข่าย:
        n1:
          ipv4_address: 172.22.1.248
          นามแฝง:
            - s3
เครือข่าย:
  n1:
    คนขับ: สะพาน
    driver_opts:
      com.docker.network.bridge.name: n1
    enable_ipv6: จริง
    ไอแพม:
      ไดรเวอร์: ค่าเริ่มต้น
      การกำหนดค่า:
        - เครือข่ายย่อย: 172.22.1.0/24
        - เครือข่ายย่อย: fd4d:6169:6c63:6f77::/64

การกำหนดค่าเครือข่ายนี้ฉันได้รับจาก docker-compose.yaml ใน Mailcow git และเปลี่ยนเพื่อปรับให้เข้ากับการทดสอบของฉัน

และฉันเรียกใช้คอนเทนเนอร์ด้วย นักเทียบท่าเขียนขึ้น -d.

เมื่อฉันทำ ขด localhost 80 ในเซิร์ฟเวอร์โฮสต์ จะส่งคืนเนื้อหา index.html เริ่มต้นจาก Nginxแต่... การเชื่อมต่อถูกระงับเป็นเวลาหลายนาทีจากนั้นเชลล์จะแสดงข้อความต่อไปนี้ในตอนท้าย:

ขด: (28) ไม่สามารถเชื่อมต่อกับพอร์ต 80 80: การเชื่อมต่อหมดเวลา

เมื่อฉันวิ่ง ขด <myservername.com> 80 ในเครื่องคอมพิวเตอร์ของฉัน มันจะส่งคืนเนื้อหา index.html จากค่าเริ่มต้นของ Nginx ด้วย แต่มีข้อความต่อท้าย:

curl: (7) ล้มเหลวในการเชื่อมต่อกับพอร์ต 0.0.0.80 80 หลังจาก 0 ms: ไม่สามารถเข้าถึงเครือข่ายได้

เงื่อนงำใด ๆ เกี่ยวกับสาเหตุที่ฉันได้รับข้อผิดพลาดเหล่านี้

PS: สถานะ ufw ของฉัน:

# ufw สถานะโดยละเอียด
สถานะ: ใช้งานอยู่
การบันทึก: เปิด (ต่ำ)
ค่าเริ่มต้น: ปฏิเสธ (ขาเข้า) อนุญาต (ขาออก) ปฏิเสธ (กำหนดเส้นทาง)
โปรไฟล์ใหม่: ข้าม

ถึงการดำเนินการจาก
-- ------ ----
22/tcp อนุญาตในทุกที่
80/tcp อนุญาตในทุกที่
443/tcp อนุญาตในทุกที่
25/tcp อนุญาตในทุกที่
587/tcp อนุญาตในทุกที่
465/tcp อนุญาตในทุกที่
110/tcp อนุญาตในทุกที่
995/tcp อนุญาตในทุกที่
143/tcp อนุญาตในทุกที่
993/tcp อนุญาตในทุกที่
4190/tcp อนุญาตในทุกที่
8080/tcp อนุญาตในทุกที่
22/tcp (v6) อนุญาตในทุกที่ (v6)
80/tcp (v6) อนุญาตในทุกที่ (v6)
443/tcp (v6) อนุญาตในทุกที่ (v6)
25/tcp (v6) อนุญาตในทุกที่ (v6)
587/tcp (v6) อนุญาตในทุกที่ (v6)
465/tcp (v6) อนุญาตในทุกที่ (v6)
110/tcp (v6) อนุญาตในทุกที่ (v6)
995/tcp (v6) อนุญาตในทุกที่ (v6)
143/tcp (v6) อนุญาตในทุกที่ (v6)
993/tcp (v6) อนุญาตในทุกที่ (v6)
4190/tcp (v6) อนุญาตในทุกที่ (v6)
8080/tcp (v6) อนุญาตในทุกที่ (v6)

และผลลัพธ์ lsof:

# lsof -i -P -n | ฟัง
sshd 967 รูท 3u IPv4 35459 0t0 TCP *:22 (ฟัง)
sshd 967 รูท 4u IPv6 35461 0t0 TCP *:22 (ฟัง)
นักเทียบท่า-pr 1290 รูท 4u IPv4 39102 0t0 TCP *:80 (ฟัง)
นักเทียบท่า-pr 1308 รูท 4u IPv6 38124 0t0 TCP *:80 (ฟัง)
นักเทียบท่า-pr 1322 รูท 4u IPv4 38165 0t0 TCP *:8080 (ฟัง)
นักเทียบท่า-pr 1328 รูท 4u IPv6 38172 0t0 TCP *:8080 (ฟัง)

การตรวจสอบ Termshark เมื่อทำงาน ขด localhost 80 ในโฮสต์:

 เลขที่- เวลา - ต้นทาง - ปลายทาง - โปรโตคอล - ความยาว - ข้อมูล -                                      
 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 Ack=1 Win=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 รับ / 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 ตกลง [ส่วน TCP ของการประกอบใหม่
 7 0.000791 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 39946 â 80 [ACK] Seq=74 Ack=239 Win=64768 L
 8 0.000821 fd4d:6169:6c63 fd4d:6169:6c63 HTTP 701 HTTP/1.1 200 ตกลง (ข้อความ/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 Win=64256 L
 12 130.8576 fd4d:6169:6c63 fd4d:6169:6c63 TCP 86 39946 â 80 [FIN, ACK] Seq=74 Ack=855 Win=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 [TCP Retransmission] 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 [TCP Retransmission] 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 [TCP Retransmission] 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 [TCP Retransmission] 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 [TCP Retransmission] 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 [TCP Retransmission] 39946 â 80 [FIN, ACK]  
 25 137.5131 fd4d:6169:6c63 fd4d:6169:6c63 TCP 74 80 â 39946 [RST] Seq=855 Win=0 Len=0        

ผลลัพธ์ Termshark เมื่อทำงาน ขด <myserver.com> 80 ในคอมพิวเตอร์ของฉัน

 ครั้งที่ - เวลา - ที่มา - ปลายทาง - โปรโตคอล - ความยาว - ข้อมูล -                                      
 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 Ack=1 Win=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 GET / 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 ตกลง [ส่วน TCP ของการประกอบใหม่
 7 0.010001 172.22.1.254 170.78.36.7 HTTP 669 HTTP/1.1 200 ตกลง (ข้อความ/html)
 8 0.019889 170.78.36.7 172.22.1.254 TCP 54 62787 â 80 [ACK] Seq=80 Ack=854 Win=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 Win=130816  
Score:0
ธง cn

ฉันเปลี่ยนขอบเขตการทดสอบเป็นเซิร์ฟเวอร์ VPS อย่างง่ายด้วยการติดตั้ง NGinx โดยไม่มี Docker และปัญหาการหมดเวลาของ http ยังคงอยู่ ดังนั้น... ฉันพบว่าปัญหาเกิดจากโครงสร้างพื้นฐานของผู้ให้บริการ VPS ในพื้นที่ของฉัน...

ฉันเปลี่ยนเซิร์ฟเวอร์เป็นผู้ให้บริการรายอื่นและทุกอย่างทำงานได้ดี...

Score:0
ธง cn

ระวังด้วยไฟร์วอลล์ Docker บางตัวจะเพิ่มกฎเฉพาะเพื่อให้ทำงานได้อย่างถูกต้อง ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องกับ UFW ด้วยหรือไม่ แต่อาจเป็นได้

เมื่อสิ่งนี้เกิดขึ้นกับฉันด้วย Iptables ฉันต้องเพิ่มกฎบางอย่างเพื่อส่งต่อการเชื่อมต่อขาเข้าบนพอร์ตเฉพาะไปยังพอร์ตเฉพาะของบริการของฉันบน Docker Network ดังนั้น หากฉันได้รับการเชื่อมต่อที่พอร์ต 80 แต่บริการ dockerized ของฉันเปิดเผยพอร์ต 8080 ในบางกรณี แม้ว่าคุณจะระบุการแมป: "80:8080" ก็ยังจำเป็นต้องเพิ่มกฎการส่งต่อไปยังไฟร์วอลล์ของคุณ .

อีกสิ่งหนึ่งที่คุณสามารถตรวจสอบอีกครั้งคือเซิร์ฟเวอร์โฮสต์สามารถ "เรียก" ตัวเองได้หรือไม่

คำสั่งหนึ่งที่สามารถช่วยคุณแก้ไขปัญหาคือ:

curl - พอร์ตโฮสต์ Ivvv

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา