Ridrejtoni trafikun nga një IP dhe port në një IP tjetër dhe port

Diçka shumë e zakonshme kur menaxhon serverat po ridrejton trafikun.

Supozoni se kemi një server me disa shërbime të ekzekutuara, por për çfarëdo arsye ne ndryshojmë një nga ato shërbime (Nuk e di, për shembull pop3 që është porti 110) në një server tjetër. Gjëja normale dhe më e shpeshtë do të ishte thjesht ndryshimi i IP-së në regjistrin DNS, megjithatë nëse dikush po përdorte IP-në në vend të nën-domenit do të ndikohet.

Çfarë të bëjmë? ... thjeshtë, ridrejtoni trafikun e marrë nga ai server përmes asaj porte në një server tjetër me të njëjtën port.

serveri-nyja-lan-ethernet

Si ta fillojmë ridrejtimin e trafikut?

Gjëja e parë është që ne duhet ta kemi mundësuar Parashtroj në server, për këtë do të vendosim sa vijon:

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

Të gjitha komandat e paraqitura në këtë manual duhet të ekzekutohen me privilegje administrative, unë rekomandoj që ato të ekzekutohen drejtpërdrejt me përdoruesin root.

Mund ta përdorni edhe këtë komandë tjetër, në rast se komanda e mëparshme nuk funksionon për ju (më ka ndodhur kështu në një CentOS):
sysctl net.ipv4.ip_forward=1
Pastaj ne do të rinisim rrjetin:

service networking restart

Në distrot RPM si CentOS dhe të tjerët, do të ishte:

service nertwork restart

Tani do të kalojmë tek gjëja e rëndësishme, tregojini serverit iptables çfarë të ridrejtoni:

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

Me fjalë të tjera, dhe duke ndjekur shembullin që përmenda, supozojmë se duam të ridrejtojmë të gjithë trafikun që merr serveri ynë përmes portit 110 në një server tjetër (p.sh: 10.10.0.2), i cili akoma do të marrë atë trafik përmes 110 (është i njëjti shërbim):

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

Serveri 10.10.0.2 do të shohë që të gjitha paketat ose kërkesat vijnë nga IP-ja e klientit, në rast se ata dëshirojnë të notojnë kërkesat, domethënë që serveri i 2-të sheh që kërkesat arrijnë me IP-në e serverit të parë (dhe në të cilën ne zbatojmë ridrejtimin), do të ishte gjithashtu të vendosnim këtë rresht të dytë:

iptables -t nat -A POSTROUTING -j MASQUERADE

Disa pyetje dhe përgjigje

Në shembullin që kam përdorur të njëjtin port në të dy rastet (110), megjithatë ato mund të ridrejtojnë trafikun nga një port në tjetrin pa probleme. Për shembull, supozoni se unë dua të ridrejtoj trafikun nga porta 80 në 443 në një server tjetër, për këtë do të ishte:

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

Kjo është iptables, ata mund të përdorin të gjithë parametrat e tjerë që ne i dimë, për shembull, nëse duam të ridrejtojmë vetëm trafikun nga një IP specifike, do të ishte shtimi i -s … Për shembull, unë do të ridrejtoj vetëm trafikun që vjen nga 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

Ose një rrjet i tërë (/ 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

Ne gjithashtu mund të specifikojmë ndërfaqen e rrjetit me -i :

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

Fund!

Kjo siç e thashë tashmë, është iptables, ju mund të aplikoni atë që dihet tashmë në mënyrë që serveri të bëjë pikërisht atë që dëshironi të bëjë

Përshëndetje!

DedicatedServer_SubImage


20 komente, lini tuajën

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Fer dijo

    Ne gjithashtu mund ta bëjmë këtë nga një firewall që lejon përcjelljen e portit, apo jo? (duke zbatuar rregullat përkatëse).

    1.    KZKG ^ Gaara dijo

      Po sigurisht, në fund një firewall si Pfsense ose të tjerët përdorin iptables nga prapa.

      1.    dhunues dijo

        Për të qenë i saktë pfsense nuk përdor iptables por pf, mos harroni se është një bsd brenda.

        1.    KZKG ^ Gaara dijo

          Oh mirë, e keqja ime!

  2.   Nicolas dijo

    Faleminderit shumë për këshillën

    Kam dy dyshime:
    1 - A është ndryshimi i përhershëm? apo ka humbur gjatë rinisjes së serverit?
    2 - Kam raste të shumta (themi A, B dhe C) në të njëjtën nënrrjet. Në shembull A unë zbatoj rregullin për të trafikuar trafikun në një IP të jashtme, dhe duke testuar me kaçurrela nga instancat B dhe C, gjithçka bën mrekulli. Problemi është se nga shembulli A nuk funksionon. Kam provuar të përdor si ip-in tuaj ashtu edhe ndërfaqen loopback dhe asnjëra nuk funksionon:
    $ iptables -t nat -A PREROUTING -p tcp –port 8080 -j DNAT – në destinacion xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i ja –dport 8080 -j DNAT –në destinacion xxxx: 8080

    $ curl ip-yyyy: 8080 / hello_botë
    curl: (7) Dështoi në lidhjen me ip-yyyy port 8080: Lidhja u refuzua
    $ curl localhost: 8080 / hello_world
    curl: (7) Dështoi për t'u lidhur me portin localhost 8080: Lidhja u refuzua

    Ndonjë ide se cili mund të jetë problemi?

    1.    KZKG ^ Gaara dijo

      Po, ndryshimi ka humbur gjatë rindezjes, do të duhet të përdorni iptables-save & iptables-restore ose diçka të tillë për ta shmangur atë.
      Nuk e kuptova mirë se çfarë doni të bëni, shembull A?

      1.    Nicolas dijo

        Unë kam një server që mbështet vetëm lidhjet nga një ip i veçantë (serveri A), nuk mund ose dua të shtoj më shumë ip në listën e bardhë (për çështje të shkallëzimit), kështu që dua që i gjithë trafiku në serverin e jashtëm të kalojë përmes serveri i thënë (A).
        Për një çështje praktike, unë kam konfigurime globale që përcaktojnë se cilën IP duhet të përdorë për çdo shërbim, kështu që në këtë rast është diçka si "të gjithë që duan të përdorin shërbimin e jashtëm duhet të përdorin IP A"
        E arrita me sukses këtë duke përdorur metodën në këtë artikull, por has problemin që kur e aplikon atë, serveri A nuk mund të ketë qasje në shërbim duke përdorur ip-in e tij (por të gjithë serverat e tjerë e bëjnë këtë).
        Deri më tani, më e mira që gjeta ishte të shtoja hartëzimin në skedarin e serverit A's / etc / hosts, duke treguar IP-në e jashtme, duke mbishkruar vendosjen globale.

  3.   brajbaut dijo

    Shumë mirë, nëse kam një tjetër server postë, mund të përcjell trafikun nga porti 143 nga serveri1 në server2 dhe postat elektronike do të arrijnë tek unë në server2, apo jo?

    të fala

    1.    KZKG ^ Gaara dijo

      Në teori po, funksionon kështu. Sigurisht, duhet të keni të instaluar si duhet serverin e postës në server2

  4.   MSX dijo

    Lloji i postimeve që duam të lexojmë, faleminderit!

  5.   Abraham Ibarra dijo

    Artikull i shkëlqyeshëm, unë kam një projekt në të cilin jam duke punuar dhe doja t'ju bëja një pyetje, ka çelësa industrialë me funksion NAT (supozoj se ata përdorin tabela IP më poshtë), për të përkthyer një adresë IP pa bërë ndryshime në pajisje, një shembull, unë kam një server 10.10.2.1 që komunikon me kompjuterët 10.10.2.X dhe përmes ndërprerësit është programuar në mënyrë që një kompjuter që ka një adresë 192.168.2.4 të shihet në të vërtetë nga serveri si 10.10.2.5, ai përktheu atë adresë IP që të shihet Nga kompjuterët e tjerë me atë adresë, unë dua ta bëj atë nga një server me Ubuntu ose një shpërndarje tjetër, cilat do të ishin rregullat e iptables?

  6.   kuk dijo

    Informacion shume i mire faleminderit ^ _ ^

  7.   Jisusi dijo

    Mirëdita.
    Kam një problem duke u përpjekur të bëj një ridrejtim. Unë shpjegoj:
    Unë kam një server proxy në Ubuntu, me 2 karta rrjeti:
    eth0 = 192.168.1.1 është i lidhur me pjesën tjetër të rrjetit lokal.
    eth1 = 192.168.2.2 është i lidhur me routerin.
    Kam nevojë për gjithçka që vjen përmes eth0 për të kaluar përmes eth1, dhe gjithashtu përmes proxy (unë përdor Squid, porti i paracaktuar i të cilit është 3128), dhe nuk mund ta gjej çelësin në konfigurimin IPTABLES.
    Nuk kam nevojë për kufizime të asnjë lloji, vetëm se një regjistër mbetet në regjistrin e adresave të internetit që vizitohen.

    Shpresoj të mund të më ndihmoni pasi është një detyrë mjaft e rëndë që më shqetëson për disa ditë.

    Ju faleminderit.

  8.   Gabriel dijo

    Shok, unë jam shumë i ri me serverat e tjerë, nuk kam ide, por e kuptoj temën dhe mësoj shpejt, pyetja ime është si vijon kam 2 servera serv_1 dhe serv_2 të cilat i kam lidhur në të njëjtin intranet, në këta serverë kam të vendosur një cloud Unë do të doja të bëja sa vijon:

    që një gamë e caktuar e ip-eve për shembull rangeip_1 kur vendosni një ip hyrje në cloudcloud (ipowncloud) drejtohet drejt serv_1 dhe nëse është një varg tjetërip_2 vendoset i njëjti ipowncloud drejtohet në serv_2, kjo në mënyrë që të vendosen 2 serverat në dy qytete të ndryshme dhe intervalet e ip janë të ndryshme por të gjitha janë në të njëjtin rrjet, kjo do të ishte pjesa e parë, e dyta do të ishte e qartë është të sinkronizoni këto 2 servera në mënyrë që ata të jenë pasqyra ose që ata të më këshillojnë këtë për të optimizuar gjerësinë band, ju lutem, nëse do të më shpjegoni se si ta bëj hap pas hapi, jo modaliteti super programues = (

  9.   Antonio Carrizosa dijo

    Përshëndetje, më falni, unë kam një ndërprerës të ngarkuar për komunikimin e të gjitha pajisjeve që përbëjnë rrjetin tim, dhe pas kësaj një firewall dhe më në fund dalja në internet, çfarë ndodh është që unë do të doja që ridrejtimi të jepet në kaloni dhe nuk duhet të arrijë në firewall përveç nëse shërbimi i kërkuar është interneti.

  10.   John dijo

    Duke përdorur këtë metodë, a mund ta ridrejtoni HTTPS në HTTP?

  11.   mati dijo

    Përshëndetje, mbase është pak vonë, por doja t'ju pyesja, si duhet ta bëj kallamarin të mos modifikoj IP-në e klientit kur dua të lidhem me një server në internet në të njëjtin rrjet?

  12.   lafat32 dijo

    Mos më trajto keq sepse pyeta. A mund të bëhet kjo në Windows?

  13.   Babil dijo

    Ky informacion ka qenë i dobishëm për mua. Si gjithmonë, ju djemve mund t'u besohet, kur nuk gjej diçka në anglisht, zakonisht përfundoj duke kërkuar në spanjisht, në ato raste unë pothuajse gjithmonë vij në këtë sit. Faleminderit.

  14.   Seba dijo

    Unë kam një ruter 4G që është klient i një rrjeti që nuk e menaxhoj (natyrisht, jam klient)… ky ruter është një portë për në atë rrjet të largët përmes OpenVPN. Për më tepër, ruteri i përmendur përmbush funksionin e përcjelljes për të hyrë në portin 80 të serverit të një prej atyre nënrrjeteve në terren.

    Kjo ishte deklarata që duhej të vendosja në ruter si rregull i personalizuar i murit të zjarrit «-t nat -A POSTROUTING -j MASQUERADE»

    Faleminderit per ndihmen!