Átirányítja a forgalmat egyik IP-ről és portról egy másik IP-re és portra

A szerverek kezelésénél valami nagyon általános a forgalom átirányítása.

Tegyük fel, hogy van egy szerverünk, amely bizonyos szolgáltatásokat futtat, de bármilyen okból megváltoztatjuk az egyik szolgáltatást (Nem tudom, például a pop3, ami a 110-es port) egy másik szerverre. A normális és leggyakoribb dolog az lenne, ha egyszerűen megváltoztatná az IP-címet a DNS-rekordban, azonban ha valaki az aldomain helyett az IP-t használta, akkor ez hatással lesz.

Mit kell tenni? ... egyszerű, irányítsa át a forgalmat, amelyet a szerver az adott porton keresztül kap, egy másik, ugyanazon porttal rendelkező kiszolgálóra.

server-node-lan-ethernet

Hogyan kezdhetjük el a forgalom átirányítását?

Az első dolog az, hogy engedélyeznünk kell a szállítmányozás a szerveren, ehhez a következőket tesszük:

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

Az oktatóanyagban bemutatott összes parancsot adminisztrátori jogosultságokkal kell végrehajtani, javasoljuk, hogy közvetlenül a root felhasználóval hajtsák végre őket.

Használhatja ezt a másik parancsot is, ha az előző nem működik az Ön számára (így történt velem egy CentOS-on):
sysctl net.ipv4.ip_forward=1
Ezután újraindítjuk a hálózatot:

service networking restart

Az RPM diszkókban, mint a CentOS és mások, ez a következő lenne:

service nertwork restart

Most áttérünk a fontos dologra, mondd el a szervernek iptables mit kell átirányítani:

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

Vagyis, és az általam említett példát követve tegyük fel, hogy a szerverünk által a 110-es porton keresztül kapott összes forgalmat át akarjuk irányítani egy másik kiszolgálóra (pl .: 10.10.0.2), amely továbbra is fogadni fogja ezt a forgalmat 110-en keresztül (ugyanaz a szolgáltatás):

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

A 10.10.0.2 szerver látni fogja, hogy az összes csomag vagy kérés az ügyfél IP-jéből származik, abban az esetben, ha meg akarják úszni a kéréseket, vagyis hogy a 2. szerver látja, hogy a kérések az 1. szerver IP-jével érkeznek (és a az átirányítást alkalmazzuk), ez a második sor is:

iptables -t nat -A POSTROUTING -j MASQUERADE

Néhány kérdés és válasz

A példában mindkét alkalommal ugyanazt a portot használtam (110), azonban gond nélkül át tudják irányítani az egyik portról a másikra a forgalmat. Tegyük fel például, hogy át akarom irányítani a forgalmat a 80-as portról a 443-ra egy másik szerveren, ehhez ez a következő:

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

Ez így van iptables, használhatják az összes többi ismert paramétert, például, ha csak egy forgalomirányítást szeretnénk átirányítani egy adott IP-ről, akkor … Például csak a 10.10.0.51-től származó forgalmat irányítom át:

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

Vagy egy teljes hálózat (/ 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

Az -i kapcsolóval megadhatjuk a hálózati interfészt is :

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

Vége!

Ez, amint már mondtam, az iptables, alkalmazhatod a már ismerteket, hogy a szerver pontosan azt tegye, amit szeretnél 😉

Üdvözlet!

DedicatedServer_SubImage


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Fer dijo

    Megtehetjük ezt egy tűzfalból is, amely lehetővé teszi a port továbbítását, nem? (a megfelelő szabályok alkalmazása).

    1.    KZKG ^ Gaara dijo

      Igen, természetesen, a végén egy olyan tűzfal, mint a Pfsense vagy mások, hátulról használjon iptable-eket.

      1.    vadász dijo

        Pontosabban: a pfsense nem iptable-t használ, hanem pf, ne feledje, hogy ez egy bsd belül.

        1.    KZKG ^ Gaara dijo

          Ó, igaz, rossz!

  2.   Nicolas dijo

    Nagyon köszönöm a tippet 🙂

    Van két kételyem:
    1 - A változás állandó? vagy elveszik a szerver újraindításakor?
    2 - Több példányom van (mondjuk A, B és C) ugyanazon az alhálózaton. Az A példában a szabályt a forgalom külső IP-re irányításához alkalmazom, és a B és C példányok fürtjeivel tesztelve minden csodákra képes. A probléma az, hogy az A példánytól nem működik. Megpróbáltam használni mind az ip-t, mind a loopback felületet, és egyik sem működik:
    $ iptables -t nat -A PREROUTING -p tcp –port 8080 -j DNAT –célú xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i lo –port 8080 -j DNAT –célú xxxx: 8080

    $ curl ip-éééé: 8080 / hello_world
    curl: (7) Nem sikerült csatlakozni a 8080 ip-éééé porthoz: A kapcsolat elutasítva
    $ curl localhost: 8080 / hello_world
    curl: (7) Nem sikerült csatlakozni a 8080 localhost porthoz: A kapcsolatot elutasítottuk

    Van ötleted, mi lehet a probléma?

    1.    KZKG ^ Gaara dijo

      Igen, az újraindításkor a változás elveszett, ennek elkerülése érdekében az iptables-save & iptables-restore vagy valami hasonló eszközt kell használnia.
      Nem igazán értettem, mit akarsz csinálni, például A?

      1.    Nicolas dijo

        Van egy szerverem, amely csak egy adott ip-től (A szerver) történő csatlakozásokat támogatja, nem tudok vagy akarok további ips-eket felvenni az engedélyezőlistára (méretezhetőségi problémák esetén), ezért azt akarom, hogy a külső szerverre irányuló összes forgalom átmenjen az említett szerver (A).
        Gyakorlati szempontból globális konfigurációim vannak, amelyek meghatározzák, hogy melyik IP-t kell használni az egyes szolgáltatásokhoz, ezért ebben az esetben valami olyasmi, hogy "mindenkinek, aki a külső szolgáltatást akarja használni, IP-t kell használnia".
        Sikeresen elértem ezt a cikkben szereplő módszerrel, de abban a problémában ütköztem, hogy alkalmazásakor az A szerver nem érheti el a szolgáltatást a saját ip-jével (de az összes többi szerver igen).
        Eddig a legjobbnak azt találtam, hogy hozzáadtam a leképezést az A szerver / etc / hosts fájljába, rámutatva a külső ip-re, felülírva a globális beállítást.

  3.   braybaut dijo

    Nagyon jó, ha van másik levelező szerverem, akkor továbbíthatom a forgalmat a 143-as portról az 1. szerverről a 2. kiszolgálóra, és az e-mailek eljutnak a 2. szerverre, igaz?

    Üdvözlet

    1.    KZKG ^ Gaara dijo

      Elméletileg igen, ez így működik. Biztos, hogy a levelező szervert megfelelően kell telepíteni a 2. szerverre

  4.   MSX dijo

    Azokat a bejegyzéseket, amelyeket szívesen olvasunk, köszönöm!

  5.   Ábrahám ibarra dijo

    Kiváló cikk, van egy projektem, amelyben dolgozom, és kérdezni akartam nektek, vannak olyan ipari kapcsolók, amelyek NAT funkcióval rendelkeznek (feltételezem, hogy az alábbiakban IPTable-eket használnak), hogy IP-címet fordítsanak le anélkül, hogy változtatnának a berendezésen, például van egy szerverem A 10.10.2.1.X számítógépekkel és a kapcsolón keresztül kommunikáló 10.10.2 úgy van beprogramozva, hogy egy 192.168.2.4 címmel rendelkező számítógépet a szerverről ténylegesen 10.10.2.5-nek tekintsenek, és lefordította az IP-címet. A többi, ezzel a címmel rendelkező számítógépről egy Ubuntu vagy más disztribúcióval rendelkező szerverről szeretném megtenni, mi lenne az iptables szabálya?

  6.   kuk dijo

    Nagyon jó információ köszönöm ^ _ ^

  7.   yisus dijo

    Jó napot kívánok.
    Problémám van egy átirányítással. Elmagyarázom:
    Van egy proxykiszolgálóm az Ubuntuban, 2 hálózati kártyával:
    Az eth0 = 192.168.1.1 a helyi hálózat többi részéhez csatlakozik.
    eth1 = 192.168.2.2 csatlakozik a routerhez.
    Szükségem van mindarra, ami az eth0-n keresztül érkezik, hogy áthaladhassak az eth1-en, és a proxy-n keresztül is (a Squid-et használom, amelynek alapértelmezett portja 3128), és nem találom a kulcsot az IPTABLES konfigurációban.
    Nincs szükségem semmiféle korlátozásra, csak az, hogy egy rekord marad a meglátogatott webcímek naplójában.

    Remélem, tudsz segíteni nekem, mivel ez elég nehézkes feladat, amely már pár napja aggaszt.

    Köszönöm.

  8.   Gabriel dijo

    Barátom, nagyon új vagyok a többi szerver előtt, fogalmam sincs, de megértem a témát és gyorsan megtanulom, a kérdésem a következő: 2 szerverem és szerverem1 van, amelyeket ugyanarra az intranetre csatlakoztattam, ezekben a szerverekben saját felhőm van beállítva, A következőket szeretném tenni:

    hogy az ips egy bizonyos tartománya, például a rangeip_1, amikor hozzáférési ip-t helyez a saját felhőhöz (ipowncloud), a serv_1 felé irányul, és ha ez egy másik rangeip_2, akkor ugyanaz az ipowncloud van elhelyezve a serv_2 felé, ez annak érdekében, hogy a 2 kiszolgáló megtalálható legyen két különböző városban és az IP-tartományok különböznek, de mind ugyanazon a hálózaton vannak, ez lenne az első rész, a második egyértelmű lenne, ha szinkronizálnánk ezt a 2 szervert úgy, hogy tükrök legyenek, vagy hogy ezt tanácsolják nekem a szélesség optimalizálása érdekében zenekar, kérlek, ha elmagyarázod nekem, hogyan kell ezt lépésről lépésre végrehajtani, ne a szuper programozó módba = (

  9.   Antonio Carrizosa dijo

    Üdvözlet, bocsásson meg, van egy kapcsolóm, amely a hálózatomat alkotó összes eszköz kommunikációját irányítja, és ezek után egy tűzfal és végül az internet kijárata történik, ami azt jelenti, hogy szeretném, ha az átirányítást megadnák a kapcsolót, és csak akkor kell elérnie a tűzfalat, ha a kért szolgáltatás internet.

  10.   juan dijo

    Ezzel a módszerrel át tudná irányítani a HTTPS-t HTTP-re?

  11.   mati dijo

    Szia, lehet, hogy már késő, de azt akartam kérdezni tőled, hogyan tegyem a tintahalat, hogy ne módosítsam az ügyfél IP-jét, amikor ugyanazon a hálózaton szeretnék csatlakozni egy webkiszolgálóhoz?

  12.   lafat32 dijo

    Ne bánj velem rosszul, mert kérdeztem. Meg lehet ezt csinálni Windows rendszerben?

  13.   Márton dijo

    Ez az információ hasznos volt számomra. Mint mindig, bennetek is megbízhatóak lehetnek, amikor nem találok valamit angolul, általában spanyolul keresek, ezeken az alkalmakkor szinte mindig erre a webhelyre jövök. Köszönöm.

  14.   Seba dijo

    Van egy 4G útválasztóm, amely egy olyan hálózat kliense, amelyet nem én kezelek (nyilván kliens vagyok)… ez a router egy átjáró a távoli hálózathoz az OpenVPN-en keresztül. Ezen túlmenően az említett útválasztó teljesíti a porttovábbítás funkcióját az egyik ilyen alhálózat szerverének 80-as portjához való hozzáféréshez.

    Ez volt az a deklaráció, amelyet be kellett helyeznem a routerbe egyéni tűzfalszabályként: «-t nat -A POSTROUTING -j MASQUERADE»

    Köszönöm a segítséget!