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.
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
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!
To lahko storimo tudi iz požarnega zidu, ki omogoča posredovanje vrat, kajne? (z uporabo ustreznih pravil).
Ja, seveda, na koncu požarni zid, kot je Pfsense ali drugi, uporabite iptables od zadaj.
Natančneje, pfsense ne uporablja iptables, ampak pf, ne pozabite, da je znotraj bsd.
Oh, prav, hudo!
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?
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?
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.
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
V teoriji ja, deluje tako. Seveda morate imeti na strežniku2 installed pravilno nameščen poštni strežnik
Kakšne objave radi beremo, hvala!
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?
Zelo dobre informacije hvala ^ _ ^
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.
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 = (
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.
Bi lahko s to metodo HTTPS preusmerili na HTTP?
Ž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?
Ne vedite me slabo, če sprašujete. Ali je to mogoče storiti v sistemu Windows?
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.
Imam usmerjevalnik 4G, ki je odjemalec omrežja, ki ga ne upravljam (očitno sem odjemalec) ... ta usmerjevalnik je prehod do tega oddaljenega omrežja prek OpenVPN. Poleg tega usmerjevalnik opravlja funkcijo posredovanja vrat za dostop do vrat 80 strežnika enega od teh podomrežij na terenu.
To je bila izjava, ki sem jo moral dati v usmerjevalnik kot pravilo po meri požarnega zidu «-t nat -A POSTROUTING -j MASQUERADE»
Hvala za pomoč!