Nukreipkite srautą iš vieno IP ir prievado į kitą IP ir prievadą

Kažkas labai dažnai tvarkant serverius nukreipia srautą.

Tarkime, kad turime serverį, kuriame veikia tam tikros paslaugos, tačiau dėl kokios nors priežasties pakeičiame vieną iš šių paslaugų (Aš nežinau, pavyzdžiui, „pop3“, kuris yra 110 prievadas) į kitą serverį. Normalus ir dažniausiai pasitaikantis dalykas būtų tiesiog pakeisti IP įrašą DNS, tačiau jei kažkas naudojo IP, o ne padomenį, tai bus paveikta.

Ką daryti? ... paprasta, nukreipkite to serverio gautą srautą per tą prievadą į kitą serverį su tuo pačiu prievadu.

serverio mazgas-lan-Ethernet

Kaip pradėti nukreipti srautą?

Pirmas dalykas yra tas, kad mes turime įgalinti ekspedijavimas serveryje, tam mes įdėsime:

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

Visos komandos, parodytos šioje pamokoje, turi būti vykdomos su administratoriaus teisėmis, rekomenduoju jas vykdyti tiesiogiai su šakniniu vartotoju.

Taip pat galite naudoti šią kitą komandą, jei ankstesnė neveiks (taip man nutiko „CentOS“):
sysctl net.ipv4.ip_forward=1
Tada mes iš naujo paleisime tinklą:

service networking restart

RPM rajonuose, tokiuose kaip „CentOS“ ir kiti, tai būtų:

service nertwork restart

Dabar pereisime prie svarbaus dalyko, pasakykime serveriui iptables ką peradresuoti:

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

Kitaip tariant, ir laikydamiesi mano paminėto pavyzdžio, tarkime, kad mes norime nukreipti visą srautą, kurį mūsų serveris gauna per 110 prievadą, į kitą serverį (pvz .: 10.10.0.2), kuri vis tiek gaus tą srautą per 110 (tai ta pati paslauga):

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

10.10.0.2 serveris matys, kad visi paketai ar užklausos gaunami iš kliento IP, jei jie nori patenkinti užklausas, tai yra, kad 2-asis serveris mato, kad užklausos gaunamos su 1-ojo serverio IP (ir kurį taikome peradresavimą), tai taip pat būtų ši antroji eilutė:

iptables -t nat -A POSTROUTING -j MASQUERADE

Keletas klausimų ir atsakymų

Pavyzdyje abu kartus naudojau tą patį prievadą (110), tačiau jie be problemų gali nukreipti srautą iš vieno uosto į kitą. Pavyzdžiui, tarkime, kad noriu peradresuoti srautą iš 80 prievado į 443 kitame serveryje, tam būtų:

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

Tai yra iptables, jie gali naudoti visus kitus mums žinomus parametrus, pavyzdžiui, jei norime tik nukreipti srautą iš konkretaus IP, tai būtų pridėjimas -s … Pavyzdžiui, aš peradresuosiu tik srautą, kuris gaunamas iš 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

Arba visas tinklas (/ 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

Mes taip pat galime nurodyti tinklo sąsają su -i :

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

Pabaiga!

Tai, kaip jau sakiau, yra „iptables“, galite pritaikyti tai, kas jau žinoma, kad serveris atliktų būtent tai, ko norite. 😉

Sveiki atvykę!

„DedicatedServer_SubImage“


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   Fer sakė

    Mes taip pat galime tai padaryti iš užkardos, kuri leidžia persiųsti uostą, ar ne? (taikant atitinkamas taisykles).

    1.    KZKG ^ Gaara sakė

      Taip, žinoma, galų gale ugniasienė, tokia kaip „Pfsense“ ar kitos, naudoja „iptables“ iš paskos.

      1.    dunteris sakė

        Tiksliau sakant, „pfsense“ naudoja ne „iptables“, o „pf“, nepamirškite, kad tai yra „bsd“ viduje.

        1.    KZKG ^ Gaara sakė

          O teisingai, mano blogai!

  2.   nicolas sakė

    Labai ačiū už patarimą 🙂

    Turiu porą abejonių:
    1 - Ar pokyčiai yra nuolatiniai? ar jis pamestas perkraunant serverį?
    2 - tame pačiame potinklyje yra keli atvejai (tarkime, A, B ir C). A pavyzdžiu aš taikau taisyklę nukreipdamas srautą į išorinį IP, o bandydamas su B ir C egzempliorių garbanomis, viskas daro stebuklus. Problema ta, kad iš A pavyzdžio tai neveikia. Aš bandžiau naudoti tiek jūsų „ip“, tiek „loopback“ sąsają ir nė vienas neveikia:
    $ iptables -t nat -A PREROUTING -p tcp –port 8080 -j DNAT –į paskirties vietą xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i lo –dport 8080 -j DNAT –į paskirties vietą xxxx: 8080

    $ curl ip-yyyy: 8080 / labas_pasaulis
    curl: (7) Nepavyko prisijungti prie 8080 ip-yyyy prievado: Ryšys atmestas
    $ curl localhost: 8080 / labas_pasaulis
    curl: (7) Nepavyko prisijungti prie vietinio kompiuterio prievado 8080: ryšys atmestas

    Bet kokia idėja, kokia gali būti problema?

    1.    KZKG ^ Gaara sakė

      Taip, pakeitimas prarastas perkraunant, kad to išvengtumėte, turėsite naudoti „iptables-save“ ir „iptables-restore“ ar pan.
      Aš nelabai supratau, ką norite daryti, pvz., A?

      1.    nicolas sakė

        Turiu serverį, kuris palaiko tik ryšius iš tam tikro ip (A serverio), negaliu ar noriu pridėti daugiau ips prie baltojo sąrašo (dėl mastelio problemų), todėl noriu, kad visas srautas į išorinį serverį vyktų minėtas serveris (A).
        Praktiškumo dėlei turiu pasaulines konfigūracijas, kurios apibrėžia, kurį IP naudoti kiekvienai paslaugai, taigi šiuo atveju tai yra kažkas panašaus į „visi, kurie nori naudoti išorinę paslaugą, turi naudoti IP A“.
        Tai buvo sėkmingai pasiekta naudojant šio straipsnio metodą, tačiau susiduriu su problema, kad ją pritaikydamas serveris A negali pasiekti paslaugos naudodamasis savo „ip“ (bet visi kiti serveriai tai daro).
        Kol kas geriausia, ką radau, buvo pridėti atvaizdavimą serverio A / etc / hosts faile, nukreipiant į išorinį ip, perrašant visuotinį nustatymą.

  3.   braibaut sakė

    Labai gerai, jei turiu kitą pašto serverį, galėčiau persiųsti srautą iš 143 prievado iš serverio1 į serverį2 ir el. Laiškai mane pasieks serveryje2, tiesa?

    saludos

    1.    KZKG ^ Gaara sakė

      Teoriškai taip, tai veikia taip. Žinoma, pašto serveris turi būti tinkamai įdiegtas serveryje2 🙂

  4.   MSX sakė

    Tokie įrašai, kuriuos mėgstame skaityti, ačiū!

  5.   abraomas ibarra sakė

    Puikus straipsnis, turiu projektą, kuriame dirbu, ir norėjau užduoti jums klausimą, yra pramoninių jungiklių su NAT funkcija (manau, kad jie naudoja žemiau esančias IP lenteles), norint išversti IP adresą nekeičiant įrangos, pavyzdžiui, turiu serverį 10.10.2.1, kuris bendrauja su 10.10.2.X kompiuteriais ir per jungiklį yra užprogramuotas taip, kad kompiuteris, kurio adresas yra 192.168.2.4, iš serverio būtų matomas kaip 10.10.2.5, jis išvertė tą IP adresą, kad jis būtų matomas Iš kitų kompiuterių, turinčių šį adresą, noriu tai padaryti iš serverio su „Ubuntu“ ar kitu paskirstymu, kokios būtų „iptables“ taisyklės?

  6.   Klubas sakė

    Labai gera info aciu ^ _ ^

  7.   yisus sakė

    Laba diena.
    Man kyla problemų bandant peradresuoti. Aš paaiškinu:
    „Ubuntu“ turiu tarpinį serverį su 2 tinklo plokštėmis:
    eth0 = 192.168.1.1 yra prijungtas prie likusio vietinio tinklo.
    eth1 = 192.168.2.2 yra prijungtas prie maršrutizatoriaus.
    Man reikia visko, kas ateina per eth0, pereiti per eth1, taip pat per tarpinį serverį (aš naudoju „Squid“, kurio numatytasis prievadas yra 3128), o IPTABLES konfigūracijoje nerandu rakto.
    Man nereikia jokių apribojimų, tik tai, kad aplankytų interneto adresų žurnale lieka įrašas.

    Tikiuosi, kad galite man padėti, nes tai gana sudėtinga užduotis, kuri mane jaudina jau porą dienų.

    Ačiū.

  8.   gabriel sakė

    Drauge, aš esu labai naujokas šiuose kituose serveriuose, neturiu supratimo, bet suprantu temą ir mokausi greitai. Mano klausimas yra toks: turiu 2 serverius serv_1 ir serv_2, kuriuos esu prijungęs prie to paties intraneto, šiuose serveriuose turiu sukūręs „owncloud“, Norėčiau atlikti šiuos veiksmus:

    kad tam tikras ips diapazonas, pvz., rangeip_1, kai dedamas prieigos ip prie „cloudcloud“ („ipowncloud“), yra nukreiptas į serv_1, o jei tai yra kitas „rangeip_2“, tas pats „ipowncloud“ yra nukreiptas į serv_2, tai tam, kad būtų rasti 2 serveriai dviejuose skirtinguose miestuose ir ip diapazonai yra skirtingi, bet jie visi yra tame pačiame tinkle, tai būtų pirmoji dalis, antroji būtų aišku - sinchronizuoti šiuos 2 serverius, kad jie būtų veidrodžiai, arba kad jie man tai patartų, kad optimizuotų plotį grupė, prašau, jei man paaiškinsite, kaip tai padaryti žingsnis po žingsnio, o ne super programuotojo režimas = (

  9.   Antonio Carrizosa sakė

    Sveiki, atleiskite, aš turiu jungiklį, atsakingą už visų įrenginių, sudarančių mano tinklą, ryšį, o po to užkarda ir galiausiai išėjimas iš interneto, tai atsitinka taip, kad norėčiau, kad peradresavimas būtų pateiktas perjungti ir neturi pasiekti ugniasienės, nebent prašoma paslauga yra internetas.

  10.   Jonas sakė

    Ar naudodamiesi šiuo metodu galėtumėte peradresuoti HTTPS į HTTP?

  11.   mati sakė

    Sveiki, gal kiek vėlu, bet aš norėjau jūsų paklausti, kaip aš turėčiau kalmarus nekeisti kliento IP, kai noriu prisijungti prie to paties tinklo tinklo serverio?

  12.   Lafatas32 sakė

    Negalvok manęs blogai, kad prašau. Ar tai galima padaryti sistemoje „Windows“?

  13.   kregždė sakė

    Ši informacija man buvo naudinga. Kaip visada, vaikinais galima pasitikėti, kai nerandu ko nors angliškai, dažniausiai baigiu ieškoti ispanų kalba, tokiomis progomis beveik visada ateinu į šią svetainę. Ačiū.

  14.   Seba sakė

    Turiu 4G maršruto parinktuvą, kuris yra tinklo, kurio aš nevaldau, klientas (aišku, aš esu klientas)... šis maršruto parinktuvas yra vartai į tą nuotolinį tinklą per OpenVPN. Be to, minėtas maršrutizatorius atlieka peradresavimo funkciją, kad būtų galima pasiekti vieno iš tų lauko potinklių serverio 80 prievadą.

    Tai buvo deklaracija, kurią turėjau įdėti į maršrutizatorių kaip tinkintą ugniasienės taisyklę „-t nat -A POSTROUTING -j MASQUERADE“

    Ačiū už pagalbą!