Preusmjerite promet s jedne IP adrese i priključka na drugu IP adresu i priključak

Nešto vrlo često kod upravljanja poslužiteljima je preusmjeravanje prometa.

Pretpostavimo da imamo poslužitelj s određenim uslugama, ali iz bilo kojeg razloga mijenjamo jednu od tih usluga (Ne znam, na primjer pop3 koji je port 110) na drugi poslužitelj. Normalna i najčešća stvar bila bi jednostavna promjena IP-a u DNS zapisu, no ako netko koristi IP umjesto poddomene, to će biti pogođeno.

Što uraditi? ... jednostavno, preusmjerite promet koji je taj poslužitelj primio preko tog porta na drugi poslužitelj s istim priključkom.

poslužitelj-čvor-lan-ethernet

Kako započeti preusmjeravanje prometa?

Prva stvar je da smo sigurno omogućili prosljeđivanje na poslužitelj, za ovo ćemo staviti sljedeće:

echo "1" > /proc/sys/net/ipv4/ip_forward

Sve naredbe prikazane u ovom vodiču moraju se izvršavati s administrativnim privilegijama, preporučujem da se izvršavaju izravno s root korisnikom.

Možete koristiti i ovu drugu naredbu, u slučaju da vam prethodna ne uspije (dogodilo mi se ovako na CentOS-u):
sysctl net.ipv4.ip_forward=1
Tada ćemo ponovno pokrenuti mrežu:

service networking restart

U RPM distribucijama poput CentOS-a i drugih, to bi bilo:

service nertwork restart

Sada ćemo prijeći na važnu stvar, recite poslužitelju iptables što preusmjeriti:

iptables -t nat -A PREROUTING -p tcp --dport <puerto receptor> -j DNAT --to-destination <ip final>:<puerto de ip final>

Drugim riječima, i slijedeći primjer koji sam spomenula, pretpostavimo da sav promet koji naš poslužitelj prima putem porta 110 preusmjerimo na drugi poslužitelj (primjer: 10.10.0.2), koja će i dalje primati taj promet kroz 110 (to je ista usluga):

iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination 10.10.0.2:110

Poslužitelj 10.10.0.2 vidjet će da svi paketi ili zahtjevi dolaze s klijentovog IP-a, u slučaju da žele preplivati ​​zahtjeve, odnosno da drugi poslužitelj vidi da zahtjevi stižu s IP-om prvog poslužitelja (i u koje primjenjujemo preusmjeravanje), bilo bi također staviti ovaj drugi redak:

iptables -t nat -A POSTROUTING -j MASQUERADE

Neka pitanja i odgovori

U primjeru sam oba puta koristio isti port (110), međutim oni mogu bez problema preusmjeriti promet s jednog porta na drugi. Na primjer, pretpostavimo da želim preusmjeriti promet s porta 80 na 443 na drugom poslužitelju, jer bi to bilo:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.0.2:443

Ovo je iptables, oni mogu koristiti sve ostale parametre koje znamo, na primjer, ako želimo samo preusmjeriti promet s određene IP adrese, to bi bilo dodavanje -s ... Na primjer, preusmjerit ću samo promet koji dolazi od 10.10.0.51:

iptables -t nat -A PREROUTING -p tcp -s 10.10.0.51 --dport 80 -j DNAT --to-destination 10.10.0.2:443

Ili cijela mreža (/ 24):

iptables -t nat -A PREROUTING -p tcp -s 10.10.0.0/24 --dport 80 -j DNAT --to-destination 10.10.0.2:443

Mrežno sučelje možemo odrediti i s -i :

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j DNAT --to-destination 10.10.0.2:443

Kraj!

Kao što sam već rekao, to su iptables, možete primijeniti ono što je već poznato, tako da poslužitelj radi točno ono što vi želite 😉

Pozdrav!

DedicatedServer_SubImage


20 komentara, ostavi svoj

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Fer dijo

    To možemo učiniti i putem vatrozida koji omogućuje prosljeđivanje priključaka, zar ne? (primjenjujući odgovarajuća pravila).

    1.    KZKG ^ Gaara dijo

      Da, naravno, na kraju vatrozid poput Pfsensea ili drugih, koristite iptable s leđa.

      1.    dhunter dijo

        Točnije, pfsense ne koristi iptables već pf, imajte na umu da je unutra bsd.

        1.    KZKG ^ Gaara dijo

          Ma dobro, loše!

  2.   Nicolas dijo

    Najljepša hvala na savjetu 🙂

    Imam par sumnji:
    1 - Je li promjena trajna? ili se gubi prilikom ponovnog pokretanja poslužitelja?
    2 - Imam više instanci (recimo A, B i C) na istoj podmreži. U primjeru A primjenjujem pravilo za usmjeravanje prometa na vanjsku IP adresu, a pokušavajući s uvojcima iz instanci B i C, sve čini čuda. Problem je što od instance A to ne radi. Pokušao sam koristiti i vaš ip i loopback sučelje, a niti jedno ne funkcionira:
    $ iptables -t nat -A PREROUTING -p tcp –port 8080 -j DNAT –do odredišta xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i lo –dport 8080 -j DNAT –do odredišta xxxx: 8080

    $ curl ip-yyyy: 8080 / hello_world
    curl: (7) Nije uspjelo povezivanje s ip-yyyy portom 8080: Veza je odbijena
    $ curl localhost: 8080 / hello_world
    curl: (7) Nije uspjelo povezivanje s portalom localhost 8080: Veza je odbijena

    Imate li pojma u čemu je problem?

    1.    KZKG ^ Gaara dijo

      Da, promjena se gubi pri ponovnom pokretanju, morat ćete koristiti iptables-save & iptables-restore ili nešto slično da biste to izbjegli.
      Nisam baš razumio što želite učiniti, primjer A?

      1.    Nicolas dijo

        Imam poslužitelj koji podržava samo veze s određenog ip-a (poslužitelja A), ne mogu ili želim dodati više ips-a na bijelu listu (zbog problema s skalabilnošću), pa želim da sav promet prema vanjskom poslužitelju prolazi rekao je poslužitelj (A).
        Iz praktičnih razloga, imam globalne konfiguracije koje definiraju koji će se IP koristiti za svaku uslugu, tako da je u ovom slučaju to nešto poput "svi koji žele koristiti vanjsku uslugu moraju koristiti IP A"
        Uspješno sam to postigao metodom u ovom članku, ali nailazim na problem da prilikom njegove primjene poslužitelj A ne može pristupiti usluzi pomoću vlastitog ip-a (ali svi ostali poslužitelji to rade).
        Do sada je najbolje što sam pronašao bilo dodavanje mapiranja u datoteku poslužitelja / etc / hosts, pokazujući na vanjski ip, prepisujući globalnu postavku.

  3.   braybaut dijo

    Vrlo dobro, ako imam drugi poslužitelj pošte, mogao bih proslijediti promet s priključka 143 s poslužitelja1 na poslužitelj2 i e-poruke će mi stići na poslužitelj2, zar ne?

    pozdravi

    1.    KZKG ^ Gaara dijo

      U teoriji da, djeluje ovako. Svakako, na serveru2 XNUMX morate imati pravilno instaliran poslužitelj pošte

  4.   MSX dijo

    Objave koje volimo čitati, hvala!

  5.   Abraham Ibarra dijo

    Izvrstan članak, imam projekt u kojem radim i htio sam vas pitati pitanje, postoje industrijski prekidači s NAT funkcijom (pretpostavljam da koriste IPTablice u nastavku), za prevođenje IP adrese bez izmjena opreme, primjer, imam poslužitelj 10.10.2.1 koji komunicira s računalima 10.10.2.X i preko prekidača je programiran tako da se računalo koje ima adresu 192.168.2.4 sa poslužitelja zapravo vidi kao 10.10.2.5, prevelo je tu IP adresu da se vidi S ostalih računala s tom adresom, želim to učiniti sa poslužitelja s Ubuntuom ili nekom drugom distribucijom, koja bi bila iptables pravila?

  6.   kuk dijo

    Vrlo dobre informacije hvala ^ _ ^

  7.   Isuse dijo

    Dobar dan.
    Imam problem s pokušajem preusmjeravanja. Ja objašnjavam:
    Imam proxy poslužitelj u Ubuntuu, s 2 mrežne kartice:
    eth0 = 192.168.1.1 povezan je s ostatkom lokalne mreže.
    eth1 = 192.168.2.2 spojen je na usmjerivač.
    Treba mi sve što dolazi kroz eth0 da bih prošao kroz eth1, a također i preko proxyja (koristim Squid, čiji je zadani port 3128), a ne mogu pronaći ključ u konfiguraciji IPTABLES.
    Ne trebaju mi ​​nikakva ograničenja, samo da zapis ostane u zapisniku posjećenih web adresa.

    Nadam se da mi možete pomoći jer je to prilično glomazan zadatak koji me brine već par dana.

    Hvala Vam.

  8.   Gabriel dijo

    Prijatelju, jako sam nov na drugim poslužiteljima, nemam pojma, ali razumijem temu i brzo učim, moje pitanje je sljedeće. Imam 2 poslužitelja serv_1 i serv_2 koje sam povezao na isti intranet, na tim poslužiteljima imam postavljen vlastiti oblak, Želio bih učiniti sljedeće:

    da je određeni raspon ips, na primjer rangeip_1 prilikom postavljanja pristupnog ip-a vlastitom oblaku (ipowncloud) usmjeren prema serv_1, a ako je to drugi rangeip_2, isti ipowncloud usmjeren je na serv_2, to kako bi se smjestila 2 poslužitelja u dva različita grada i rasponi IP-a su različiti, ali svi su na istoj mreži, to bi bio prvi dio, drugi bi bio jasan, sinkronizirati ova dva poslužitelja tako da budu zrcala ili da mi to savjetuju kako bih optimizirao širinu band, molim vas, ako ćete mi objasniti kako to učiniti korak po korak, a ne u super programer mod =

  9.   Antonio Carrizosa dijo

    Pozdrav, oprostite, imam prekidač zadužen za komunikaciju svih uređaja koji čine moju mrežu, a nakon toga vatrozid i konačno izlaz iz Interneta, ono što se događa je da bih želio da preusmjeravanje bude dato u preklopnik i ne mora doći do vatrozida ako tražena usluga nije internet.

  10.   Huan dijo

    Pomoću ove metode možete li HTTPS preusmjeriti na HTTP?

  11.   Mati dijo

    Pozdrav, možda je malo kasno, ali htio sam te pitati, kako da lignje ne mijenjaju IP klijenta kada se želim povezati s web serverom na istoj mreži?

  12.   lafat32 dijo

    Ne ponašaj se loše prema meni što pitaš. Može li se to učiniti u sustavu Windows?

  13.   bregunica dijo

    Ove su mi informacije bile korisne. Kao i uvijek mogu vam se vjerovati, kad ne mogu pronaći nešto na engleskom, obično na kraju potražim španjolski, u tim prilikama gotovo uvijek dođem na ovu stranicu. Hvala.

  14.   Seba dijo

    Imam 4G usmjerivač koji je klijent mreže kojom ne upravljam (očito sam ja klijent)… ovaj je usmjerivač pristupnik toj udaljenoj mreži putem OpenVPN-a. Nadalje, navedeni usmjerivač ispunjava funkciju prosljeđivanja portova za pristup portu 80 poslužitelja jedne od tih podmreža na terenu.

    To je bila deklaracija koju sam morao staviti u usmjerivač kao prilagođeno pravilo vatrozida “-t nat -A POSTROUTING -j MASQUERADE”

    Hvala na pomoći!