ขอขอบคุณล่วงหน้าสำหรับการดูสิ่งนี้... ฉันมั่นใจว่าวิธีแก้ปัญหานั้นง่าย - ฉันไม่รู้ว่ามันคืออะไร
วิ่ง nc -l -u 9090
และ nc -uv 82.165.109.4 9090
คำสั่งบนเซิร์ฟเวอร์เดียวกัน สร้าง "การเชื่อมต่อ" ประเภท netcat และได้รับข้อความตามที่คาดไว้
มีแอปพลิเคชันนักเทียบท่าที่ทำงานอยู่ซึ่งรับแพ็กเก็ตด้วย ดังนั้นดูเหมือนว่าสภาพแวดล้อมภายในจะถูกตั้งค่าเรียบร้อยดี
echo -p "สวัสดี" >/dev/udp/82.165.109.4/9090
ได้รับจากทั้งสอง tcpdump
และแอพพลิเคชั่น
ฉันกำลังตรวจสอบการรับแพ็กเก็ตด้วย:
tcpdump -i พอร์ต udp -AXn ใด ๆ 9090
- ถ้าฉันส่งแพ็กเก็ต UDP จากนอกกล่องไปไม่ถึง
tcpdump
- ฉันไม่สามารถ ping เซิร์ฟเวอร์จากภายนอกได้ แต่สามารถ ping ภายในได้
- พอร์ตดูเหมือนจะเปิดและฟัง
- พอร์ต ssh, http และ https ทำงานได้ตามปกติ
netstat -ltu
การเชื่อมต่ออินเทอร์เน็ตที่ใช้งานอยู่ (เฉพาะเซิร์ฟเวอร์)
Proto Recv-Q Send-Q ที่อยู่ในท้องถิ่น สถานะที่อยู่ต่างประเทศ
tcp 0 0 0.0.0.0:5984 0.0.0.0:* ฟัง
tcp 0 0 0.0.0.0:9070 0.0.0.0:* ฟัง
tcp 0 0 0.0.0.0:http 0.0.0.0:* ฟัง
tcp 0 0 localhost:domain 0.0.0.0:* ฟัง
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* ฟัง
tcp 0 0 0.0.0.0:https 0.0.0.0:* ฟัง
tcp6 0 0 [::]:5984 [::]:* ฟัง
tcp6 0 0 [::]:9070 [::]:* ฟัง
tcp6 0 0 [::]:http [::]:* ฟัง
tcp6 0 0 [::]:ssh [::]:* ฟัง
tcp6 0 0 [::]:https [::]:* ฟัง
udp 0 0 localhost:โดเมน 0.0.0.0:*
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp 0 0 0.0.0.0:9090 0.0.0.0:*
udp6 0 0 [::]:9090 [::]:*
ทุกสิ่งที่ฉันได้อ่านชี้ไปที่ iptables
และไฟร์วอลล์ ฉันจึงปิดการใช้งาน ยูเอฟดับบลิว
iptables -L
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ส่งต่อไปข้างหน้า (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
DOCKER-USER ทั้งหมด - ทุกที่ ทุกแห่ง
DOCKER-ISOLATION-STAGE-1 ทั้งหมด -- ทุกที่ ทุกแห่ง
ยอมรับทั้งหมด -- ทุกที่ ทุกแห่ง ctstate ที่เกี่ยวข้อง ก่อตั้ง
DOCKER ทั้งหมด - ทุกที่ ทุกแห่ง
ยอมรับทั้งหมด - ทุกที่ทุกที่
ยอมรับทั้งหมด - ทุกที่ทุกที่
ยอมรับทั้งหมด -- ทุกที่ ทุกแห่ง ctstate ที่เกี่ยวข้อง ก่อตั้ง
DOCKER ทั้งหมด - ทุกที่ ทุกแห่ง
ยอมรับทั้งหมด - ทุกที่ทุกที่
ยอมรับทั้งหมด - ทุกที่ทุกที่
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain DOCKER (ข้อมูลอ้างอิง 2 รายการ)
เป้าหมาย prot เลือกปลายทางต้นทาง
ยอมรับ udp -- ทุกที่ 172.18.0.3 udp dpt:9090
ยอมรับ tcp - ที่ใดก็ได้ 172.18.0.6 tcp dpt:9080
ยอมรับ tcp - ทุกที่ 172.18.0.2 tcp dpt:https
ยอมรับ tcp - ที่ใดก็ได้ 172.18.0.5 tcp dpt:5984
ยอมรับ tcp - ที่ใดก็ได้ 172.18.0.2 tcp dpt:http
Chain DOCKER-ISOLATION-STAGE-1 (อ้างอิง 1 รายการ)
เป้าหมาย prot เลือกปลายทางต้นทาง
DOCKER-ISOLATION-STAGE-2 ทั้งหมด -- ทุกที่ ทุกแห่ง
DOCKER-ISOLATION-STAGE-2 ทั้งหมด -- ทุกที่ ทุกแห่ง
คืนทั้งหมด - ทุกที่ทุกที่
Chain DOCKER-ISOLATION-STAGE-2 (ข้อมูลอ้างอิง 2 รายการ)
เป้าหมาย prot เลือกปลายทางต้นทาง
วางทั้งหมด - ทุกที่ทุกที่
วางทั้งหมด - ทุกที่ทุกที่
คืนทั้งหมด - ทุกที่ทุกที่
Chain DOCKER-USER (อ้างอิง 1 รายการ)
เป้าหมาย prot เลือกปลายทางต้นทาง
คืนทั้งหมด - ทุกที่ทุกที่
การตั้งค่า NAT มีดังนี้:
iptables -t แนท -L -v -n
CHAIN PREROUTING (นโยบายยอมรับ 235 แพ็คเก็ต, 28704 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
163 9840 DOCKER ทั้งหมด -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE ตรงกับ dst-type LOCAL
Chain INPUT (นโยบายยอมรับ 205 แพ็คเก็ต, 26904 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
Chain OUTPUT (นโยบายยอมรับ 72 แพ็คเก็ต, 5351 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
2 121 DOCKER ทั้งหมด -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE ตรงกับ dst-type LOCAL
Chain POSTROUTING (นโยบายยอมรับ 108 แพ็กเก็ต, 7416 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
4 240 สวมหน้ากากทั้งหมด -- * !br-a371a521a463 172.18.0.0/16 0.0.0.0/0
0 0 สวมหน้ากากทั้งหมด -- * !docker0 172.17.0.0/16 0.0.0.0/0
0 0 มาสเคอเรด udp -- * * 172.18.0.3 172.18.0.3 udp dpt:9090
0 0 สวมหน้ากาก tcp -- * * 172.18.0.6 172.18.0.6 tcp dpt:9080
0 0 สวมหน้ากาก tcp -- * * 172.18.0.2 172.18.0.2 tcp dpt:443
0 0 สวมหน้ากาก tcp -- * * 172.18.0.5 172.18.0.5 tcp dpt:5984
0 0 สวมหน้ากาก tcp -- * * 172.18.0.2 172.18.0.2 tcp dpt:80
Chain DOCKER (ข้อมูลอ้างอิง 2 รายการ)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
2 120 คืนทั้งหมด -- br-a371a521a463 * 0.0.0.0/0 0.0.0.0/0
0 0 ส่งคืนทั้งหมด -- นักเทียบท่า0 * 0.0.0.0/0 0.0.0.0/0
1 37 DNAT udp -- !br-a371a521a463 * 0.0.0.0/0 0.0.0.0/0 udp dpt:9090 ถึง:172.18.0.3:9090
0 0 DNAT tcp -- !br-a371a521a463 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9070 ถึง:172.18.0.6:9080
4 220 DNAT tcp -- !br-a371a521a463 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 ถึง:172.18.0.2:443
0 0 DNAT tcp -- !br-a371a521a463 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5984 ถึง:172.18.0.5:5984
5 248 DNAT tcp -- !br-a371a521a463 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ถึง:172.18.0.2:80
หากเปิดใช้งาน UFW สถานะจะเป็น:
รายละเอียดสถานะ ufw
สถานะ: ใช้งานอยู่
การบันทึก: เปิด (สูง)
ค่าเริ่มต้น: ปฏิเสธ (ขาเข้า) อนุญาต (ขาออก) ปฏิเสธ (กำหนดเส้นทาง)
โปรไฟล์ใหม่: ข้าม
ถึงการดำเนินการจาก
-- ------ ----
22/tcp อนุญาตในทุกที่
80/tcp อนุญาตในทุกที่
443/tcp อนุญาตในทุกที่
993 อนุญาตให้เข้าได้ทุกที่
995 อนุญาตในทุกที่
9090/udp อนุญาตในทุกที่
520/udp อนุญาตในทุกที่
22/tcp (v6) อนุญาตในทุกที่ (v6)
80/tcp (v6) อนุญาตในทุกที่ (v6)
443/tcp (v6) อนุญาตในทุกที่ (v6)
993 (v6) อนุญาตให้เข้าได้ทุกที่ (v6)
995 (v6) อนุญาตให้เข้าได้ทุกที่ (v6)
9090/udp (v6) อนุญาตในทุกที่ (v6)
520/udp (v6) อนุญาตในทุกที่ (v6)
9090/udp อนุญาตให้ FWD ได้ทุกที่
9090/udp (v6) อนุญาต FWD ได้ทุกที่ (v6)
ฉันพยายามมามากแล้ว แต่บางสิ่งที่สำคัญกว่านั้นคือ
- การล้าง iptables ไม่มีผล
- ตรวจสอบ UDP ที่ส่งผ่าน tcpdump จากกล่องภายนอก (ซึ่งถูกบันทึก)
- ตรวจสอบพอร์ตทั้งหมดและการบันทึกอย่างละเอียด (ไม่มีการเปลี่ยนแปลง)
- กำลังเปิด ip_forwarding
sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
หมายเหตุอื่นๆ:
- ใช้เซิร์ฟเวอร์ 'คลาวด์' ดังนั้นจึงเป็นเครื่องเสมือน
- ฉันไม่พบการเข้าสู่ระบบ ufw ใดๆ
/อื่นๆ/ufw/