Puncte:0

Conexiune socket PHP prin router XR300 la o imprimantă de chitanțe

drapel cn

Am o aplicație PHP care încearcă să deschidă o conexiune socket la o imprimantă prin routerul meu.

Câteva lucruri de remarcat - abilitățile mele de rețea lipsesc, așa că s-ar putea să-mi lipsească ceva evident sau acest lucru s-ar putea să nu fie posibil chiar așa cum vreau să fie. Acestea fiind spuse, am căutat o mulțime de probleme și nu pot găsi pe nimeni cu această problemă exactă (doar o mulțime de oameni care încearcă să facă SSH de la distanță). De asemenea, știu că dispozitivul la care încerc să mă conectez funcționează conform intenției, deoarece am o aplicație nodejs mică care deschide cu succes o conexiune la el în rețeaua locală. Și, în sfârșit, folosesc Docker pentru a rula aplicația PHP la nivel local, ceea ce poate fi relevant pentru problema mea (deși știu că conexiunea ajunge la router din cauza jurnalelor).

Codul este simplu:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_TCP, SO_DEBUG, 1);

$server_connect = socket_connect($socket, "router_public_ip", 9100);

În routerul meu am configurat acel port pentru a fi redirecționat: introduceți descrierea imaginii aici

Când încerc să conectez PHP aruncă socket_connect(): imposibil de conectat [111]: Conexiune refuzată iar jurnalele routerului arată că o conexiune a eșuat.

Am observat în jurnalele routerului că portul de pornire este aleatoriu și am încercat să-mi schimb configurația de redirecționare a portului la: introduceți descrierea imaginii aici

Acest lucru îmi dă același rezultat și routerul meu nu îmi oferă prea multe informații pentru a continua (de ce a eșuat conexiunea, a fost blocată?). Acesta este tot ce este afișat în jurnalele:

introduceți descrierea imaginii aici

Editați | ×: Meniul utilitarului de configurare a imprimantei nu pare să menționeze nimic despre un firewall sau conexiuni la distanță. introduceți descrierea imaginii aici

Gerard H. Pille avatar
drapel in
Încercați să vă conectați la 192.168.1.150:9100? Ar trebui să utilizați adresa IP a routerului.
EvilZebra avatar
drapel cn
@GerardH.Pille - nu, încerc să mă conectez la adresa IP publică a routerului.Cred că routerul mă direcționează automat către acea adresă locală, deoarece port forward-ul are o adresă IP internă setată?
Gerard H. Pille avatar
drapel in
BINE. Portul de pornire fiind aleatoriu (efemer IIRC) este modul în care funcționează. Acum, imprimanta ascultă pe 9100 și acceptă conexiuni externe? „Portul de pornire” ar trebui să fie 9100 extern și intern.
EvilZebra avatar
drapel cn
Imprimanta ascultă (după cum menționez în postarea mea, mă pot conecta cu succes și imprima la dispozitiv folosind un script local nodejs) și nu cred că face diferența între conexiunile interne/externe.
Gerard H. Pille avatar
drapel in
Te poți asigura? Momentan nu vad ce altceva ar putea fi. Îți voi verifica codul PHP.
EvilZebra avatar
drapel cn
Sunt 100% sigur. Codul meu PHP original trimite detalii la nodejs, nodejs se conectează la imprimantă local prin socket și tipărește detalii. Noul cod PHP încearcă să se conecteze la socket direct (și de la distanță). Dacă folosesc cod vechi - imprimanta funcționează, folosește cod nou - erori.
EvilZebra avatar
drapel cn
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/133066/discussion-between-evilzebra-and-gerard-h-pille).
Gerard H. Pille avatar
drapel in
Asta nu dovedește că imprimanta acceptă conexiuni externe. PHP-ul pe care îl afișați este OK, mă pot conecta la imprimanta mea folosind adresa externă, dar imprimanta mea nu are setări „firewall”. HP direct este activ (ascultă pe portul 9100) sau nu.
EvilZebra avatar
drapel cn
@GerardH.Pille - conform discuției noastre din chat, am testat ultimele tale idei și s-a dovedit a fi Gateway-ul implicit! Conform unei căutări Google, dispozitivul trebuie să aibă setat gateway-ul implicit pentru a putea comunica de la distanță. Așa că l-am setat la `192.168.1.1` și totul este bine. Simțiți-vă liber să dați un răspuns la această întrebare, astfel încât să o pot accepta și să vă iau karma.
Puncte:1
drapel in

Apoi mă întreb despre gateway-ul 0.0.0.0 din configurația de rețea a imprimantei.

Ar însemna că imprimanta dvs. se poate conecta direct la orice adresă IP. În circumstanțe normale, un sistem va putea comunica direct doar cu alte sisteme din subrețea sa (vezi masca). Pentru o acoperire mai largă, va trebui să treacă printr-o poartă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.