Preusmerite promet z enega naslova IP in vrat na drugega naslova IP in vrata

Nekaj ​​zelo pogostega pri upravljanju strežnikov je preusmerjanje prometa.

Recimo, da imamo strežnik z določenimi storitvami, vendar iz kakršnega koli razloga spremenimo eno od teh storitev (Ne vem, na primer pop3, ki je vrata 110) na drug strežnik. Običajna in najpogostejša stvar bi bila preprosto spremeniti IP v zapisu DNS, vendar če bo nekdo uporabljal IP namesto poddomene, bo to prizadeto.

Kaj storiti? ... preprosto, preusmerite promet, ki ga strežnik prejme prek teh vrat, na drug strežnik z istimi vrati.

strežnik-vozlišče-lan-eternet

Kako začnemo preusmerjati promet?

Prva stvar je, da smo morali omogočiti posredovanje na strežnik, za to bomo postavili naslednje:

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

Vsi ukazi, prikazani v tej vadnici, se morajo izvajati s skrbniškimi pravicami, priporočam pa, da se izvajajo neposredno s korenskim uporabnikom.

Uporabite lahko tudi ta drugi ukaz, če vam prejšnji ne deluje (se mi je zgodilo tako na CentOS-u):
sysctl net.ipv4.ip_forward=1
Nato bomo znova zagnali omrežje:

service networking restart

V distribucijah RPM, kot je CentOS in drugi, bi bilo:

service nertwork restart

Zdaj bomo prešli na pomembno stvar, povejte strežniku iptables kaj preusmeriti:

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

Z drugimi besedami, predpostavimo, da želimo po zgledu, ki sem ga omenil, ves promet, ki ga naš strežnik prejme prek vrat 110, preusmeriti na drug strežnik (na primer: 10.10.0.2), ki bo še vedno prejemala promet prek 110 (gre za isto storitev):

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

Strežnik 10.10.0.2 bo videl, da vsi paketi ali zahteve prihajajo iz odjemalčevega IP-ja, če želijo plavati zahteve, to je, da drugi strežnik vidi, da zahteve prispejo z IP-jem prvega strežnika (in v ki jo uporabljamo preusmeritev), bi bilo treba postaviti tudi to drugo vrstico:

iptables -t nat -A POSTROUTING -j MASQUERADE

Nekaj ​​vprašanj in odgovorov

V primeru sem obakrat uporabil isto pristanišče (110), vendar lahko promet brez težav preusmerijo iz enega v drugo pristanišče. Recimo, da želim na primer preusmeriti promet z vrat 80 na 443 na drug strežnik, za to bi bilo to:

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

To je iptables, lahko uporabijo vse druge parametre, ki jih poznamo, na primer, če želimo samo preusmeriti promet z določenega IP-ja, bi to dodalo -s ... Na primer preusmeril bom samo promet, ki prihaja 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

Ali celotno omrežje (/ 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

Omrežni vmesnik lahko določimo tudi z -i :

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

Konec!

Kot sem že rekel, so iptables, lahko uporabite tisto, kar je že znano, tako da strežnik naredi točno tisto, kar želite, da do

Lep pozdrav!

DedicatedServer_SubImage


Vsebina članka je v skladu z našimi načeli uredniška etika. Če želite prijaviti napako, kliknite tukaj.

19 komentarja, pustite svojega

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Fer je dejal

    To lahko storimo tudi iz požarnega zidu, ki omogoča posredovanje vrat, kajne? (z uporabo ustreznih pravil).

    1.    KZKG ^ Gaara je dejal

      Ja, seveda, na koncu požarni zid, kot je Pfsense ali drugi, uporabite iptables od zadaj.

      1.    dhunter je dejal

        Natančneje, pfsense ne uporablja iptables, ampak pf, ne pozabite, da je znotraj bsd.

        1.    KZKG ^ Gaara je dejal

          Oh, prav, hudo!

  2.   Nicolas je dejal

    Najlepša hvala za namig 🙂

    Imam nekaj dvomov:
    1 - Ali je sprememba trajna? ali se izgubi ob ponovnem zagonu strežnika?
    2 - V isti podomrežji imam več primerkov (recimo A, B in C). Na primer A uporabim pravilo za usmerjanje prometa na zunanji IP in pri testiranju s kodri iz primerkov B in C vse naredi čudeže. Težava je v tem, da iz primerka A ne deluje. Poskušal sem uporabiti vaš ip in vmesnik povratne zanke in noben ne deluje:
    $ iptables -t nat -A PREROUTING -p tcp –dport 8080 -j DNAT –na destinacijo xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i lo –dport 8080 -j DNAT –do cilja xxxx: 8080

    $ curl ip-yyyy: 8080 / hello_world
    curl: (7) Povezava z ip-yyyy vrati 8080 ni uspela: Povezava zavrnjena
    $ curl localhost: 8080 / hello_world
    curl: (7) Povezava z lokalnimi gostiteljskimi vrati 8080 ni uspela: povezava zavrnjena

    Imate kakšno idejo, v čem je težava?

    1.    KZKG ^ Gaara je dejal

      Da, sprememba se ob ponovnem zagonu izgubi, za preprečitev boste morali uporabiti iptables-save & iptables-restore ali kaj podobnega.
      Nisem povsem razumel, kaj želite storiti, primer A?

      1.    Nicolas je dejal

        Imam strežnik, ki podpira samo povezave z določenega ip (strežnika A), ne morem ali želim dodati več ips na beli seznam (zaradi težav z razširljivostjo), zato želim, da gre ves promet do zunanjega strežnika omenjeni strežnik (A).
        Zaradi praktičnosti imam globalne konfiguracije, ki opredeljujejo, kateri IP uporabiti za posamezno storitev, zato gre v tem primeru za nekaj takega, kot je "vsi, ki želijo uporabljati zunanjo storitev, morajo uporabljati IP A"
        To sem uspešno dosegel z uporabo metode v tem članku, vendar naletim na težavo, da strežnik A pri njegovi uporabi ne more dostopati do storitve z lastnim ip-jem (vsi drugi strežniki pa to počnejo).
        Do zdaj je bilo najboljše, kar sem našel, dodati preslikavo v datoteko strežnika A / etc / hosts, ki kaže na zunanji ip in prepiše globalno nastavitev.

  3.   braybaut je dejal

    Zelo dobro, če bi imel drug poštni strežnik, bi lahko promet od vrat 143 prenesel s strežnika1 na strežnik2 in e-poštna sporočila bodo prišla na strežnik2, kajne?

    pozdrav

    1.    KZKG ^ Gaara je dejal

      V teoriji ja, deluje tako. Seveda morate imeti na strežniku2 installed pravilno nameščen poštni strežnik

  4.   MSX je dejal

    Kakšne objave radi beremo, hvala!

  5.   Abraham Ibarra je dejal

    Odličen članek, imam projekt, v katerem delam, in želel sem vas vprašati, obstajajo industrijska stikala s funkcijo NAT (domnevam, da uporabljajo spodnje tabele IP) za prevajanje naslova IP brez spreminjanja opreme, na primer imam strežnik 10.10.2.1, ki komunicira z računalniki 10.10.2.X in prek stikala programiran tako, da je računalnik z naslovom 192.168.2.4 s strežnika dejansko viden kot 10.10.2.5, je prevedel ta naslov IP, da je viden Kakšna bi bila pravila iptables od ostalih računalnikov s tem naslovom iz strežnika z Ubuntujem ali drugo distribucijo?

  6.   Kuk je dejal

    Zelo dobre informacije hvala ^ _ ^

  7.   Yisus je dejal

    Dober dan.
    Imam težavo pri poskusu preusmeritve. Pojasnim:
    V Ubuntuju imam proxy strežnik z dvema omrežnima karticama:
    eth0 = 192.168.1.1 je povezan z ostalim lokalnim omrežjem.
    eth1 = 192.168.2.2 je povezan z usmerjevalnikom.
    Vse, kar pride skozi eth0, potrebujem za prehod skozi eth1 in tudi prek posrednika (uporabljam Squid, katerega privzeta vrata so 3128), ključa v konfiguraciji IPTABLES pa ne najdem.
    Nobene omejitve ne potrebujem, le da ostane zapis v dnevniku obiskanih spletnih naslovov.

    Upam, da mi lahko pomagate, saj je nekaj okornega opravila, ki me skrbi že nekaj dni.

    Hvala.

  8.   Gabriel je dejal

    Prijatelj, zelo sem nov v drugih strežnikih, nimam pojma, ampak razumem zadevo in se hitro naučim, moje vprašanje je naslednje. Imam 2 strežnika serv_1 in serv_2, ki sem ju povezal v isti intranet, v teh strežnikih imam nastavljen lasten oblak Rad bi naredil naslednje:

    da je določen obseg ips, na primer rangeip_1 pri postavljanju ip dostopa do lastnega oblaka (ipowncloud) usmerjen proti serv_1, in če gre za drug rangeip_2, je isti ipowncloud usmerjen na serv_2, to zato, da se nahajata 2 strežnika v dveh različnih mestih in obsegi IP so različni, vendar so vsi v istem omrežju, to bi bil prvi del, drugi pa bi bil jasen, da ta dva strežnika sinhronizirate tako, da sta zrcalna ali da mi to svetujejo, da optimiziram širino band, prosim, če mi boste razložili, kako to narediti korak za korakom, ne pa v način super programerja = (

  9.   Antonio Carrizosa je dejal

    Pozdravljeni, oprostite, stikalo je odgovorno za komunikacijo vseh naprav, ki tvorijo moje omrežje, po tem pa požarni zid in končno internetni izhod, želim, da bi bila preusmeritev dana v stikalo in mu ni treba doseči požarnega zidu, razen če je zahtevana storitev internet.

  10.   John je dejal

    Bi lahko s to metodo HTTPS preusmerili na HTTP?

  11.   mati je dejal

    Živjo, mogoče je že pozno, vendar sem te želel vprašati, kako naj naredim Squid, da ne spreminja odjemalčevega IP-ja, ko se želim povezati s spletnim strežnikom v istem omrežju?

  12.   lafat32 je dejal

    Ne vedite me slabo, če sprašujete. Ali je to mogoče storiti v sistemu Windows?

  13.   Martin je dejal

    Te informacije so mi bile koristne. Kot vedno vam lahko zaupam, ko ne najdem nečesa v angleščini, na koncu na koncu pogledam v španščini, ob teh priložnostih skoraj vedno pridem na to spletno stran.