Preusmjerite promet s jedne IP adrese i porta na drugu IP adresu i port

Nešto vrlo često kod upravljanja serverima je preusmjeravanje prometa.

Pretpostavimo da imamo server 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 server. Normalna i najčešća stvar bila bi jednostavna promjena IP-a u DNS zapisu, međutim ako neko koristi IP umjesto poddomene to će biti pogođeno.

Šta da se radi? ... jednostavno, preusmjerite promet koji je taj poslužitelj primio preko tog porta na drugi poslužitelj s istim portom.

server-čvor-lan-ethernet

Kako započeti preusmjeravanje prometa?

Prva stvar je da smo morali omogućiti 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 ponovo 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, prenijeti serveru iptables šta preusmjeriti:

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

Drugim riječima, a slijedeći primjer koji sam spomenuo, pretpostavimo da želimo preusmjeriti sav promet koji naš poslužitelj prima preko porta 110 na drugi poslužitelj (npr: 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 klijentove IP adrese, u slučaju da žele preplivati ​​zahtjeve, odnosno da drugi poslužitelj vidi da zahtjevi stižu s IP adrese prvog poslužitelja (i u koju primjenjujemo preusmjeravanje), bilo bi također staviti ovaj drugi redak:

iptables -t nat -A POSTROUTING -j MASQUERADE

Nekoliko pitanja i odgovora

U primjeru sam u oba navrata 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 serveru, jer bi ovo 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

Takođe možemo odrediti mrežno sučelje sa -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 server radi upravo ono što vi želite want

Pozdrav!

DedicatedServer_SubImage


Sadržaj članka pridržava se naših principa urednička etika. Da biste prijavili grešku, kliknite ovdje.

19 komentara, ostavi svoj

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Fer rekao je

    To možemo učiniti i putem zaštitnog zida koji omogućava prosljeđivanje priključaka, zar ne? (primjenom odgovarajućih pravila).

    1.    KZKG ^ Gaara rekao je

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

      1.    dhunter rekao je

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

        1.    KZKG ^ Gaara rekao je

          Oh, tačno, loše!

  2.   Nicolas rekao je

    Najljepša hvala na savjetu 🙂

    Imam par sumnji:
    1 - Da li je promjena trajna? ili se gubi prilikom ponovnog pokretanja servera?
    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 testiranje 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 jedan 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 lokalnim host hostom 8080: Veza je odbijena

    Imate li pojma u čemu je problem?

    1.    KZKG ^ Gaara rekao je

      Da, promjena se gubi prilikom ponovnog pokretanja, morat ćete koristiti iptables-save & iptables-restore ili nešto slično da biste to izbjegli.
      Nisam baš razumio šta želite da uradite, instanca A?

      1.    Nicolas rekao je

        Imam poslužitelj koji podržava samo veze s određenog ip-a (poslužitelja A), ne mogu ili želim dodati još ips-a na bijelu listu (zbog problema s skalabilnošću), pa želim da sav promet prema vanjskom serveru prolazi navedeni server (A).
        Iz praktičnosti, 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"
        To je uspješno postignuto korištenjem metode iz ovog članka, ali nailazim na problem da prilikom njegove primjene server A ne može pristupiti usluzi pomoću vlastitog ip-a (ali svi ostali serveri to čine).
        Do sada je najbolje što sam pronašao bilo dodavanje mapiranja u datoteku / etc / hosts poslužitelja A, ukazujući na vanjski ip, prepisujući globalnu postavku.

  3.   braybaut rekao je

    Vrlo dobro, ako imam drugi poslužitelj pošte, mogao bih proslijediti promet s porta 143 s servera1 na server2 i e-poruke će mi stići na server2, zar ne?

    Saludos

    1.    KZKG ^ Gaara rekao je

      U teoriji da, djeluje ovako. Svakako, na serveru2 must morate imati pravilno instaliran mail server

  4.   MSX rekao je

    Objave koje volimo čitati, hvala!

  5.   abraham ibarra rekao je

    Odličan članak, imam projekt u kojem radim i htio sam vas pitati pitanje, postoje industrijski prekidači s NAT funkcijom (pretpostavljam da koriste IPTablice dolje), za prevođenje IP adrese bez izmjena opreme, na primjer, imam server 10.10.2.1 koji komunicira sa 10.10.2.X računarima i preko prekidača je programiran tako da se računar koji ima adresu 192.168.2.4 sa servera zapravo vidi kao 10.10.2.5, preveo je tu IP adresu da se vidi Sa ostalih računara s tom adresom želim to učiniti sa servera sa Ubuntuom ili nekom drugom distribucijom, koja bi bila iptables pravila?

  6.   Kuk rekao je

    Vrlo dobre informacije hvala ^ _ ^

  7.   Yisus rekao je

    Dobar dan.
    Imam problem pri pokušaju preusmjeravanja. Objašnjavam:
    Imam proxy server u Ubuntuu, sa 2 mrežne kartice:
    eth0 = 192.168.1.1 povezan je s ostatkom lokalne mreže.
    eth1 = 192.168.2.2 je povezan 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 ​​bilo kakva ograničenja, samo da zapis ostane u evidenciji 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.

  8.   Gabriel rekao je

    Prijatelju, vrlo sam nov na drugim serverima, nemam pojma, ali razumijem temu i brzo učim, moje pitanje je sljedeće. Imam 2 servera serv_1 i serv_2 koje sam povezao na isti intranet, na tim serverima 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 2 poslužitelja nalazila 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 da se ova dva servera sinhroniziraju tako da budu ogledala ili da mi to savjetuju kako bih optimizirao širinu band, molim te, ako ćeš mi objasniti kako to učiniti korak po korak, a ne u režim super programera = (

  9.   Antonio Carrizosa rekao je

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

  10.   Juan rekao je

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

  11.   mati rekao je

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

  12.   Lafat32 rekao je

    Ne ponašaj se loše prema meni što pitam. Može li se to učiniti u operativnom sistemu Windows?

  13.   Martin rekao je

    Ove informacije su mi bile korisne. Kao i uvijek, vama se može vjerovati, kad ne mogu pronaći nešto na engleskom, obično na kraju gledam na španskom, u tim prilikama gotovo uvijek dođem na ovu stranicu.