Puncte:-1

De ce apache înregistrează un IP intern când folosește un domeniu extern?

drapel cn

Am un Raspberry Pi care rulează pe care îl folosim la birou pentru proiecte mici de testare pe care nu le dorim pe serverul nostru principal de dezvoltare. Se rulează apache. DNS-ul este gestionat prin Cloudflare, dar în modul DNS Only. În prezent, nu există nicio restricție IP în timp ce testez. Recordul A pentru mysite.domain.tld indică adresa mea IP statică 123.123.123.123 și doar un router/modem de fibră standard de afaceri se află între Internet și Pi.

Când vizitez mysite.domain.tld de la telefonul meu fără wifi, de exemplu, apare IP-ul operatorului de telefonie mobilă.Cand eu wget de pe un server la distanță, este' IP-ul apare în jurnale. Totul funcționează conform așteptărilor.

Totuși, când merg la mysite.domain.tld din cadrul aceleiași rețele în care se află Pi, apache înregistrează IP-ul gateway-ului routerului 192.168.1.1. M-aș aștepta să văd adresa mea IP publică, deoarece conexiunea mea la numele de domeniu se rezolvă, prin Cloudflare, la IP-ul public. Dar în schimb văd un IP de rețea locală în jurnale.

Nu se instalează nimic /etc/hosts (Sunt pe macOS) și pe router, doar redirecționarea portului pentru conexiunile de la portul 443 sunt router către Pi pe același port - nimic în ceea ce privește numele domeniului nu este referință nicăieri. Când pun ping mysite.domain.tld îmi dă Cloudflare Adresa IP, care este ceea ce mă aștept.

Se pare că undeva de-a lungul lanțului, faptul că adresa mea IP și adresa IP publică a lui Pi sunt corelate, așa că suprascrie IP-ul cu IP-ul gateway-ului intern. Ce se întâmplă de fapt aici? Eu nu minte în sine, vreau doar să mă asigur că mă pot baza pe faptul că 192.168.* IP-urile pot fi de încredere când se configurează restricția IP pe firewall.

Notă: CF-Connecting-IP și anteturile similare nu sunt trimise de Cloudflare aici, presupun că se întâmplă doar atunci când nu sunt în modul DNS Only. Si el pare să fie numai atunci când folosesc aceeași conexiune de rețea pe care o folosește Pi.

Nikita Kipriyanov avatar
drapel za
Care este mai exact routerul despre care vorbesti (cel cu adresa 192.168.1.1)? Cel mai probabil, acest lucru este cauzat de comportamentul său. De asemenea, o întrebare secundară, ce te așteptai să vezi în schimb în acel domeniu și de ce?
drapel cn
@NikitaKipriyanov Este un Technicolor Cobalt - adică un router ISP stoc. Ce mă așteptam să văd care este adresa IP publică a conexiunii, deoarece nu mă conectez la 192.168.1.* (sau nu am nicio soluție de domeniu la IP-ul intern), dar mă conectez la domeniul public prin Cloudflare. Așa că m-aș aștepta ca IP-ul public să apară în apache.
Puncte:2
drapel za

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.

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.