Presmerujte prenos z jednej adresy IP a portu na inú adresu IP a port

Pri správe serverov je niečo veľmi bežné presmerovanie prenosu.

Predpokladajme, že máme spustený server s určitými službami, ale z akýchkoľvek dôvodov jednu z týchto služieb zmeníme (Neviem, napríklad pop3, čo je port 110) na iný server. Bežnou a najbežnejšou vecou by bola jednoduchá zmena adresy IP v zázname DNS, avšak ak by niekto používal adresu IP namiesto subdomény, bude to ovplyvnené.

Čo robiť? ... jednoduché, presmerujte prenos prijatý týmto serverom cez tento port na iný server s rovnakým portom.

server-uzol-lan-ethernet

Ako začneme presmerovať prenos?

Prvá vec je, že sme museli povoliť presmerovanie na server vložíme toto:

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

Všetky príkazy zobrazené v tomto návode musia byť vykonané s oprávneniami správcu. Odporúčam ich vykonávať priamo s používateľom root.

Môžete tiež použiť tento ďalší príkaz, ak pre vás predchádzajúci nefunguje (stalo sa mi to takto na CentOS):
sysctl net.ipv4.ip_forward=1
Potom reštartujeme sieť:

service networking restart

V distribúciách RPM ako CentOS a ďalších by to bolo:

service nertwork restart

Teraz prejdeme k dôležitej veci, povedzte to serveru iptables čo presmerovať:

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

Inými slovami, a po príklade, ktorý som spomenul, predpokladajme, že chceme presmerovať všetku komunikáciu, ktorú náš server prijíma cez port 110, na iný server (napr .: 10.10.0.2), ktorá bude naďalej prijímať uvedenú premávku cez 110 (je to rovnaka sluzba):

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

Server 10.10.0.2 uvidí, že všetky pakety alebo požiadavky pochádzajú z adresy IP klienta, v prípade, že chcú plávať požiadavky, to znamená, že druhý server vidí, že žiadosti prichádzajú s adresou IP prvého servera (a v ktoré použijeme presmerovanie), bolo by to tiež vložiť tento druhý riadok:

iptables -t nat -A POSTROUTING -j MASQUERADE

Niekoľko otázok a odpovedí

V príklade som pri oboch príležitostiach použil rovnaký port (110), môžu však bez problémov presmerovať prenos z jedného portu na druhý. Predpokladajme napríklad, že chcem presmerovať prenos z portu 80 na 443 na inom serveri, pretože by to bolo:

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

To je iptables, môžu použiť všetky ostatné parametre, ktoré poznáme, napríklad ak chceme iba presmerovať prenos z konkrétnej adresy IP, pridalo by to -s ... Napríklad presmerujem iba prenos pochádzajúci z 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

Alebo celá sieť (/ 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

Sieťové rozhranie môžeme určiť aj pomocou -i :

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

Koniec!

Toto, ako som už povedal, je iptables, môžete použiť to, čo je už známe, aby server urobil presne to, čo chcete. 😉

Zdravím!

DedicatedServer_SubImage


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   Fer dijo

    Môžeme to urobiť aj z brány firewall, ktorá umožňuje presmerovanie portov, nie? (uplatnenie zodpovedajúcich pravidiel).

    1.    KZKG ^ Gaara dijo

      Áno, samozrejme, nakoniec firewall ako Pfsense alebo iné, použite iptables zozadu.

      1.    lovec dijo

        Aby som bol presný, pfsense nepoužíva iptables, ale pf, pamätajte, že vo vnútri je bsd.

        1.    KZKG ^ Gaara dijo

          No dobre, môj zlý!

  2.   Nicolas dijo

    Dakujem pekne za tip 🙂

    Mám pár pochybností:
    1 - Je zmena trvalá? alebo sa stratí pri reštartovaní servera?
    2 - Mám viac inštancií (povedzme A, B a C) v tej istej podsieti. V prípade A použijem pravidlo na smerovanie prenosu na externú IP a pri pokusoch s kučerami z inštancií B a C všetko robí zázraky. Problém je v tom, že z príkladu A to nefunguje. Snažil som sa použiť rozhranie ip aj loopback a ani jeden nefunguje:
    $ iptables -t nat -A PREROUTING -p tcp –dport 8080 -j DNAT –to-destination xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i lo –dport 8080 -j DNAT - do cieľa xxxx: 8080

    $ curl ip-rrrr: 8080 / hello_world
    curl: (7) Nepodarilo sa pripojiť k portu ip-rrrr 8080: Pripojenie odmietnuté
    $ curl localhost: 8080 / hello_world
    curl: (7) Nepodarilo sa pripojiť k portu localhost 8080: Pripojenie odmietnuté

    Tušíte, v čom môže byť problém?

    1.    KZKG ^ Gaara dijo

      Áno, zmena sa pri reštarte stratí, aby ste sa tomu vyhli, budete musieť použiť iptables-save & iptables-restore alebo niečo podobné.
      Nerozumel som celkom tomu, čo chceš robiť, príklad A?

      1.    Nicolas dijo

        Mám server, ktorý podporuje iba pripojenia z konkrétnej adresy IP (server A), nemôžem alebo nechcem pridať viac ips do bielej listiny (kvôli problémom so škálovateľnosťou), takže chcem, aby všetka komunikácia na externý server prechádzala cez uvedený server (A ).
        Z praktického hľadiska mám globálne konfigurácie, ktoré definujú, ktorá adresa IP sa má použiť pre každú službu, takže v tomto prípade je to niečo ako „každý, kto chce používať externú službu, musí používať adresu IP A“
        Úspešne som to dosiahol pomocou metódy v tomto článku, narazil som však na problém, že pri jeho použití server A nemôže pristupovať k službe pomocou vlastnej adresy IP (ale všetky ostatné servery to umožňujú).
        Zatiaľ to najlepšie, čo som našiel, bolo pridať mapovanie do súboru / etc / hosts servera A, ukazujúceho na externú ip a prepísať globálne nastavenie.

  3.   braybaut dijo

    Veľmi dobré, ak mám iný poštový server, mohol by som preposlať prenos z portu 143 zo servera1 na server2 a pošta sa dostane na server2, nie?

    pozdravy

    1.    KZKG ^ Gaara dijo

      Teoreticky áno, funguje to takto. Iste, musíte mať poštový server správne nainštalovaný na server2 🙂

  4.   MSX dijo

    Ďakujeme za príspevky, ktoré radi čítame.

  5.   abrahám ibarra dijo

    Výborný článok, mám projekt, v ktorom pracujem a chcel som sa vás na niečo opýtať, existujú priemyselné prepínače s funkciou NAT (predpokladám, že používajú IPTables nižšie), na preklad IP adresy bez vykonania zmien na zariadení, príklad, mám Server 10.10.2.1, ktorá komunikuje s počítačmi 10.10.2.X a prostredníctvom prepínača je naprogramovaná tak, aby počítač, ktorý má adresu 192.168.2.4, bol zo servera skutočne videný ako 10.10.2.5, preložil túto IP adresu tak, aby bola viditeľná Z ostatných počítačov s touto adresou to chcem urobiť zo servera s Ubuntu alebo inej distribúcie, aké by boli pravidlá iptables?

  6.   kuk dijo

    Veľmi dobrá informácia ďakujem ^ _ ^

  7.   yisus dijo

    Dobré popoludnie.
    Mám problém so pokusom o vykonanie presmerovania. Vysvetlím:
    Mám proxy server v Ubuntu s 2 sieťovými kartami:
    eth0 = 192.168.1.1 je pripojený k zvyšku lokálnej siete.
    eth1 = 192.168.2.2 je pripojený k smerovaču.
    Potrebujem všetko, čo príde cez eth0, aby som prešiel cez eth1, a tiež cez proxy (používam Squid, ktorého predvolený port je 3128), a nemôžem nájsť kľúč v konfigurácii IPTABLES.
    Nepotrebujem nijaké obmedzenie, iba to, že v protokole navštívených webových adries zostáva záznam.

    Dúfam, že mi pomôžete, pretože je to dosť ťažkopádna úloha, ktorá ma už pár dní znepokojuje.

    Ďakujem.

  8.   gabriel dijo

    Priateľ, s ostatnými servermi som veľmi nový, netuším, ale téme rozumiem a rýchlo sa učím. Moja otázka znie: Mám 2 servery serv_1 a serv_2, ktoré som pripojil k rovnakému intranetu, na týchto serveroch mám nastavený vlastný cloud, chcel by som urobiť nasledovné:

    že určitý rozsah ips, napríklad rangeip_1 pri umiestňovaní prístupovej IP adresy do vlastného cloudu (ipowncloud), je smerovaný na serv_1 a ak ide o iný rangeip_2 umiestnený ten istý ipowncloud je smerovaný na serv_2, tak aby boli umiestnené dva servery v dvoch rôznych mestách a rozsahy adries IP sú rôzne, ale všetky sú v rovnakej sieti, to by bola prvá časť, druhou by bolo jasné, je synchronizácia týchto 2 serverov tak, aby boli zrkadlami alebo aby mi to poradili, aby pre optimalizáciu šírkového pásma prosím, ak mi chcete vysvetliť, ako to robiť krok za krokom, nie režim super programátora = (

  9.   Antonio Carrizosa dijo

    Dobrý deň, prepáčte, mám prepínač zodpovedný za komunikáciu všetkých zariadení, ktoré tvoria moju sieť, a po tomto firewall a nakoniec výstup z Internetu, čo sa stane, je, že by som chcel, aby bolo v prepínači dané presmerovanie a nemusí sa pripojiť k bráne firewall, pokiaľ požadovanou službou nie je internet.

  10.   John dijo

    Pomocou tejto metódy môžete presmerovať protokol HTTPS na protokol HTTP?

  11.   mati dijo

    Ahoj, možno je trochu neskoro, ale chcel som sa ťa opýtať, ako mám urobiť, aby squid neupravoval IP klienta, keď sa chcem pripojiť k webovému serveru v rovnakej sieti?

  12.   lafat32 dijo

    Nerobte so mnou zle, že som sa pýtal. Dá sa to urobiť vo Windows?

  13.   martin dijo

    Tieto informácie boli pre mňa užitočné. Ako vždy, môžete mi dôverovať, že keď nenájdem niečo v angličtine, zvyčajne skončím hľadaním v španielčine, pri tých príležitostiach takmer vždy prídem na túto stránku. Ďakujem.

  14.   Seba dijo

    Mám 4G router, ktorý je klientom siete, ktorú nespravujem (samozrejme, že som klient)... tento router je bránou do tejto vzdialenej siete cez OpenVPN. Okrem toho uvedený router plní funkciu portforwardovania na prístupový port 80 servera jednej z týchto podsietí v poli.

    Toto bolo vyhlásenie, ktoré som musel vložiť do smerovača ako vlastné pravidlo brány firewall «-t nat -A POSTROUTING -j MASQUERADE»

    Vdaka za pomoc!