Score:0

การเชื่อมต่อซ็อกเก็ต PHP ผ่านเราเตอร์ XR300 ไปยังเครื่องพิมพ์ใบเสร็จ

ธง cn

ฉันมีแอปพลิเคชัน PHP ซึ่งพยายามเปิดการเชื่อมต่อซ็อกเก็ตไปยังเครื่องพิมพ์ผ่านเราเตอร์ของฉัน

สองสามสิ่งที่ควรทราบ - ทักษะด้านเครือข่ายของฉันยังขาดอยู่ ดังนั้นฉันจึงอาจพลาดบางสิ่งที่ชัดเจน หรือสิ่งนี้อาจเป็นไปไม่ได้เลยแม้แต่น้อยในแบบที่ฉันต้องการ ดังที่กล่าวไว้ ฉันได้ทำการค้นหาเกี่ยวกับปัญหานี้หลายครั้งและดูเหมือนจะไม่พบใครก็ตามที่มีปัญหานี้ (มีผู้คนจำนวนมากที่พยายามใช้ SSH จากระยะไกล) ฉันรู้ด้วยว่าอุปกรณ์ที่ฉันพยายามเชื่อมต่อนั้นทำงานได้ตามที่ตั้งใจไว้ เพราะฉันมีแอปพลิเคชัน nodejs ขนาดเล็กที่เปิดการเชื่อมต่อไปยังอุปกรณ์บนเครือข่ายท้องถิ่นได้สำเร็จ และสุดท้าย ฉันใช้ Docker เพื่อเรียกใช้แอปพลิเคชัน PHP ในเครื่อง ซึ่งอาจเกี่ยวข้องกับปัญหาของฉัน (แม้ว่าฉันจะรู้ว่าการเชื่อมต่อกำลังเข้าถึงเราเตอร์เนื่องจากบันทึก)

รหัสนั้นง่าย:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($ซ็อกเก็ต, SOL_TCP, SO_DEBUG, 1);

$server_connect = socket_connect($socket, "เราเตอร์_public_ip", 9100);

ภายในเราเตอร์ของฉัน ฉันตั้งค่าพอร์ตที่จะส่งต่อ: ป้อนคำอธิบายรูปภาพที่นี่

เมื่อฉันพยายามเชื่อมต่อ PHP จะโยน socket_connect(): ไม่สามารถเชื่อมต่อได้ [111]: การเชื่อมต่อถูกปฏิเสธ และบันทึกของเราเตอร์แสดงว่าการเชื่อมต่อล้มเหลว

ฉันสังเกตเห็นในบันทึกของเราเตอร์ว่าพอร์ตเริ่มต้นเป็นแบบสุ่ม และลองเปลี่ยนการกำหนดค่าการส่งต่อพอร์ตของฉันเป็น: ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้ให้ผลลัพธ์เดียวกันแก่ฉันและเราเตอร์ของฉันไม่ได้ให้ข้อมูลมากมายแก่ฉัน (เกี่ยวกับสาเหตุที่การเชื่อมต่อล้มเหลว มันถูกบล็อกหรือไม่) นี่คือทั้งหมดที่แสดงในบันทึก:

ป้อนคำอธิบายรูปภาพที่นี่

แก้ไข: เมนูยูทิลิตีการกำหนดค่าเครื่องพิมพ์ดูเหมือนจะไม่กล่าวถึงสิ่งใดเกี่ยวกับไฟร์วอลล์หรือการเชื่อมต่อระยะไกล ป้อนคำอธิบายรูปภาพที่นี่

Gerard H. Pille avatar
in flag
คุณกำลังพยายามเชื่อมต่อกับ 192.168.1.150:9100 หรือไม่ คุณควรใช้ที่อยู่ IP ของเราเตอร์
EvilZebra avatar
cn flag
@GerardH.Pille - ไม่ ฉันกำลังพยายามเชื่อมต่อกับที่อยู่ IP สาธารณะของเราเตอร์ฉันเชื่อว่าเราเตอร์นำฉันไปยังที่อยู่ภายในนั้นโดยอัตโนมัติเนื่องจากการส่งต่อพอร์ตมีการตั้งค่าที่อยู่ IP ภายในหรือไม่
Gerard H. Pille avatar
in flag
ตกลง. พอร์ตเริ่มต้นที่สุ่ม (ephemere IIRC) เป็นวิธีการทำงาน ตอนนี้เครื่องพิมพ์กำลังฟัง 9100 และยอมรับการเชื่อมต่อภายนอกหรือไม่ "พอร์ตเริ่มต้น" ควรเป็น 9100 ภายนอกและภายใน
EvilZebra avatar
cn flag
เครื่องพิมพ์กำลังฟังอยู่ (อย่างที่ฉันพูดถึงในโพสต์ว่าฉันสามารถเชื่อมต่อและพิมพ์ไปยังอุปกรณ์ได้สำเร็จโดยใช้สคริปต์ nodejs ในเครื่อง) และฉันไม่คิดว่ามันแยกความแตกต่างระหว่างการเชื่อมต่อภายใน/ภายนอก
Gerard H. Pille avatar
in flag
คุณแน่ใจได้ไหม? ขณะนี้ฉันไม่เห็นว่าจะมีอะไรอีก ฉันจะตรวจสอบรหัส PHP ของคุณ
EvilZebra avatar
cn flag
ฉันมั่นใจ 100% รหัส PHP ดั้งเดิมของฉันส่งรายละเอียดไปยัง nodejs, nodejs เชื่อมต่อกับเครื่องพิมพ์ในเครื่องผ่านซ็อกเก็ตและพิมพ์รายละเอียด รหัส PHP ใหม่กำลังพยายามเชื่อมต่อกับซ็อกเก็ตโดยตรง (และจากระยะไกล) ถ้าฉันใช้รหัสเก่า - เครื่องพิมพ์ใช้งานได้ ใช้รหัสใหม่ - ข้อผิดพลาด
EvilZebra avatar
cn flag
ให้เรา [ดำเนินการสนทนาต่อในการแชท](https://chat.stackexchange.com/rooms/133066/discussion-between-evilzebra-and-gerard-h-pille)
Gerard H. Pille avatar
in flag
นั่นไม่ได้พิสูจน์ว่าเครื่องพิมพ์ยอมรับการเชื่อมต่อภายนอก PHP ที่คุณแสดงนั้นใช้ได้ ฉันสามารถเชื่อมต่อกับเครื่องพิมพ์ของฉันโดยใช้ที่อยู่ภายนอก แต่เครื่องพิมพ์ของฉันไม่มีการตั้งค่า "ไฟร์วอลล์" ใดๆ HP direct ทำงานอยู่ (ฟังจากพอร์ต 9100) หรือไม่
EvilZebra avatar
cn flag
@GerardH.Pille - ตามการสนทนาของเราในแชท ฉันได้ทดสอบแนวคิดล่าสุดของคุณและกลายเป็นเกตเวย์เริ่มต้น! จากการค้นหาโดย Google อุปกรณ์จะต้องมีการตั้งค่าเกตเวย์เริ่มต้นเพื่อให้สามารถสื่อสารระยะไกลได้ ดังนั้นฉันจึงตั้งค่าเป็น `192.168.1.1` และทุกอย่างก็เรียบร้อยดี อย่าลังเลที่จะตอบคำถามนี้เพื่อที่ฉันจะได้ยอมรับและรับกรรมของคุณ
Score:1
ธง in

จากนั้นฉันก็สงสัยเกี่ยวกับเกตเวย์ 0.0.0.0 ในการกำหนดค่าเครือข่ายของเครื่องพิมพ์

หมายความว่าเครื่องพิมพ์ของคุณสามารถเชื่อมต่อกับที่อยู่ IP ใดก็ได้โดยตรง ภายใต้สถานการณ์ปกติ ระบบจะสามารถสื่อสารโดยตรงกับระบบอื่นในซับเน็ตเท่านั้น (ดูหน้ากาก) สำหรับการเข้าถึงที่กว้างขึ้น จะต้องผ่านเกตเวย์

โพสต์คำตอบ

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