Isang bagay na napaka-karaniwan kapag namamahala ng mga server ay nagre-redirect sa trapiko.
Ipagpalagay na mayroon kaming isang server na may ilang mga serbisyo na tumatakbo, ngunit sa anumang kadahilanan binago namin ang isa sa mga serbisyong iyon (Hindi ko alam, halimbawa pop3 na kung saan ay port 110) sa ibang server. Ang normal at pinaka-madalas na bagay ay simpleng baguhin ang IP sa tala ng DNS, subalit kung may gumagamit ng IP sa halip na subdomain maaapektuhan ito.
Anong gagawin? ... simple, i-redirect ang trapiko na natatanggap ng server sa pamamagitan ng port na iyon sa isa pang server na may parehong port.
Paano namin masisimulan ang pag-redirect ng trapiko?
Ang unang bagay ay dapat nating pinagana ang pagpapasa sa server, para dito mailalagay namin ang mga sumusunod:
echo "1" > /proc/sys/net/ipv4/ip_forward
Maaari mo ring gamitin ang iba pang utos na ito, kung sakaling hindi gumana para sa iyo ang nakaraang (nangyari sa akin ng ganito sa isang CentOS):
sysctl net.ipv4.ip_forward=1
Pagkatapos ay i-restart namin ang network:
service networking restart
Sa mga distribusyon ng RPM tulad ng CentOS at iba pa, magiging:
service nertwork restart
Ngayon ay lilipat tayo sa mahalagang bagay, sabihin sa server ang iptables ano ang ire-redirect:
iptables -t nat -A PREROUTING -p tcp --dport <puerto receptor> -j DNAT --to-destination <ip final>:<puerto de ip final>
Iyon ay, at pagsunod sa halimbawang nabanggit ko, ipagpalagay na nais naming i-redirect ang lahat ng trapiko na natatanggap ng aming server sa pamamagitan ng port 110 sa ibang server (hal: 10.10.0.2), na makakatanggap pa rin ng trapikong iyon sa pamamagitan ng 110 (ito ay ang parehong serbisyo):
iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination 10.10.0.2:110
Makikita ng server ng 10.10.0.2 na ang lahat ng mga packet o hiling ay nagmula sa IP ng kliyente, kung sakaling nais nilang lumangoy ang mga kahilingan, iyon ay, nakikita ng ika-2 server na dumating ang mga kahilingan kasama ang IP ng ika-1 server (at sa na inilalapat namin ang pag-redirect), mailalagay din nito ang pangalawang linya:
iptables -t nat -A POSTROUTING -j MASQUERADE
Ang ilang mga katanungan at sagot
Sa halimbawang ginamit ko ang parehong port sa parehong mga okasyon (110), subalit maaari nilang mai-redirect ang trapiko mula sa isang port patungo sa isa pa nang walang mga problema. Halimbawa, ipagpalagay na nais kong i-redirect ang trapiko mula sa port 80 hanggang 443 sa ibang server, para ito ay:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.0.2:443
Ito ay iptables, magagamit nila ang lahat ng iba pang mga parameter na alam namin, halimbawa, kung nais lamang namin na mag-redirect ng trapiko mula sa isang tukoy na IP, ito ay magiging mga pagdaragdag ... Halimbawa ire-redirect ko lang ang trapiko na nagmula sa 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
O isang buong network (/ 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
Maaari din nating tukuyin ang interface ng network na may -i :
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j DNAT --to-destination 10.10.0.2:443
Wakas!
Ito tulad ng sinabi ko na, ay iptables, maaari mong ilapat kung ano ang alam na upang ang server ay eksaktong gawin ang nais mong gawin 😉
Pagbati!
Magagawa din natin ito mula sa isang firewall na nagpapahintulot sa pagpapasa ng port, tama ba? (paglalapat ng kaukulang mga patakaran).
Oo syempre, sa huli isang firewall tulad ng Pfsense o iba pa, gumamit ng mga iptable mula sa likuran.
Upang maging eksakto, ang pfsense ay hindi gumagamit ng mga iptable ngunit pf, tandaan na ito ay isang bsd sa loob.
Oh tama, ang sama ko!
Maraming salamat sa tip 🙂
Mayroon akong isang pag-aalinlangan:
1 - Permanente ba ang pagbabago? o nawala ba ito sa pag-restart ng server?
2 - Mayroon akong maraming mga pagkakataon (sabihin ang A, B at C) sa parehong subnet. Halimbawa A inilalapat ko ang panuntunan upang mag-ruta ng trapiko sa isang panlabas na IP, at pagsubok sa mga kulot mula sa mga pagkakataong B at C, lahat ay gumagana ng mga kababalaghan. Ang problema ay mula sa halimbawa A hindi ito gumagana. Sinubukan kong gamitin ang pareho ng iyong ip at ang interface ng loopback, at ni gumagana:
$ iptables -t nat -A PREROUTING -p tcp –dport 8080 -j DNAT –to-patutunguhan xxxx: 8080
$ iptables -t nat -A PREROUTING -p tcp -i lo –dport 8080 -j DNAT –to-patutunguhan xxxx: 8080
$ curl ip-yyyy: 8080 / hello_world
curl: (7) Nabigong kumonekta sa ip-yyyy port 8080: Tumanggi ang koneksyon
$ curl localhost: 8080 / hello_world
curl: (7) Nabigong kumonekta sa localhost port 8080: Tumanggi ang koneksyon
Anumang ideya kung ano ang maaaring problema?
Oo, nawala ang pagbabago sa pag-reboot, kakailanganin mong gumamit ng iptables-save & iptables-restore o isang bagay na tulad nito upang maiwasan iyon.
Hindi ko masyadong naintindihan kung ano ang gusto mong gawin, halimbawa A?
Mayroon akong isang server na sumusuporta lamang sa mga koneksyon mula sa isang partikular na ip (server A), hindi ko o nais na magdagdag ng higit pang mga ip sa whitelist (para sa mga isyu sa kakayahang sumukat), kaya nais kong dumaan ang lahat ng trapiko sa panlabas na server sinabi ng server (A).
Para sa isang bagay ng pagiging praktiko, mayroon akong mga pandaigdigang pagsasaayos na tumutukoy sa aling IP ang gagamitin para sa bawat serbisyo, kaya sa kasong ito ito ay isang bagay tulad ng "ang bawat isa na nais gumamit ng panlabas na serbisyo ay dapat gumamit ng IP A"
Matagumpay kong nakamit ito gamit ang pamamaraan sa artikulong ito, ngunit nahahanap ko ang problema na kapag inilalapat ito, hindi maa-access ng server A ang serbisyo gamit ang sarili nitong ip (ngunit ginagawa ng lahat ng iba pang mga server).
Sa ngayon ang pinakamahusay na natagpuan ko ay upang idagdag ang pagma-map sa file ng server A / etc / host, na tumuturo sa panlabas na ip, na pinapabilis ang setting ng pandaigdig.
Mahusay, kung mayroon akong ibang mail server, maipapasa ko ang trapiko mula sa port 143 mula sa server1 hanggang sa server2 at maaabot ng mga email ang server2, tama ba?
Regards
Sa teorya oo, gumagana ito tulad nito. Oo naman, dapat ay maayos na na-install ang mail server sa server2 🙂
Ang uri ng mga post na gusto naming basahin, salamat!
Mahusay na artikulo, mayroon akong isang proyekto kung saan ako nagtatrabaho at nais kong magtanong sa iyo ng isang katanungan, may mga pang-industriya na switch na may function na NAT (Ipagpalagay ko na gumagamit sila ng mga IPTable sa ibaba), upang isalin ang isang IP address nang hindi gumagawa ng mga pagbabago sa kagamitan, isang halimbawa, mayroon akong isang Server 10.10.2.1 na nakikipag-usap sa mga computer ng 10.10.2.X at sa pamamagitan ng switch ay naka-program upang ang isang computer na may address na 192.168.2.4 ay talagang nakikita mula sa server bilang 10.10.2.5, isinalin nito ang IP address upang makita Mula sa iba pang mga computer na may address na iyon, nais kong gawin ito mula sa isang server na may Ubuntu o ibang pamamahagi, ano ang mga panuntunan sa iptables?
Napakagandang impormasyon salamat ^ _ ^
Magandang hapon.
Mayroon akong isang problema sa pagsubok na gawin ang isang pag-redirect. Ipinapaliwanag ko:
Mayroon akong isang proxy server sa Ubuntu, na may 2 network card:
Ang eth0 = 192.168.1.1 ay konektado sa natitirang lokal na network.
Ang eth1 = 192.168.2.2 ay konektado sa router.
Kailangan ko ang lahat na dumaan sa eth0 upang dumaan sa eth1, at sa pamamagitan din ng proxy (Gumagamit ako ng Squid, na ang default port ay 3128), at hindi ko mahanap ang susi sa pagsasaayos ng IPTABLES.
Hindi ko kailangan ng paghihigpit ng anumang uri, tanging ang isang talaan ay mananatili sa log ng mga web address na binisita.
Inaasahan kong matutulungan mo ako dahil ito ay lubos na isang mahirap na gawain na nag-aalala sa akin sa loob ng ilang araw.
Salamat sa inyo.
Kaibigan, napakasariwa ko sa ibang mga server, wala akong ideya ngunit naiintindihan ko ang paksa at natututo ako nang mabilis, ang tanong ko ay ang sumusunod na mayroon akong 2 mga server na serv_1 at serv_2 na konektado ako sa parehong intranet, sa mga server na ito mayroon akong isang sariling setting na naka-set up, Nais kong gawin ang sumusunod:
na ang isang tiyak na saklaw ng ips halimbawa rangeip_1 kapag naglalagay ng isang access ip sa sarilingcloud (ipowncloud) ay nakadirekta sa serv_1 at kung ito ay isa pang rangeip_2 na inilagay ang parehong ipowncloud ay nakadirekta sa serv_2, ito upang ang 2 server ay matatagpuan sa dalawang magkakaibang lungsod at ang mga saklaw ng IP ay magkakaiba ngunit lahat sila ay nasa parehong network, iyon ang magiging unang bahagi, ang pangalawa ay magiging malinaw ay upang isabay ang 2 server na ito upang ang mga ito ay mga salamin o ipinapayo nila sa akin ito upang ma-optimize ang lapad banda, mangyaring, kung ipaliwanag mo sa akin kung paano ito gawin hakbang-hakbang hindi super programmer mode = (
Kumusta, patawarin ako, mayroon akong isang switch na namamahala sa komunikasyon ng lahat ng mga aparato na bumubuo sa aking network, at pagkatapos nito ay isang firewall at sa wakas ang paglabas sa Internet, kung ano ang mangyayari ay nais kong ibigay ang pag-redirect sa lumipat at hindi kailangang maabot ang firewall maliban kung ang hiniling na serbisyo ay internet.
Gamit ang pamamaraang ito maaari mo bang i-redirect ang HTTPS sa HTTP?
Kumusta, marahil ito ay medyo huli na, ngunit nais kong tanungin ka, kung paano ko gagawin ang pusit na hindi baguhin ang IP ng kliyente kung nais kong kumonekta sa isang web server sa parehong network?
Huwag mo akong pakitunguhan nang masama sa pagtatanong. Magagawa ba ito sa Windows?
Ang impormasyong ito ay naging kapaki-pakinabang sa akin. Tulad ng nakasanayan, mapagkakatiwalaan kayong mga tao, kung wala akong makitang bagay sa Ingles na karaniwang nagtatapos ako sa pagtingin sa Espanyol, sa mga pagkakataong iyon ay halos palagi akong pumupunta sa site na ito.
Mayroon akong 4G router na isang kliyente ng isang network na hindi ko pinamamahalaan (malinaw naman, ako ay isang kliyente)... ang router na ito ay isang gateway sa malayong network na iyon sa pamamagitan ng OpenVPN. Bilang karagdagan, tinutupad ng nasabing router ang function ng portforwarding upang ma-access ang port 80 ng server ng isa sa mga subnet na iyon sa field.
Ito ang deklarasyon na kailangan kong ilagay sa router bilang custom na panuntunan ng firewall «-t nat -A POSTROUTING -j MASQUERADE»
Salamat sa tulong!