Routerul dumneavoastră rulează Linux și acest comportament este ușor de implementat pe orice distribuție Linux stoc. Pot ghici ce reguli trebuie să fie prezente în firewall-ul routerului tău pentru ca acesta să funcționeze astfel. Dar fiți conștienți că aceasta este doar o speculație, nu știm cum arată exact regulile în realitate.
Când ați redirecționat un port către serverul dvs. web, a adăugat o regulă DNAT specifică, care probabil arată astfel:
iptables -t nat -A PREROUTING -p tcp -d <adresa-externă> --dport 443 -j DNAT --la-destinație <adresa-zmeura-pi>
În cuvinte, aceasta înseamnă: „înainte de a decide dacă acest pachet este destinat dispozitivului sau trebuie redirecționat, verificați dacă adresa de destinație a pachetului este adresa dvs. externă și portul de destinație este 443. Dacă se potrivește, schimbați adresa de destinație la LAN-ul raspberry pi. abordare". Observați, această regulă nu filtrează după interfață.
De asemenea, are cu siguranță regula de tip SNAT (pentru furnizarea unui acces la internet pentru LAN), probabil că arată așa:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
Cu alte cuvinte, după ce routerul decide unde trebuie să meargă pachetul, înainte de a trimite pachetul, își schimbă adresa sursă la oricare dintre adresele pe care o are o interfață de ieșire (dacă pachetul a fost trimis din LAN). Din nou, nimic nu este filtrat de o interfață.
Acum luați în considerare conexiunea dvs. HTTPS. Specificați numele gazdei în browser, nu? L-ați configurat astfel încât să fie rezolvat la adresa externă a routerului, care devine adresa de destinație. Adresa sursă se află în LAN. Deci, se pare că ambele reguli se aplică pachetelor din conexiunea dvs.
Procesându-le, routerul întâlnește mai întâi regula DNAT, verifică adresa și portul de destinație și decide să schimbe adresa de destinație cu cea a lui Raspberry Pi.Apoi află că interfața pe care trebuie să iasă pachetul este una LAN. Apoi verifică pachetul tradus parțial cu a doua regulă și află că adresa sursă este din LAN. Deci, înlocuiește adresa sursă a pachetului cu adresa interfeței LAN, 192.168.1.1. Asta vede raspberry pi-ul tău.
Operația NAT este cu stare, adică menține, de asemenea, o înregistrare de tabel care spune care a fost înlocuit cu ce și cum să detecteze pachetele ulterioare de redirecționare și răspuns, astfel încât le traduce pe toate corect. Da, se pare că Linux poate face DNAT și SNAT în același timp în același flux.
Poți avea încredere în acest comportament? Nu știu. Dacă firmware-ul routerului era open source, am avut șansa să verificăm. Fără sursă, nu putem fi siguri. Acesta este întotdeauna cazul când sursa este închisă, de aceea produsele cu sursă închisă trebuie evitate dacă ești îngrijorat de securitate.