Нешто многу често кога управувате со сервери е пренасочување на сообраќајот.
Да претпоставиме дека имаме сервер со извршени одредени услуги, но од која било причина сменивме една од тие услуги (Не знам, на пример поп3 што е порта 110) на друг сервер. Нормалното и најчестото нешто би било едноставно да ја смениме IP-то во записот DNS, но доколку некој користеше IP наместо во поддоменот, тоа ќе влијае.
Што да се прави? ... едноставно, пренасочете го сообраќајот што го прима серверот преку таа порта на друг сервер со иста порта.
Како да започнеме да го пренасочуваме сообраќајот?
Првото нешто е што мора да го овозможивме товар на серверот, за ова ќе го ставиме следново:
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, можете да го примените она што е веќе познато, така што серверот ќе го направи токму она што сакате да го направите
Честитки!
20 коментари, оставете ги вашите
Ова исто така можеме да го направиме од заштитен allид што овозможува пренасочување на портот, нели? (примена на соодветните правила).
Да, се разбира, на крајот заштитен allид како Pfsense или други, користете iptables од позади.
Да бидеме прецизни, pfsense не користи iptables туку pf, запомнете дека тоа е bsd внатре.
О, нели, лошо мое!
Ви благодарам многу за советот
Имам неколку сомнежи:
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: Врската е одбиена
Некоја идеја што може да биде проблемот?
Да, промената е изгубена при рестартирање, ќе мора да користите iptables-save & iptables-restore или нешто слично за да го избегнете тоа.
Не разбрав баш што сакаш да направиш, пример А?
Имам сервер кој поддржува само врски од одредена IP (сервер А), не можам или сакам да додадам повеќе IP во белата листа (за проблеми со приспособливост), затоа сакам да поминува целиот сообраќај кон надворешниот сервер рече сервер (А).
За прашање на практичност, имам глобални конфигурации кои дефинираат која IP да се користи за секоја услуга, така што во овој случај тоа е нешто како „секој што сака да ја користи надворешната услуга мора да користи IP A“
Јас успешно го постигнав ова користејќи го методот во овој напис, но наидувам на проблем што кога го применувам, серверот А не може да пристапи до услугата користејќи сопствен ip (но сите други сервери го прават тоа).
Досега најдоброто што го најдов е да додадам мапирање во датотеката A / etc / домаќини на серверот, покажувајќи на надворешната IP, надминувајќи ја глобалната поставка.
Многу добро, ако имам друг сервер за пошта, би можел да го препратам сообраќајот од портата 143 од сервер 1 на сервер2 и е-поштата ќе стигне до серверот2, нели?
Со почит
Во теорија да, работи вака. Секако, мора да имате правилно инсталиран сервер за пошта на серверот2
Вид на објави што сакаме да ги читаме, благодарам!
Одлична статија, имам проект во кој работам и сакав да ви поставам прашање, има индустриски прекинувачи со функција NAT (претпоставувам дека користат IPTables подолу), за да преведат IP адреса без да направат промени во опремата, на пример, имам сервер 10.10.2.1 што комуницира со 10.10.2.X компјутери и преку прекинувачот е програмиран така што компјутерот што има адреса 192.168.2.4 всушност се гледа од серверот како 10.10.2.5, тој ја преведе IP адресата да се види Од другите компјутери со таа адреса, сакам да го направам тоа од сервер со Ubuntu или друга дистрибуција, какви би биле правилата за iptables?
Многу добра информација благодарам ^ _ ^
Добар ден.
Имам проблем да се обидам да направам пренасочување. Објаснувам:
Имам прокси-сервер во Убунту, со 2 мрежни картички:
eth0 = 192.168.1.1 е поврзан со останатата локална мрежа.
eth1 = 192.168.2.2 е поврзан со рутерот.
Ми треба сè што доаѓа преку eth0 да помине низ eth1, а исто така и преку прокси (користам Squid, чијашто порта е 3128) и не можам да го најдам клучот во конфигурацијата IPTABLES.
Не ми треба никакво ограничување, само што останува запис во дневникот на веб-адресите што се посетуваат.
Се надевам дека може да ми помогнете бидејќи тоа е прилично незгодна задача што ме загрижува веќе неколку дена.
Ви благодариме.
Пријател, јас сум многу нов со другите сервери, немам идеја, но ја разбирам темата и брзо учам, прашањето ми е следново. Имам 2 сервери serv_1 и serv_2 кои ги поврзав на истиот интранет, во овие сервери имам поставено свој облак Би сакал да го сторам следново:
дека одреден опсег на IP, на пример, rangeip_1 при поставување пристапна IP до сопствениот облак (ipowncloud) е насочен кон serv_1 и ако е друг опсегip_2 поставен истиот ipowncloud е насочен кон serv_2, ова со цел да се наоѓаат 2-те сервери во два различни града и опсезите на IP се различни, но сите се на иста мрежа, тоа ќе биде првиот дел, вториот ќе биде јасно е да ги синхронизирате овие 2 сервери така што тие се огледала или да ме советуваат ова за да ја оптимизирам ширината бенд, ве молам, ако ми објасните како да го сторам тоа чекор по чекор за да не во режим на супер програмер = (
Здраво, извинете, имам прекинувач задолжен за комуникација на сите уреди што ја сочинуваат мојата мрежа, и после ова заштитен allид и конечно излез на Интернет, што се случува е дека би сакал да се даде пренасочување во префрлете се и не мора да стигнува до заштитен allид, освен ако бараната услуга не е Интернет.
Користејќи го овој метод, можете ли да го пренасочите HTTPS на HTTP?
Здраво, можеби е малку доцна, но сакав да ве прашам, како треба да направам Squid да не ја менува IP на клиентот кога сакам да се поврзам на веб-сервер на истата мрежа?
Не ме третирај лошо што ме праша. Дали ова може да се направи во Виндоус?
Оваа информација ми беше корисна. Како и секогаш, на момците може да им верувате, кога не можам да најдам нешто на англиски јазик, обично завршувам на шпански јазик, во тие прилики скоро секогаш доаѓам на оваа страница. Ви благодарам.
Имам рутер 4G кој е клиент на мрежа со која не управувам (очигледно, јас сум клиент)... овој рутер е порта за таа далечинска мрежа преку OpenVPN. Дополнително, споменатиот рутер ја исполнува функцијата на пренесување за пристап до портата 80 на серверот на една од тие подмрежи на теренот.
Ова беше декларацијата што морав да ја ставам во рутерот како прилагодено правило за заштитен ѕид «-t nat -A POSTROUTING -j MASQUERADE»
Благодарам за помошта!