Пренасочете го сообраќајот од една IP и порта на друга IP и порта

Нешто многу често кога управувате со сервери е пренасочување на сообраќајот.

Да претпоставиме дека имаме сервер со извршени одредени услуги, но од која било причина сменивме една од тие услуги (Не знам, на пример поп3 што е порта 110) на друг сервер. Нормалното и најчестото нешто би било едноставно да ја смениме IP-то во записот DNS, но доколку некој користеше IP наместо во поддоменот, тоа ќе влијае.

Што да се прави? ... едноставно, пренасочете го сообраќајот што го прима серверот преку таа порта на друг сервер со иста порта.

сервер-јазол-LAN-етернет

Како да започнеме да го пренасочуваме сообраќајот?

Првото нешто е што мора да го овозможивме товар на серверот, за ова ќе го ставиме следново:

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

Сите команди прикажани во ова упатство мора да бидат извршени со административни привилегии, препорачувам да бидат извршени директно со корисничкиот корен.

Може да ја користите и оваа друга команда, во случај претходната да не работи за вас (ми се случи вака на CentOS):
sysctl net.ipv4.ip_forward=1
Потоа ќе ја рестартираме мрежата:

service networking restart

Во дистрибуциите на вртежи во минута како CentOS и други, тоа би било:

service nertwork restart

Сега ќе преминеме на важната работа, кажете му на серверот преку iptables што да се пренасочи:

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

Тоа е, и следејќи го примерот што го споменав, да претпоставиме дека сакаме да го пренасочиме целиот сообраќај што нашиот сервер го прима преку портата 110 на друг сервер (пр: 10.10.0.2), кој сепак ќе го прими тој сообраќај преку 110 (тоа е иста услуга):

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

Серверот 10.10.0.2 ќе види дека сите пакети или барања доаѓаат од IP на клиентот, во случај да сакаат да ги пливаат барањата, односно дека 2-ри сервер гледа дека барањата пристигнуваат со IP на 1-ви сервер (и во што ја применуваме пренасочување), исто така, ќе биде да се стави оваа втора линија:

iptables -t nat -A POSTROUTING -j MASQUERADE

Неколку прашања и одговори

Во примерот, јас го користев истиот порт двата пати (110), сепак тие можат да го пренасочат сообраќајот од една до друга порта без проблеми. На пример, да претпоставиме дека сакам да го пренасочам сообраќајот од портата 80 на 443 на друг сервер, за ова би било:

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

Ова е iptables, тие можат да ги користат сите други параметри што ги знаеме, на пример, ако сакаме само да го пренасочиме сообраќајот од одредена IP, тоа ќе биде со додавање на -s … На пример, ќе го пренасочам само сообраќајот што доаѓа од 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

Или цела мрежа (/ 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

Можеме да го одредиме мрежниот интерфејс со -i :

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

Крај!

Ова, како што веќе реков, е iptables, можете да го примените она што е веќе познато, така што серверот ќе го направи токму она што сакате да го направите

Честитки!

DedicatedServer_SubImage


Содржината на статијата се придржува до нашите принципи на уредничка етика. За да пријавите грешка, кликнете овде.

20 коментари, оставете ги вашите

Оставете го вашиот коментар

Вашата е-маил адреса нема да бидат објавени. Задолжителни полиња се означени со *

*

*

  1. Одговорен за податоците: Мигел Анхел Гатон
  2. Цел на податоците: Контролирајте СПАМ, управување со коментари.
  3. Легитимација: Ваша согласност
  4. Комуникација на податоците: Податоците нема да бидат соопштени на трети лица освен со законска обврска.
  5. Складирање на податоци: База на податоци хостирани од Occentus Networks (ЕУ)
  6. Права: Во секое време можете да ги ограничите, вратите и избришете вашите информации.

  1.   Fer dijo

    Ова исто така можеме да го направиме од заштитен allид што овозможува пренасочување на портот, нели? (примена на соодветните правила).

    1.    КЗКГ ^ Гаара dijo

      Да, се разбира, на крајот заштитен allид како Pfsense или други, користете iptables од позади.

      1.    насилник dijo

        Да бидеме прецизни, pfsense не користи iptables туку pf, запомнете дека тоа е bsd внатре.

        1.    КЗКГ ^ Гаара dijo

          О, нели, лошо мое!

  2.   Никола dijo

    Ви благодарам многу за советот

    Имам неколку сомнежи:
    1 - Дали промената е трајна? или се изгуби при рестартирање на серверот?
    2 - Имам повеќе примери (да речеме А, Б и Ц) на истата подмрежа. На пример, А го применувам правилото за рутирање на сообраќај кон надворешна IP и тестирање со кадрици од инстанците Б и Ц, сè прави чуда. Проблемот е што од пример А не работи. Се обидов да ги користам и вашите ip и интерфејсот за враќање, и ниту еден не работи:
    $ iptables -t nat -А ПРЕУРТИРАЕ -p tcp -dport 8080 -j DNAT-до-дестинацијата xxxx: 8080
    $ iptables -t nat -А ПРЕУРТИРАЕ -p tcp -i lo -dport 8080 -j DNAT-до дестинацијата xxxx: 8080

    $ навивам ip-yyyy: 8080 / hello_world
    навивам: (7) Не успеав да се поврзам на ip-yyyy портата 8080: Врската е одбиена
    $ localhost за навивање: 8080 / hello_world
    навивам: (7) Не успеав да се поврзам со локалната порта 8080: Врската е одбиена

    Некоја идеја што може да биде проблемот?

    1.    КЗКГ ^ Гаара dijo

      Да, промената е изгубена при рестартирање, ќе мора да користите iptables-save & iptables-restore или нешто слично за да го избегнете тоа.
      Не разбрав баш што сакаш да направиш, пример А?

      1.    Никола dijo

        Имам сервер кој поддржува само врски од одредена IP (сервер А), не можам или сакам да додадам повеќе IP во белата листа (за проблеми со приспособливост), затоа сакам да поминува целиот сообраќај кон надворешниот сервер рече сервер (А).
        За прашање на практичност, имам глобални конфигурации кои дефинираат која IP да се користи за секоја услуга, така што во овој случај тоа е нешто како „секој што сака да ја користи надворешната услуга мора да користи IP A“
        Јас успешно го постигнав ова користејќи го методот во овој напис, но наидувам на проблем што кога го применувам, серверот А не може да пристапи до услугата користејќи сопствен ip (но сите други сервери го прават тоа).
        Досега најдоброто што го најдов е да додадам мапирање во датотеката A / etc / домаќини на серверот, покажувајќи на надворешната IP, надминувајќи ја глобалната поставка.

  3.   разговор dijo

    Многу добро, ако имам друг сервер за пошта, би можел да го препратам сообраќајот од портата 143 од сервер 1 на сервер2 и е-поштата ќе стигне до серверот2, нели?

    Со почит

    1.    КЗКГ ^ Гаара dijo

      Во теорија да, работи вака. Секако, мора да имате правилно инсталиран сервер за пошта на серверот2

  4.   MSX dijo

    Вид на објави што сакаме да ги читаме, благодарам!

  5.   абрахам ибара dijo

    Одлична статија, имам проект во кој работам и сакав да ви поставам прашање, има индустриски прекинувачи со функција NAT (претпоставувам дека користат IPTables подолу), за да преведат IP адреса без да направат промени во опремата, на пример, имам сервер 10.10.2.1 што комуницира со 10.10.2.X компјутери и преку прекинувачот е програмиран така што компјутерот што има адреса 192.168.2.4 всушност се гледа од серверот како 10.10.2.5, тој ја преведе IP адресата да се види Од другите компјутери со таа адреса, сакам да го направам тоа од сервер со Ubuntu или друга дистрибуција, какви би биле правилата за iptables?

  6.   Кук dijo

    Многу добра информација благодарам ^ _ ^

  7.   Јусус dijo

    Добар ден.
    Имам проблем да се обидам да направам пренасочување. Објаснувам:
    Имам прокси-сервер во Убунту, со 2 мрежни картички:
    eth0 = 192.168.1.1 е поврзан со останатата локална мрежа.
    eth1 = 192.168.2.2 е поврзан со рутерот.
    Ми треба сè што доаѓа преку eth0 да помине низ eth1, а исто така и преку прокси (користам Squid, чијашто порта е 3128) и не можам да го најдам клучот во конфигурацијата IPTABLES.
    Не ми треба никакво ограничување, само што останува запис во дневникот на веб-адресите што се посетуваат.

    Се надевам дека може да ми помогнете бидејќи тоа е прилично незгодна задача што ме загрижува веќе неколку дена.

    Ви благодариме.

  8.   Gabriel dijo

    Пријател, јас сум многу нов со другите сервери, немам идеја, но ја разбирам темата и брзо учам, прашањето ми е следново. Имам 2 сервери serv_1 и serv_2 кои ги поврзав на истиот интранет, во овие сервери имам поставено свој облак Би сакал да го сторам следново:

    дека одреден опсег на IP, на пример, rangeip_1 при поставување пристапна IP до сопствениот облак (ipowncloud) е насочен кон serv_1 и ако е друг опсегip_2 поставен истиот ipowncloud е насочен кон serv_2, ова со цел да се наоѓаат 2-те сервери во два различни града и опсезите на IP се различни, но сите се на иста мрежа, тоа ќе биде првиот дел, вториот ќе биде јасно е да ги синхронизирате овие 2 сервери така што тие се огледала или да ме советуваат ова за да ја оптимизирам ширината бенд, ве молам, ако ми објасните како да го сторам тоа чекор по чекор за да не во режим на супер програмер = (

  9.   Антонио Каризоза dijo

    Здраво, извинете, имам прекинувач задолжен за комуникација на сите уреди што ја сочинуваат мојата мрежа, и после ова заштитен allид и конечно излез на Интернет, што се случува е дека би сакал да се даде пренасочување во префрлете се и не мора да стигнува до заштитен allид, освен ако бараната услуга не е Интернет.

  10.   Јован dijo

    Користејќи го овој метод, можете ли да го пренасочите HTTPS на HTTP?

  11.   мати dijo

    Здраво, можеби е малку доцна, но сакав да ве прашам, како треба да направам Squid да не ја менува IP на клиентот кога сакам да се поврзам на веб-сервер на истата мрежа?

  12.   Лафат32 dijo

    Не ме третирај лошо што ме праша. Дали ова може да се направи во Виндоус?

  13.   Мартин dijo

    Оваа информација ми беше корисна. Како и секогаш, на момците може да им верувате, кога не можам да најдам нешто на англиски јазик, обично завршувам на шпански јазик, во тие прилики скоро секогаш доаѓам на оваа страница. Ви благодарам.

  14.   Seba dijo

    Имам рутер 4G кој е клиент на мрежа со која не управувам (очигледно, јас сум клиент)... овој рутер е порта за таа далечинска мрежа преку OpenVPN. Дополнително, споменатиот рутер ја исполнува функцијата на пренесување за пристап до портата 80 на серверот на една од тие подмрежи на теренот.

    Ова беше декларацијата што морав да ја ставам во рутерот како прилагодено правило за заштитен ѕид «-t nat -A POSTROUTING -j MASQUERADE»

    Благодарам за помошта!