redirecționarea porturilor cu reguli pe Ubuntu 18.04 (Administrarea sistemului, Ubuntu, Iptables, Proxy Invers, Redirecționarea Porturilor, Ubuntu 18.04)

Pradyut Bhattacharya a intrebat.
a intrebat.

Am o VM în care portul 80 este consumat de apache tomcat (host.nvoids.com).

și am apache2 php care rulează la portul 8020, care este un blog wordpress (host.nvoids.com:8020).

Vreau ca atunci când cineva lovește serverul meu de la blog.nvoids.com să fie redirecționat către 8020.

Vă rog să mă anunțați dacă se poate face ceva cu vreun program de redirecționare a porturilor bazat pe reguli?

ceva de genul celor de mai jos –

iptables -t nat -A PREROUTING -d blog.nvoids.com -p tcp -m multiport --dports 80,443 -j DNAT --to-destination blog.nvoids.com:8020

Nu am încercat acest lucru, deoarece nu știu cum să dezactivez comanda de mai sus.

Există vreun nume sau număr de reguli care poate fi atribuit regulilor iptables? Și pot să le activez/dezactivez?

Cu respect

2 răspunsuri
kubanczyk

Modul canonic de a anula

iptables -t nat -A PREROUTING -d blog.nvoids.com -p tcp -m multiport --dports 80,443 -j DNAT --to-destination blog.nvoids.com:8020

este doar să înlocuiți -A cu -D (înlocuiți adăugarea cu ștergerea):

iptables -t nat -D PREROUTING -d blog.nvoids.com -p tcp -m multiport --dports 80,443 -j DNAT --to-destination blog.nvoids.com:8020

Felicitări pentru că sunteți interesat de „cum pot rupe lucrurile și apoi curăța” și pentru că ați furnizat numele real al domeniului.

De asemenea, spui host.nvoids.com:8020, dar comanda ta spune blog.nvoids.com:8020, posibil o greșeală.

Nu cred că iptables/DNAT va funcționa bine pentru tine. Motivul este următorul: cu tabelele de rutare IP, principalul lucru la care trebuie să fii atent este ca nu numai pachetele să meargă într-un singur sens, ci și ca pachetele rezultate să se întoarcă (aproximativ) pe aceeași rută. Nu există nimic în host.nvoids.com care să determine returnarea pachetelor către „mașina iptables”. Clientul nu se așteaptă să trimită un pachet către un IP și să primească un răspuns de la un alt IP – nu este fezabil.

Poate folosiți haproxy pe blog.nvoids.com, sau un proxy invers necomplicat similar?

Comentarii

fukawi2

Nu puteți face acest lucru cu iptables; aveți nevoie de un Reverse Proxy.

iptables funcționează la nivelul Layer 2/3/4 al stivei de rețele, însă HTTP Host antetul HTTP nu este disponibil la aceste straturi, astfel încât iptables nu poate face diferența între un pachet pe portul 80 pentru foo.example.com și un alt pachet pentru bar.example.com (presupunând că ambele site-uri se rezolvă la aceeași adresă IP). Tot ceea ce vede iptables este un pachet destinat unei adrese IP pe portul 80 (sau pe portul 443).

Pentru a utiliza un proxy invers, va trebui să mutați tomcat pe un alt port (de exemplu, 8080), apoi să configurați proxy-ul invers pentru a accepta conexiuni pe porturile 80 și 443. Proxy-ul invers va examina protocolul HTTP Host al conexiunilor primite și va transmite traficul către serverul din amonte corespunzător (Tomcat sau Apache2 în cazul dumneavoastră).

nginx este utilizat în mod obișnuit ca proxy invers, dar alte opțiuni includ apache, haproxy și squid.