ฉันกำลังพัฒนาแอปพลิเคชัน TCP ผู้ดูแลระบบของฉันบล็อกการฟัง TCP บนพีซี Windows ของฉัน ดังนั้น ฉันจึงใช้ Ubuntu 20.04 VM บนกล่องเสมือนสำหรับการพัฒนาและทดสอบแอปพลิเคชันเซิร์ฟเวอร์ TCP ของฉัน
ฉันได้ทดสอบเซิร์ฟเวอร์แอปพลิเคชัน TCP กับไคลเอนต์จาก localhostอย่างไรก็ตาม ฉันจำเป็นต้องทดสอบจากระบบไคลเอนต์จริง ในกรณีของฉัน มันเป็นระบบฝังตัวเหมือนโทรศัพท์ Android
ก่อนทดสอบแอปพลิเคชัน TCP จริงของฉัน ฉันพยายามทดสอบการตั้งค่าด้วยเครื่องมือดังต่อไปนี้:
#On ubuntu VM เพื่อเรียกใช้เซิร์ฟเวอร์ TCP ตัวอย่าง
ncat -l 9090 -k -c 'xargs -n1 เสียงสะท้อน'
#บนโทรศัพท์ Android ฉันใช้แอปจาก play store ชื่อ TCP/UDP TEST TOOL
___________________________________
| _______________________ |
| | TCP_เซิร์ฟเวอร์:9090 | |
| | อูบุนตู VM | | ________________
| | (เชิงสะพาน) | (ไอเฟซ)| <สายเคเบิลอีเธอร์เน็ต> | |
| | IP: 192.168.66.11/24 | | |-> <ตัวแปลงอีเธอร์เน็ตเป็น USB-C> | มือถือ Android |
| |_______________________| | |________________|
| | IP: 192.168.66.12/24
| ชนะ 10 เครื่องคอมพิวเตอร์(IP: 192.168.66.50) | GW: 192.168.66.11
|___________________________________|
ปัญหาคือโทรศัพท์ Android ไม่สามารถ ping และเชื่อมต่อกับเซิร์ฟเวอร์ TCP บน Ubuntu VM ได้ แต่สิ่งที่ตรงกันข้ามใช้งานได้ Ubuntu VM สามารถ ping โทรศัพท์ Android และสามารถเชื่อมต่อกับบริการ TCP ตัวอย่างบนโทรศัพท์ Android
ฉันเชื่อมต่อ Ubuntu VM (อินเทอร์เฟซ wifi แบบบริดจ์) และโทรศัพท์ Android กับเราเตอร์ Wifi; การสื่อสารระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ TCP ทำงานได้ดีทุกที่ที่ฉันเรียกใช้ไคลเอนต์และเซิร์ฟเวอร์
ฉันได้ตรวจสอบกฎไฟร์วอลล์บน Ubuntu VM แล้ว กฎเหล่านั้นว่างเปล่าด้วยนโยบาย ACCEPT สำหรับเชนอินพุต ส่งต่อ และเอาท์พุต
จาก Win 10 Host OS ฉันสามารถ ping IP ของทั้ง VM (192.168.66.11) และโทรศัพท์ Android (192.168.66.12) ได้!