Ohjaa liikennettä yhdestä IP: stä ja portista toiseen IP: hen ja porttiin

Jotain hyvin yleistä palvelinten hallinnassa ohjaa liikennettä.

Oletetaan, että meillä on palvelin, jolla on tiettyjä palveluja, mutta jostain syystä muutamme yhtä näistä palveluista (En tiedä, esimerkiksi pop3, joka on portti 110) toiselle palvelimelle. Normaali ja yleisin asia olisi yksinkertaisesti muuttaa IP-osoite DNS-tietueessa, mutta jos joku käyttää IP: tä aliverkkotunnuksen sijaan, se vaikuttaa.

Mitä tehdä? ... yksinkertainen, ohjaa palvelimen tämän portin kautta vastaanottama liikenne toiseen palvelimeen, jolla on sama portti.

palvelin-solmu-lan-ethernet

Kuinka liikenne ohjataan uudelleen?

Ensimmäinen asia on, että meidän on oltava käytössä huolinta palvelimelle, tähän laitamme seuraavat:

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

Kaikki tässä opetusohjelmassa esitetyt komennot on suoritettava järjestelmänvalvojan oikeuksilla, suosittelen, että ne suoritetaan suoraan pääkäyttäjän kanssa.

Voit myös käyttää tätä toista komentoa, jos edellinen ei toimi sinulle (se tapahtui minulle näin CentOS: lla):
sysctl net.ipv4.ip_forward=1
Sitten käynnistämme verkon uudelleen:

service networking restart

RPM-distroissa, kuten CentOS ja muut, se olisi:

service nertwork restart

Nyt siirrymme tärkeään asiaan, kerro palvelimelle läpi iptables mitä uudelleenohjata:

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

Toisin sanoen, ja mainitsemani esimerkin mukaan oletetaan, että haluamme ohjata kaiken liikenteen, jonka palvelimemme vastaanottaa portin 110 kautta, toiselle palvelimelle (Esim .: 10.10.0.2), joka edelleen vastaanottaa liikennettä 110 kautta (se on sama palvelu):

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

10.10.0.2-palvelin näkee, että kaikki paketit tai pyynnöt tulevat asiakkaan IP-osoitteesta, jos he haluavat uida pyynnöt, toisin sanoen että toinen palvelin näkee, että pyynnöt saapuvat ensimmäisen palvelimen IP: n kanssa (ja sovellamme uudelleenohjausta), se olisi myös laittaa tämä toinen rivi:

iptables -t nat -A POSTROUTING -j MASQUERADE

Joitakin kysymyksiä ja vastauksia

Esimerkissä käytin samaa porttia molemmissa yhteyksissä (110), mutta ne voivat ohjata liikennettä portista toiseen ongelmitta. Oletetaan esimerkiksi, että haluan ohjata liikennettä portista 80 toiseen palvelimeen 443, tätä varten se olisi:

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

Tämä on iptables, he voivat käyttää kaikkia muita tunnettuja parametreja, esimerkiksi, jos haluamme ohjata liikennettä vain tietyltä IP: ltä, se lisäisi -s … Esimerkiksi ohjaan vain 10.10.0.51 alkaen tulevan liikenteen:

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

Tai koko verkko (/ 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

Voimme myös määrittää verkkoliitännän -i: llä :

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

Loppu!

Tämä, kuten sanoin jo, on iptables, voit käyttää jo tunnettua niin, että palvelin tekee juuri sen, mitä haluat sen tekevän 😉

Tervehdys!

DedicatedServer_SubImage


Artikkelin sisältö noudattaa periaatteita toimituksellinen etiikka. Ilmoita virheestä napsauttamalla täällä.

19 kommenttia, jätä omasi

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   Fer dijo

    Voimme tehdä tämän myös palomuurista, joka sallii portinsiirron, eikö? (soveltamalla vastaavia sääntöjä).

    1.    KZKG ^ Gaara dijo

      Kyllä tietysti, lopulta palomuuri, kuten Pfsense tai muut, käytä iptablesia takaa.

      1.    metsästäjä dijo

        Tarkemmin sanottuna pfsense ei käytä iptablesia, vaan pf, muista, että se on sisällä oleva bsd.

        1.    KZKG ^ Gaara dijo

          Voi oikein, paha!

  2.   Nicolas dijo

    Kiitos paljon vinkistä tip

    Minulla on pari epäilystä:
    1 - Onko muutos pysyvä? vai onko se kadonnut palvelinta käynnistettäessä uudelleen?
    2 - Minulla on useita instansseja (esimerkiksi A, B ja C) samassa aliverkossa. Esimerkiksi A sovellan sääntöä liikenteen ohjaamiseen ulkoiseen IP-osoitteeseen, ja testaamalla esiintymien B ja C kiharoilla kaikki tekee ihmeitä. Ongelmana on, että esimerkistä A se ei toimi. Yritin käyttää sekä ip: tä että loopback-käyttöliittymää, eivätkä kumpikaan toimi:
    $ iptables -t nat -A PREROUTING -p tcp –port 8080 -j DNAT –kohteeseen xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i lo –port 8080 -j DNAT –kohteeseen xxxx: 8080

    $ curl ip-yyyy: 8080 / hei_maailma
    käpristyminen: (7) Yhteyden muodostaminen ip-yyyy-porttiin 8080 epäonnistui: Yhteys hylätty
    $ curl localhost: 8080 / hei_maailma
    käpristyminen: (7) Yhteyden muodostaminen paikallishost-porttiin 8080 epäonnistui: Yhteys hylätty

    Onko mitään käsitystä siitä, mikä ongelma voi olla?

    1.    KZKG ^ Gaara dijo

      Kyllä, muutos menetetään uudelleenkäynnistyksen yhteydessä, sinun on käytettävä iptables-save & iptables-restore tai jotain vastaavaa sen välttämiseksi.
      En oikein ymmärtänyt mitä haluat tehdä, esimerkki A?

      1.    Nicolas dijo

        Minulla on palvelin, joka tukee vain yhteyksiä tietyltä ip: ltä (palvelimet A), en voi tai halua lisätä lisää ips: ää sallittujen luetteloon (skaalautuvuusongelmia varten), joten haluan kaiken ulkoisen palvelimen liikenteen kulkevan mainitun palvelimen läpi ).
        Käytännössä minulla on maailmanlaajuiset kokoonpanot, jotka määrittävät, mitä IP: tä kullekin palvelulle käytetään, joten tässä tapauksessa kyseessä on jokaisenlainen "kaikkien, jotka haluavat käyttää ulkoista palvelua, on käytettävä IP A: ta"
        Olen onnistunut saavuttamaan tämän käyttämällä tämän artikkelin menetelmää, mutta törmän ongelmaan, että palvelinta A ei voi käyttää palvelua käyttämällä omaa ip: tä (mutta kaikki muut palvelimet tekevät sen).
        Toistaiseksi paras, mitä löysin, oli lisätä kartoitus palvelimen A / etc / hosts-tiedostoon osoittamalla ulkoiseen ip: hen, ohittamalla globaali asetus.

  3.   jarrutus dijo

    Erittäin hyvä, jos minulla on toinen postipalvelin, voisin siirtää liikenteen portista 143 palvelimelta1 palvelimelle2 ja posti saapuu palvelimelle2, eikö?

    terveiset

    1.    KZKG ^ Gaara dijo

      Teoriassa kyllä, se toimii näin. Toki, sähköpostipalvelimen on oltava asennettuna oikein palvelimelle2 🙂

  4.   MSX dijo

    Sellaiset viestit, joita haluamme lukea, kiitos!

  5.   Abraham Ibarra dijo

    Erinomainen artikkeli, minulla on projekti, jossa työskentelen, ja halusin kysyä teiltä kysymyksen, on teollisia kytkimiä, joissa on NAT-toiminto (luulen, että he käyttävät alla olevia IPTable-taulukoita) IP-osoitteen kääntämiseksi tekemättä muutoksia laitteisiin, Esimerkiksi, minulla on palvelin 10.10.2.1, joka on yhteydessä 10.10.2.X-tietokoneisiin ja kytkimen kautta on ohjelmoitu siten, että tietokone, jolla on osoite 192.168.2.4, nähdään palvelimelta todella nimellä 10.10.2.5, se käänsi kyseisen IP-osoitteen nähtävissä oleva osoite Haluan tehdä sen muilta tietokoneilta, joilla on tämä osoite, palvelimelta, jossa on Ubuntu tai jokin muu jakelu, mitä iptables-säännöt olisivat?

  6.   Kuk dijo

    Erittäin hyvä info kiitos ^ _ ^

  7.   Yisus dijo

    Hyvää päivää.
    Minulla on ongelma uudelleenohjauksen yrittämisessä. Minä selitän:
    Minulla on välityspalvelin Ubuntussa, 2 verkkokortilla:
    eth0 = 192.168.1.1 on kytketty muuhun paikalliseen verkkoon.
    eth1 = 192.168.2.2 on kytketty reitittimeen.
    Tarvitsen kaiken eth0: n kautta kulkevan eth1: n ja myös välityspalvelimen kautta (käytän Squidiä, jonka oletusportti on 3128), enkä löydä avainta IPTABLES-kokoonpanosta.
    En tarvitse minkäänlaisia ​​rajoituksia, vain, että tietue jää vierailemiesi verkko-osoitteiden lokiin.

    Toivon, että voit auttaa minua, koska se on melko hankala tehtävä, joka on huolestuttanut minua pari päivää.

    Kiitos.

  8.   Gabriel dijo

    Ystävä, olen hyvin uusi muille palvelimille, minulla ei ole aavistustakaan, mutta ymmärrän aiheen ja opin nopeasti, kysymykseni on seuraava. Minulla on 2 palvelinta serv_1 ja serv_2, jotka olen kytkenyt samaan intranetiin, näissä palvelimissa minulla on Oma pilvi perustettu, haluaisin tehdä seuraavat:

    että tietty alue ips, esimerkiksi rangeip_1, kun asetetaan pääsy-ip omaan pilveen (ipowncloud), on suunnattu palvelimelle_1 ja jos se on toinen rangeip_2, sijoitettu sama ipowncloud ohjataan serv_2: lle, jotta 2 palvelinta löytyvät kahdessa eri kaupungissa ja IP-alueet ovat erilaiset, mutta ne kaikki ovat samassa verkossa, se olisi ensimmäinen osa, toinen olisi selvää on synkronoida nämä 2 palvelinta niin, että ne ovat peilejä tai että neuvoo minua optimoidaksesi leveyskaistan, ole hyvä, jos aiot selittää minulle, miten se tehdään askel askeleelta, älä superohjelmointitila = (

  9.   Antonio Carrizosa dijo

    Hei, anteeksi, minulla on kytkin, joka vastaa kaikkien verkkoni muodostavien laitteiden viestinnästä, ja tämän jälkeen palomuuri ja lopulta Internet-poistuminen, mitä tapahtuu, haluaisin, että uudelleenohjaus annetaan kytkimessä eikä sen tarvitse päästä palomuuriin, ellei pyydetty palvelu ole Internet.

  10.   Johannes dijo

    Voisitko tällä menetelmällä ohjata HTTPS: n HTTP: ksi?

  11.   mati dijo

    Hei, ehkä on vähän myöhäistä, mutta halusin kysyä sinulta, kuinka minun pitäisi saada kalmari olemaan muuttamatta asiakkaan IP-osoitetta, kun haluan muodostaa yhteyden saman verkon verkkopalvelimeen?

  12.   lafat32 dijo

    Älä kohtele minua huonosti kysyessäni. Voiko tämän tehdä Windowsissa?

  13.   räystäspääsky dijo

    Nämä tiedot ovat olleet hyödyllisiä minulle. Kuten aina, teihin voidaan luottaa, kun en löydä jotain englanniksi, pääsen yleensä etsimään espanjaa, noissa tapauksissa tulen melkein aina tälle sivustolle.