Přesměrovat provoz z jedné adresy IP a portu na jinou adresu IP a port

Při správě serverů je něco velmi běžného přesměrování provozu.

Předpokládejme, že máme spuštěný server s určitými službami, ale z jakéhokoli důvodu jednu z těchto služeb změníme (Nevím, například pop3, což je port 110) na jiný server. Normální a nejčastější věcí by bylo jednoduše změnit IP v záznamu DNS, ale pokud někdo používá IP místo subdomény, bude to ovlivněno.

Co dělat? ... jednoduché, přesměrovat provoz, který server přijímá přes tento port, na jiný server se stejným portem.

server-uzel-lan-ethernet

Jak zahájíme přesměrování provozu?

První věc je, že jsme museli povolit přesměrování na server k tomu vložíme následující:

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

Všechny příkazy zobrazené v tomto kurzu musí být provedeny s oprávněními správce, doporučuji je provádět přímo s uživatelem root.

Můžete také použít tento další příkaz, pokud pro vás předchozí nefunguje (stalo se mi to takhle na CentOS):
sysctl net.ipv4.ip_forward=1
Poté restartujeme síť:

service networking restart

V distribucích RPM, jako je CentOS a další, by to bylo:

service nertwork restart

Nyní přejdeme k důležité věci, řekněte to serveru iptables co přesměrovat:

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

To znamená, a po příkladu, který jsem zmínil, předpokládejme, že chceme přesměrovat veškerý provoz, který náš server přijímá přes port 110, na jiný server (např. 10.10.0.2), který bude i nadále přijímat tento provoz prostřednictvím 110 (je to stejná služba):

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šechny pakety nebo požadavky pocházejí z adresy IP klienta, v případě, že budou chtít plavat požadavky, to znamená, že druhý server uvidí, že požadavky přicházejí s adresou IP prvního serveru (a v které použijeme přesměrování), bylo by také dát tento druhý řádek:

iptables -t nat -A POSTROUTING -j MASQUERADE

Několik otázek a odpovědí

V příkladu jsem použil stejný port oba časy (110), ale mohou bez problémů přesměrovat provoz z jednoho portu na druhý. Předpokládejme například, že chci přesměrovat provoz z portu 80 na 443 na jiném serveru, protože by to bylo:

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

To je iptables, mohou použít všechny ostatní parametry, které známe, například pokud chceme přesměrovat pouze provoz z konkrétní IP adresy, přidalo by -s … Například přesměruji pouze provoz, který pochází 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

Nebo celá síť (/ 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

Můžeme také určit síťové rozhraní pomocí -i :

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

Konec!

Toto, jak jsem již řekl, je iptables, můžete použít to, co je již známé, takže server dělá přesně to, co chcete, aby udělal 😉

Zdravím!

DedicatedServer_SubImage


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Fer řekl

    Můžeme to udělat také z brány firewall, která umožňuje přesměrování portů, že? (použití odpovídajících pravidel).

    1.    KZKG ^ Gaara řekl

      Ano, samozřejmě, firewall jako Pfsense nebo další, použijte iptables zezadu.

      1.    lovec řekl

        Přesněji řečeno, pfsense nepoužívá iptables, ale pf, pamatujte, že je to uvnitř BSD.

        1.    KZKG ^ Gaara řekl

          No dobře, můj zlý!

  2.   Nicolas řekl

    Moc děkuji za tip 🙂

    Mám několik pochybností:
    1 - Je změna trvalá? nebo se ztratí při restartu serveru?
    2 - Mám více instancí (řekněme A, B a C) ve stejné podsíti. V instanci A aplikuji pravidlo na směrování provozu na externí IP a testování s kudrlinami z instancí B a C všechno dělá zázraky. Problém je v tom, že z instance A to nefunguje. Snažil jsem se používat jak váš ip, tak rozhraní zpětné smyčky a žádný z nich 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 cíle xxxx: 8080

    $ curl ip-rrrr: 8080 / hello_world
    curl: (7) Nepodařilo se připojit k portu ip-rrrr 8080: Připojení odmítnuto
    $ curl localhost: 8080 / hello_world
    curl: (7) Nepodařilo se připojit k portu localhost 8080: Připojení odmítnuto

    Máte ponětí, v čem může být problém?

    1.    KZKG ^ Gaara řekl

      Ano, změna se při restartu ztratí, abyste se tomu vyhnuli, budete muset použít iptables-save & iptables-restore nebo něco podobného.
      Nechápal jsem úplně, co chcete dělat, instance A?

      1.    Nicolas řekl

        Mám server, který podporuje pouze připojení z konkrétního IP (serveru A), nemohu nebo chci přidat další IPS do seznamu povolených (pro problémy se škálovatelností), takže chci, aby veškerý provoz na externím serveru procházel uvedený server (A).
        Z praktických důvodů mám globální konfigurace, které definují, kterou IP použít pro každou službu, takže v tomto případě jde o něco jako „každý, kdo chce používat externí službu, musí použít IP A“
        Toho bylo úspěšně dosaženo pomocí metody v tomto článku, ale narazil jsem na problém, že při jeho použití nemůže server A přistupovat ke službě pomocí své vlastní adresy IP (ale všechny ostatní servery ano).
        Doposud to nejlepší, co jsem našel, bylo přidat mapování do souboru / etc / hosts serveru A, ukázal na externí IP a přepsal globální nastavení.

  3.   braybaut řekl

    Velmi dobré, pokud mám jiný poštovní server, mohl bych přeposlat provoz z portu 143 ze serveru1 na server2 a e-maily se ke mně dostanou na serveru2, že?

    pozdravy

    1.    KZKG ^ Gaara řekl

      Teoreticky ano, funguje to takhle. Jistě, musíte mít poštovní server správně nainstalovaný na serveru2 🙂

  4.   MSX řekl

    Děkujeme za druh příspěvků, které rádi čteme.

  5.   Abraham ibarra řekl

    Výborný článek, mám projekt, ve kterém pracuji a chtěl jsem se vás na něco zeptat, existují průmyslové přepínače s funkcí NAT (předpokládám, že používají IPTables níže), k překladu IP adresy bez provedení změn v zařízení, příklad, mám Server 10.10.2.1, který komunikuje s počítači 10.10.2.X a prostřednictvím přepínače je naprogramován tak, že počítač, který má adresu 192.168.2.4, je ve skutečnosti viděn ze serveru jako 10.10.2.5, přeložil tuto IP adresu, aby byla viditelná Z ostatních počítačů s touto adresou to chci udělat ze serveru s Ubuntu nebo jinou distribucí, jaká by byla pravidla iptables?

  6.   Boky řekl

    Velmi dobrá informace děkuji ^ _ ^

  7.   yisus řekl

    Dobré odpoledne.
    Mám problém při pokusu o přesměrování. Vysvětluji:
    Mám proxy server v Ubuntu se 2 síťovými kartami:
    eth0 = 192.168.1.1 je připojen ke zbytku místní sítě.
    eth1 = 192.168.2.2 je připojen k routeru.
    Potřebuji vše, co prochází eth0, abych prošel eth1, a také prostřednictvím proxy serveru (používám Squid, jehož výchozí port je 3128), a nemohu najít klíč v konfiguraci IPTABLES.
    Nepotřebuji žádné omezení, pouze to, že v protokolu navštívených webových adres zůstane záznam.

    Doufám, že mi pomůžete, protože je to docela těžkopádný úkol, který mě už pár dní znepokojuje.

    Děkuju.

  8.   Gabriel řekl

    Příteli, na jiné servery jsem velmi nový, nemám ponětí, ale rozumím tématu a rychle se učím, moje otázka je následující Mám 2 servery serv_1 a serv_2, které jsem připojil ke stejnému intranetu, na těchto serverech mám nastavený vlastní cloud Chtěl bych udělat následující:

    že určitý rozsah ips, například rangeip_1 při umisťování přístupového ip do owncloudu (ipowncloud), je směrován na serv_1 a pokud se jedná o jiný rangeip_2 umístěný stejný ipowncloud je směrován na serv_2, tak aby byly umístěny 2 servery ve dvou různých městech a rozsahy IP se liší, ale jsou všechny ve stejné síti, to by byla první část, druhá by byla jasná, je synchronizovat tyto 2 servery tak, aby to byla zrcadla, nebo že mi to doporučují za účelem optimalizace šířky kapela, prosím, pokud mi chcete vysvětlit, jak to udělat krok za krokem, ne super programátorský režim = (

  9.   Antonio Carrizosa řekl

    Dobrý den, omlouvám se, mám přepínač odpovědný za komunikaci všech zařízení, která tvoří moji síť, a poté firewall a nakonec internetový výstup, co se stane, je, že bych chtěl, aby bylo přesměrování uvedeno v přepínač a nemusí se dostat na bránu firewall, pokud není požadovanou službou internet.

  10.   John řekl

    Pomocí této metody můžete přesměrovat HTTPS na HTTP?

  11.   mati řekl

    Ahoj, možná je trochu pozdě, ale chtěl jsem se tě zeptat, jak mám udělat, aby chobotnice nezměnila IP klienta, když se chci připojit k webovému serveru ve stejné síti?

  12.   lafat32 řekl

    Nezacházej se mnou špatně za to, že se ptáš Lze to provést ve Windows?

  13.   Martin řekl

    Tato informace byla pro mě užitečná. Jako vždy, můžete mi věřit, když nemůžu najít něco v angličtině, obvykle skončím hledat ve španělštině, při těch příležitostech téměř vždy přijdu na tento web. Děkuji.

  14.   Seba řekl

    Mám 4G router, který je klientem sítě, kterou nespravuji (samozřejmě jsem klient)… tento router je bránou do té vzdálené sítě přes OpenVPN. Kromě toho uvedený router plní funkci portforwardingu na přístupový port 80 serveru jedné z těchto podsítí v poli.

    Toto bylo prohlášení, které jsem musel vložit do routeru jako vlastní pravidlo firewallu «-t nat -A POSTROUTING -j MASQUERADE»

    Díky za pomoc!