Puncte:0

Firewalld port forwarding Proxmox face portul inutilizabil pentru alte conexiuni

drapel in

Am un server găzduit de hetzner cu o singură adresă IP publică care rulează proxmox și unele VM. Această adresă IP este configurată în /etc/interfaces astfel:

auto enp35s0
iface enp35s0 inet static
    adresa {{my-public-ip}}/{{subnet}}
    gateway {{hetzner-gateway}}
    up route add -net {{hetzner-ip}} netmask 255.255.255.192 gw {{hetzner-gateway}} dev enp35s0

Această configurație a fost realizată de hetzner.

Pentru că nu vreau să obțin adrese IP suplimentare de la hetzner, maschez acel ip pentru o rețea VM internă:

auto vmbr0
iface vmbr0 inet static
    adresa 172.16.0.1/24
    bridge-ports niciunul
    bridge-stp off
    punte-fd 0

    ecou post-up 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '172.16.0.0/24' -o enp35s0 -j ​​MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '172.16.0.0/24' -o enp35s0 -j ​​MASQUERADE

Cu aceasta, VM-urile mele au acces la internet și pot ajunge unul la altul.

Deoarece iptables port forwarding este un pic prea complicat pentru mine, am început să folosesc firewalld. Acolo am interfața mea enp35s0 atribuită zonei externe și vmbr0 de încredere. Știu că poate ar trebui să-l atribui la intern, dar în prezent nu prea face o diferență (sau cred că da în cazul meu problema).

Acum am un serviciu care rulează într-un VM cu ip 172.16.0.3 pe portul 38080. Pentru a ajunge la acest serviciu, adaug o regulă de redirecționare a portului în firewalld: port=38080:proto=tcp:toport=38080:toaddr=172.16.0.3. Cu asta pot ajunge la acel serviciu din afara acestui server. Problema acum este că, dacă folosesc un software precum uptime-kuma și îl rulez și în interiorul unui VM pe aceeași mașină fizică, nu pot ajunge la acel serviciu pe portul 38080, deoarece redirecționarea portului se face doar pentru solicitări externe. Important aici este că numele de gazdă pe care îl folosește uptime-kuma este FQDN-ul care se rezolvă la adresa IP publică a mașinii mele gazdă. Deci, pentru a face acest lucru posibil, adaug aceeași regulă de redirecționare a portului în zona de încredere a firewalld, deoarece interfața mea vmbr0 este acolo și de la acea interfață vine cererea. Acum această conexiune funcționează și software-ul meu (uptime-kuma) poate ajunge la serviciul meu.

Problema mare acum este că FIECARE cerere din interiorul rețelei virtuale care dorește să folosească portul 38080 este redirecționată către acel VM (172.16.0.3), chiar și cele care merg la un server complet diferit.

Cum pot spune firewalld să redirecționeze acel trafic numai dacă cererea a fost de fapt direcționată către mașina gazdă?

TheAnachronism avatar
drapel in
Soluția mea actuală este să folosesc porturi care nu sunt necesare pentru niciun serviciu extern, dar care nu poate fi soluția la această problemă
Puncte:0
drapel in

Deci nu am putut găsi o soluție la comportamentul firewalld, dar am găsit altceva care a făcut ca regula de redirecționare a porturilor în zona de încredere să nu fie necesară. Adăugând FQDN-ul care s-ar rezolva la IP-ul public al gazdei în fișierul /etc/hosts din interiorul VM, nu mai am nevoie de port forward, deoarece se conectează instantaneu la sine din nou (care este ceea ce mi-am dorit în primul rând). Folosind acele porturi, regulile de redirecționare în interiorul zonei de încredere nu mai sunt necesare și pot folosi din nou acele porturi pentru solicitări externe.

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.