ฉันพบปัญหาในเซิร์ฟเวอร์ Arch Linux (ล่าสุด) ของฉัน ฉันสามารถทำซ้ำได้ด้วย netcat
หากฉันเริ่มฟังบนเซิร์ฟเวอร์ด้วย:
ncat -l -p 2000 -k
แล้ว
telnet (ไอพีในเครื่องของฉัน) 2000
จากเครื่องท้องถิ่น ฉันเห็นว่าการเชื่อมต่อทำงานได้ทั้งสองทาง
อย่างไรก็ตาม ถ้าฉัน telnet จากเครื่องระยะไกล การเชื่อมต่อจะถูกสร้างขึ้น แต่ไม่มีสิ่งใดที่ฉันพิมพ์บนฝั่งเซิร์ฟเวอร์ปรากฏขึ้นบนฝั่งระยะไกล ถ้าฉันพิมพ์อะไรบางอย่างที่ฝั่งรีโมต ทันทีที่กด Enter บรรทัดแรกจะปรากฏที่ฝั่งเซิร์ฟเวอร์ แต่จากนั้นการเชื่อมต่อก็หลุดไปด้วย การเชื่อมต่อถูกปิดโดยโฮสต์ต่างประเทศ
.
ฉันสามารถยืนยันได้ว่าปัญหานี้ไม่เกี่ยวข้องกับเราเตอร์ของฉัน: การส่งต่อพอร์ตเดียวกันไปยังเครื่อง Debian เครื่องอื่นทุกอย่างทำงานได้ สิ่งนี้จะป้องกัน nginx และเซิร์ฟเวอร์อื่น ๆ ไม่ให้ทำงาน
ฉันไม่มีกฎ iptables ในขณะนี้:
$ iptables --รายการ
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ส่งต่อไปข้างหน้า (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
แนท:
# ncat -l -p 2000 -k -v
Ncat: เวอร์ชัน 7.92 ( https://nmap.org/ncat )
Ncat: ฟังเมื่อ :::2000
Ncat: ฟังเมื่อ 0.0.0.0:2000
Ncat: การเชื่อมต่อจาก (ip สาธารณะระยะไกล)
Ncat: การเชื่อมต่อจาก (ip สาธารณะระยะไกล):60990
tcpdump บนเครื่องโลคัล:
# tcpdump -nnvvS พอร์ต 2000
tcpdump: กำลังฟัง eth0, ประเภทลิงก์ EN10MB (Ethernet), ความยาวสแน็ปช็อต 262144 ไบต์
13:09:46.847867 IP (tos 0x0, ttl 64, id 0, offset 0, flag [DF], proto TCP (6), ความยาว 60)
(ip ท้องถิ่นของเซิร์ฟเวอร์).2000 > (ip สาธารณะระยะไกล).60990: ค่าสถานะ [S.], cksum 0x5399 (ไม่ถูกต้อง -> 0x8744), seq 1434025023, ack 276028935, ชนะ 65160, ตัวเลือก [mss 1460,sackOK,TS val 422478433 ecr 3525397188,nop,wscale 7], ความยาว 0
13:09:46.870265 IP (tos 0x0, ttl 64, id 14989, offset 0, flags [DF], proto TCP (6), ความยาว 53)
(ip ท้องถิ่นของเซิร์ฟเวอร์).2000 > (ip สาธารณะระยะไกล).60990: ค่าสถานะ [P.], cksum 0x5392 (ไม่ถูกต้อง -> 0xa864), seq 1434025024:1434025025, ack 276028935, win 510, options [nop,nop,TS val 422478455 ecr 3525397212], ความยาว 1
13:09:49.931230 IP (tos 0x0, ttl 64, id 0, offset 0, flag [DF], proto TCP (6), ความยาว 40)
(ip ท้องถิ่นของเซิร์ฟเวอร์).2000 > (ip สาธารณะระยะไกล).60990: ค่าสถานะ [R], cksum 0x94ad (ถูกต้อง), seq 1434025024, ชนะ 0, ความยาว 0
tcpdump บนเครื่องระยะไกล:
# tcpdump -nnvvS พอร์ต 2000
tcpdump: กำลังฟัง eth0, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการดักจับ 262144 ไบต์
13:09:46.835291 IP (tos 0x10, ttl 64, id 59780, offset 0, flag [DF], proto TCP (6), ความยาว 60)
(ip สาธารณะระยะไกล).60990 > (ip สาธารณะของเซิร์ฟเวอร์).2000: ค่าสถานะ [S], cksum 0xff3a (ไม่ถูกต้อง -> 0x4c94), seq 276028934, ชนะ 64240, ตัวเลือก [mss 1460,sackOK,TS val 3525397188 ecr 0,nop ,wscale 7], ความยาว 0
13:09:46.858924 IP (tos 0x0, ttl 48, id 0, offset 0, flag [DF], proto TCP (6), ความยาว 60)
(ip สาธารณะของเซิร์ฟเวอร์).2000 > (ip สาธารณะระยะไกล).60990: ค่าสถานะ [S.], cksum 0xdbaa (ถูกต้อง), seq 1434025023, ack 276028935, ชนะ 65160, ตัวเลือก [mss 1452,sackOK,TS val 422478433 ecr 3525397188, nop,wscale 7], ความยาว 0
13:09:46.858957 IP (tos 0x10, ttl 64, id 59781, offset 0, flag [DF], proto TCP (6), ความยาว 52)
(ip สาธารณะระยะไกล).60990 > (ip สาธารณะของเซิร์ฟเวอร์).2000: ค่าสถานะ [.], cksum 0xff32 (ไม่ถูกต้อง -> 0x06ea), seq 276028935, ack 1434025024, ชนะ 502, ตัวเลือก [nop,nop,TS val 3525397212 ecr 422478433 ], ความยาว 0
13:09:49.920045 IP (tos 0x10, ttl 64, id 59782, offset 0, flag [DF], proto TCP (6), ความยาว 58)
(ip สาธารณะระยะไกล).60990 > (ip สาธารณะของเซิร์ฟเวอร์).2000: ค่าสถานะ [P.], cksum 0xff38 (ไม่ถูกต้อง -> 0x0603), seq 276028935:276028941, ack 1434025024, ชนะ 502, ตัวเลือก [nop,nop,TS val 3525400273 ecr 422478433], ความยาว 6
13:09:49.941752 IP (tos 0x0, ttl 48, id 0, offset 0, flag [DF], proto TCP (6), ความยาว 40)
(ip สาธารณะของเซิร์ฟเวอร์).2000 > (ip สาธารณะระยะไกล).60990: ค่าสถานะ [R], cksum 0xe90b (ถูกต้อง), seq 1434025024, ชนะ 0, ความยาว 0