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.
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
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ę!
Mes taip pat galime tai padaryti iš užkardos, kuri leidžia persiųsti uostą, ar ne? (taikant atitinkamas taisykles).
Taip, žinoma, galų gale ugniasienė, tokia kaip „Pfsense“ ar kitos, naudoja „iptables“ iš paskos.
Tiksliau sakant, „pfsense“ naudoja ne „iptables“, o „pf“, nepamirškite, kad tai yra „bsd“ viduje.
O teisingai, mano blogai!
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?
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?
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ą.
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
Teoriškai taip, tai veikia taip. Žinoma, pašto serveris turi būti tinkamai įdiegtas serveryje2 🙂
Tokie įrašai, kuriuos mėgstame skaityti, ačiū!
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?
Labai gera info aciu ^ _ ^
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ū.
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 = (
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.
Ar naudodamiesi šiuo metodu galėtumėte peradresuoti HTTPS į HTTP?
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?
Negalvok manęs blogai, kad prašau. Ar tai galima padaryti sistemoje „Windows“?
Š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ū.
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ą!