Серверлерді басқару кезінде жиі кездесетін нәрсе трафикті қайта бағыттау болып табылады.
Бізде белгілі бір қызметтері бар сервер бар делік, бірақ біз қандай да бір себептермен сол қызметтердің бірін өзгертеміз (Мен білмеймін, мысалы pop3, яғни 110 порт) басқа серверге. Кәдімгі және жиі кездесетін нәрсе - жай DNS жазбасындағы IP-ді өзгерту, бірақ егер біреу ішкі доменнің орнына IP-ні қолданса, оған әсер етуі мүмкін.
Не істеу? ... қарапайым, сол порт арқылы алынған трафикті сол портпен басқа серверге бағыттаңыз.
Трафикті қайта бағыттауды қалай бастаймыз?
Біріншіден, біз оны қосқан болуымыз керек экспедиторлық серверге бұл үшін келесілерді орналастырамыз:
echo "1" > /proc/sys/net/ipv4/ip_forward
Алдыңғысы сізге сәйкес келмеген жағдайда, сіз басқа команданы да пайдалана аласыз (бұл маған CentOS-та осылай болды):
sysctl net.ipv4.ip_forward=1
Содан кейін біз желіні қайта іске қосамыз:
service networking restart
CentOS және басқалар сияқты RPM дистрофцияларында:
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-сервер сұраныстардың 1-сервердің IP-мен келетіндігін көреді (және біз қайта бағыттауды қолданамыз), келесі жолды қою керек:
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 пікір, өз пікіріңізді қалдырыңыз
Біз мұны портты бағыттауға мүмкіндік беретін брандмауэрден де жасай аламыз, солай ма? (тиісті ережелерді қолдану).
Ия, әрине, ақыр соңында Pfsense немесе басқа басқалар сияқты брандмауэр артқы жағынан iptables қолданады.
Дәлірек айтқанда, pfsense iptables емес, pf қолданады, оның ішінде bsd екенін ұмытпаңыз.
Дұрыс, жаманым!
Кеңес үшін үлкен рахмет 🙂
Менде бірнеше күмән бар:
1 - өзгеріс тұрақты ма? немесе ол серверді қайта іске қосқан кезде жоғалып кетті ме?
2 - Менде бір ішкі желіде бірнеше даналар бар (мысалы, A, B және C). А мысалында мен трафикті сыртқы IP-ге бағыттау үшін ережені қолданамын және B және C даналарынан алынған бұйралармен бәрі керемет жұмыс істейді. Мәселе мынада, ол А данасынан жұмыс істемейді. Мен сіздің ipіңізді де, кері байланыс интерфейсін де қолданып көрдім, әрі жұмыс істемейді:
$ iptables -t nat -A PREROUTING -p tcp –dport 8080 -j DNAT –xxxxxx: 8080
$ iptables -t nat -A PREROUTING -p tcp -i lo –dport 8080 -j DNAT –xxxxxxx: 8080
$ curl ip-yyyy: 8080 / hello_world
бұйра: (7) 8080 ip-yyyy портына қосылу мүмкін болмады: қосылым қабылданбады
$ curl localhost: 8080 / hello_world
бұйра: (7) 8080 localhost портына қосылу мүмкін болмады: қосылым қабылданбады
Мәселе қандай болуы мүмкін деген кез-келген идея бар ма?
Иә, қайта жүктеу кезінде өзгеріс жоғалады, мұны болдырмау үшін iptables-save & iptables-restore немесе сол сияқтыларды пайдалану керек.
Мен не істегіңіз келетінін түсінбедім, мысалы A?
Менде тек белгілі бір IP-дің қосылыстарын қолдайтын сервер бар (А серверлері), мен ақ тізімге тағы да көп ips қоса алмаймын немесе қосқым келеді (масштабтау мүмкіндігі үшін), сондықтан мен сыртқы сервердегі барлық трафиктің өтуін қалаймын. деді сервер (A).
Практикалық тұрғыдан алғанда, менде әр қызмет үшін қай IP-ді қолдануды анықтайтын жаһандық конфигурациялар бар, сондықтан бұл жағдайда «сыртқы қызметті пайдаланғысы келетіндердің барлығы IP A-ны қолдануы керек» сияқты болады.
Мен бұған осы мақаладағы әдісті қолдана отырып сәтті жеттім, бірақ мен оны қолданған кезде А сервері өзінің IP-ін пайдаланып қызметке кіре алмайтындығына тап болдым (бірақ барлық басқа серверлерде бар).
Әзірге менің ойымша, A серверінің / etc / hosts файлында сыртқы IP-ге сілтеме жасай отырып, ғаламдық параметрді жоққа шығарып, салыстыруды қосу болды.
Өте жақсы, егер менде басқа пошта сервері болса, мен 143 порттан трафикті server1-ден server2-ге жібере аламын, және хаттар маған server2-де жетеді, солай ма?
тілекпен
Теория жүзінде иә, ол осылай жұмыс істейді. Әрине, сізде серверде installed дұрыс орнатылған пошта сервері болуы керек
Біз оқуды ұнататын жазбалардың түрі, рахмет!
Өте жақсы мақала, менде жұмыс істейтін жоба бар, мен сіздерге сұрақ қойғым келеді, NAT функциясы бар өнеркәсіптік ажыратқыштар бар (олар төменде IPTables пайдаланады деп ойлаймын), IP мекенжайын жабдыққа өзгертусіз аудару үшін, мысалы менде Сервер бар 10.10.2.1.X 10.10.2.X компьютерлерімен байланысатын және коммутатор арқылы бағдарламаланған, сондықтан 192.168.2.4 мекен-жайы бар компьютер серверден 10.10.2.5 ретінде көрініп, сол IP-адресті көруге аударды Осы мекен-жайы бар басқа компьютерлерден мен оны Ubuntu немесе басқа дистрибутиві бар серверден жасағым келеді, iptables ережелері қандай болар еді?
Өте жақсы ақпарат рахмет ^ _ ^
Қайырлы кеш.
Бағытты қайта бағыттауда қиындықтарым бар. Мен түсіндіремін:
Менде Ubuntu-да 2 желілік картамен прокси-сервер бар:
eth0 = 192.168.1.1 жергілікті желінің қалған бөлігіне қосылған.
eth1 = 192.168.2.2 маршрутизаторға қосылған.
Маған eth0 арқылы келетін барлық нәрселер қажет, сонымен қатар прокси арқылы өту керек (мен Squid пайдаланамын, оның порт 1), мен IPTABLES конфигурациясынан кілт таба алмаймын.
Маған қандай-да бір шектеулер қажет емес, тек кірген веб-мекен-жайлар журналында жазба қалады.
Сіз маған көмектесе аласыз деп үміттенемін, өйткені бұл мені екі күннен бері мазалайтын өте күрделі жұмыс.
рахмет.
Досым, мен басқа серверлерге өте таныспын, менде ешқандай түсінік жоқ, бірақ мен тақырыпты түсінемін және тез үйренемін, менің сұрағым: менде сол сервис пен серв_2 серверлері бар, мен сол интранетке қосылдым, бұл серверлерде менде өзіндік бұлт орнатылған Мен келесілерді жасағым келеді:
IP-дің жеке бұлтына (ipowncloud) кіру кезінде IP-дің белгілі бір диапазоны серв_1-ге бағытталады, ал егер ол басқа диапазонға жатса_1, сол ipowncloud серв-ға жіберіледі, бұл 2 сервердің орналасуы үшін екі түрлі қалада және IP диапазоны әр түрлі, бірақ олардың барлығы бірдей желіде, бұл бірінші бөлік болар еді, екіншісі түсінікті болар еді, бұл 2 серверлерді айналар немесе оларды маған кеңесті оңтайландыру үшін синхрондау. топ, өтінемін, егер маған мұны қалай жасау керектігін супер бағдарламашының режимі емес, біртіндеп түсіндіретін болсаңыз = (
Сәлем қосылып, брандмауэрге жетудің қажеті жоқ, егер сұралған қызмет интернет болмаса.
Осы әдісті қолдану арқылы сіз HTTPS-ті HTTP-ге қайта бағыттай аласыз ба?
Сәлеметсіз бе, мүмкін кешігіп жатқан болар, бірақ мен сізден сұрағым келді, мен бір желідегі веб-серверге қосылғым келгенде кальмарды клиенттің IP-ін өзгертпеуі үшін қалай жасау керек?
Сұрағаным үшін маған жаман қарамаңыз. Мұны Windows-та жасауға бола ма?
Бұл ақпарат маған пайдалы болды. Әдеттегідей, сендерге сенуге болады, егер мен ағылшынша бірдеңе таба алмасам, мен испан тіліне жүгінемін, сол кезде мен әрқашан осы сайтқа кіремін.
Менің 4G маршрутизаторым бар, ол мен басқармайтын желінің клиенті (анық, мен клиентмін)… бұл маршрутизатор OpenVPN арқылы қашықтағы желіге шлюз болып табылады. Сонымен қатар, аталған маршрутизатор өрістегі сол ішкі желілердің бірінің серверінің 80 портына қол жеткізу үшін портты бағыттау функциясын орындайды.
Бұл «-t nat -A POSTROUTING -j MASQUERADE» брандмауэрінің пайдаланушы ережесі ретінде маршрутизаторға енгізуім керек декларация болды.
Көмек үшін рахмет!