IPtables a zařízení za NAT

Pučmeloun

Re:Iptables a zařízení za NAT
« Odpověď #15 kdy: 13. 08. 2018, 08:12:56 »

Hele, ty tomu rozumíš, musí dávat SNAT když používá maškarádu na kompletní výstup nebo nemusí?
To je asi tak jediné, co se mu na to dá napsat. Mimo to, samotného mě to zajímá.


Re:Iptables a zařízení za NAT
« Odpověď #16 kdy: 13. 08. 2018, 08:43:13 »

Hele, ty tomu rozumíš, musí dávat SNAT když používá maškarádu na kompletní výstup nebo nemusí?
To je asi tak jediné, co se mu na to dá napsat. Mimo to, samotného mě to zajímá.
Jéčko že by něčemu rozumělo?

Maškaráda je druh SNATu – SNAT obecně mění zdrojovou IP adresu, maškaráda mění zdrojovou IP adresu konkrétně na IP adresu rozhraní, kterým paket odejde. Takže když používá maškarádu, používá SNAT.

S problémem nezabezpečeného spojení to vůbec nijak nesouvisí, protože SNAT i DNAT mění jen IP adresy paketů. Chybná konfigurace SNATu nebo DNATu může způsobit, že se spojení naváže se špatným serverem nebo se nenaváže vůbec. Když se ale TCP/IP spojení podaří navázat, nemají příslušná zařízení jak zjistit, že je mezi nimi NAT, pokud si nepředávají přímo IP adresy. Pokud by si předávala přímo IP adresy, asi by to bylo opět kvůli navázání jiného spojení (jako to dělá třeba FTP), ale určitě by to nevedlo na hlášku o nezabezpečeném spojení.

j

Re:Iptables a zařízení za NAT
« Odpověď #17 kdy: 13. 08. 2018, 08:51:49 »
Hele, ty tomu rozumíš, musí dávat SNAT když používá maškarádu na kompletní výstup nebo nemusí?
To je asi tak jediné, co se mu na to dá napsat. Mimo to, samotného mě to zajímá.

SNAT === ta maskarada.

-A POSTROUTING -s $IN -o eth0 -j SNAT --to-source $OUT

Tohle je priklad jak prelozit interni adresu na externi (trebas mas vic externich, a chces pridelovat ruzny). Maskarada nedela nic jinyho, nez ze veme existujici IPcko (ktery se muze menit) na pozici $OUT.  Je to jen specialni pripad tohoto, urcenej pro spojeni s dynamickou IP.

Beznej natujici router dela prave jen tohle = zvenku se ("legalne") pripojit nejde (== jde, snadno, ale ne pomoci standardni funcionality), odchozi komunikaci si zapisuje (port + ip) a odpovedi predava na spravnej stroj uvnitr. Coz u nekterych krabek muze vist az k vycerpani veskery rameti - trebas pokud pouzivas torrent, kterej muze generovat tisice konexi.

Mno a prave pokud chces, aby se slo pripojit zvenku, potrebujes jeste dnat ... kterej forwardne port ... a pak jeste bambiliardu polonefunkcnich helperu, protoze hromada aplikaci ocekava, ze ten defaultni port slouzi jen k navazani spojeni ktery se pak odmigruje jinam. Proto je NAT zlo, ktery je treba potirat a nicit kdekoli se vyskytne.

Re:Iptables a zařízení za NAT
« Odpověď #18 kdy: 13. 08. 2018, 09:58:41 »
Maškaráda je druh SNATu – SNAT obecně mění zdrojovou IP adresu, maškaráda mění zdrojovou IP adresu konkrétně na IP adresu rozhraní, kterým paket odejde. Takže když používá maškarádu, používá SNAT.
Jenom ještě doplním, že Linuxový NAT se konfiguruje z pohledu toho, kdo navazuje spojení. Technicky, když máte klasickou síť s privátními adresami za NATem a chcete, aby zařízení z té sítě měla přístup do internetu, musíte u paketu, který odchází z té sítě, změnit zdrojovou IP adresu (což je SNAT – source NAT), ale když z internetu přijde odpověď, musí se adekvátně upravit cílová IP adresa, aby se paket dostal v privátní síti k počítači, který poslal požadavek. Technicky se tedy na tom paketu, který přijde jako odpověď, dělá DNAT (destination NAT).

V Linuxu (iptables) se to ale konfiguruje jenom pro ty odchozí pakety jako SNAT (případně jako specifický případ SNATu – maškaráda), a jádro už samo ví, že pro příchozí pakety musí udělat inverzí operaci. Stejné je to pro DNAT – konfiguruje se jen pro odchozí pakety, ale jádro opět ví, že pro příchozí pakety musí udělat inverzní operaci a u příchozích paketů mění inverzně zdrojovou IP adresu.

Pučmeloun

Re:IPtables a zařízení za NAT
« Odpověď #19 kdy: 13. 08. 2018, 11:55:38 »

Jedeš?!!!
Kolik lidí ti tu řeklo, abys dal pokoj?


Re:IPtables a zařízení za NAT
« Odpověď #20 kdy: 13. 08. 2018, 12:11:08 »
v tomto konkretnom pripade by ti to fungovalo aj bez maskarady (z vonku) a aj bez SNATU (co je vlastne maskarada), vzhladom na to, ze prichadzajuci paket presmerujes na vnutornu(cielovu) adresu (zdrojova adresa sa nezmeni), a naspat pojde paket podla default routy smerom von.. Cize toto nie je Tvoj problem. Ak mas problem s divnymi hlaskami tak je za tym nieco ine,.

Pučmeloun

Re:IPtables a zařízení za NAT
« Odpověď #21 kdy: 13. 08. 2018, 12:51:52 »
a aj bez SNATU (co je vlastne maskarada)

To si moc nemyslím.
Jak by ten firewall věděl, kam má ten provoz forwardovat? Tj. DNAT potřebuje.
A do internetu nemůžeš pouštět nic s odchozí adresou 192.168./10.0./172.0/ atd. proto je SNAT taky potřeba.

SNAT === ta maskarada.
-A POSTROUTING -s $IN -o eth0 -j SNAT --to-source $OUT

Hele, proč se používá SNAT ručně nastavená pravidla místo kratšího:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Aby pravidla byla jasnější a bylo to přehlednější?
Nebo pro to jsou bezpečnostní důvody?

Re:IPtables a zařízení za NAT
« Odpověď #22 kdy: 13. 08. 2018, 13:45:42 »
Z internetu pride paket zdroj: nejaka_verejnaIP a ciel jeho_verejna_IP:3389..

Pomocou DNAT zmeni ciel na jeho_vnutorna_IP .. Cize paket, ktory pride k serveru ma tvar nejaka_verejnaIP -> jeho_vnutorna_IP:3389... Server odpovie s adresou jeho_vnutorna_IP:3389 -> nejaka_verejnaIP.. Lenze on uz vnutrornu siet zamaskovanu ma..

Zrejme nejak v tvare -A POSTROUTING -o interface_smerom_do_netu -j MASQUERADE

...Toto pravidlo tam ma uz davno pokial chce aby servery z vnutornej siete mali pristup do netu. Cize paket pojde jednoducho default routou smerom von.. Vnutorna IP  sa zamaskuje za vonkajsiu routerovsku.. Ak to ma takto, tak musi len nastavit DNAT.. Ziaden SNAT tam dorabat nemusi (pretoze ho uz ma)..
« Poslední změna: 13. 08. 2018, 13:47:19 od snuff1987 »

Pučmeloun

Re:IPtables a zařízení za NAT
« Odpověď #23 kdy: 13. 08. 2018, 14:14:16 »
Tak to promiň, nebylo zřejmé, že to vztahuješ na jeho defaultní konfiguraci.

Re:IPtables a zařízení za NAT
« Odpověď #24 kdy: 13. 08. 2018, 15:12:30 »
A do internetu nemůžeš pouštět nic s odchozí adresou 192.168./10.0./172.0/ atd. proto je SNAT taky potřeba.
Jedině pokud ten server, kam se z venku připojuje, chce také navazovat komunikaci do internetu. K tomu, aby byl jen dostupný z internetu (třeba jako SSH server nebo jako HTTPS server) je potřeba nakonfigurovat jenom ten DNAT, protože (jak jsem vysvětloval výše) u paketů v opačném směru dělá linuxové jádro inverzní operaci k SNATu/DNATu samo automaticky.

Stručně řečeno, když potřebujete z privátní sítě na internet, potřebujete jen SNAT. Když naopak chcete přesměrovat veřejnou IP adresu do vnitřní sítě, potřebujete jen DNAT. Pokud chcete, aby ten server byl pod tou veřejnou IP adresou dostupný i z té vnitřní sítě, potřebujete DNAT i SNAT – SNAT proto, aby se paket od serveru vrátil na router/NAT, který provede tu inverzní operaci k DANTu. Bez SNATu odpoví server přímo klientovi v privátní síti, jenže jako odchozí uvede svou privátní IP adresu, zatímco klient navazoval spojení s veřejnou IP adresou. Tím pádem klient dostane odpověď na navázání spojení, které ale nenavazoval (nesedí IP adresa) a paket zahodí jako neplatný.

Ziaden SNAT tam dorabat nemusi (pretoze ho uz ma)..
Nikoli, pro příchozí komunikaci tam žádný SNAT nastavovat nemusí proto, že inverzní operaci k SNATu/DNATu dělá linuxové jádro automaticky. To, že tam má SNAT/maškarádu nemá na příchozí komunikaci na ten server žádný vliv – je to potřeba jenom proto, aby ten server samotný mohl navazovat spojení do internetu (např. kvůli DNS nebo aktualizacím). Kdyby tam SNAT/maškarádu neměl a měl tam jenom DNAT, pořád se z venku na ten počítač připojí.

Když v iptables konfigurujete SNAT, nakonfigurujete změnu zdrojové IP adresy u odchozích paketů a změnu cílové IP adresy u příchozích paketů. Když v iptables nakonfigurujete DNAT, nakonfigurujete změnu cílové IP adresy u příchozích paketů a změnu zdrojové IP adresy u odchozích paketů (směr příchozí/odchozí je z pohledu toho počítače v privátní síti).

Re:IPtables a zařízení za NAT
« Odpověď #25 kdy: 13. 08. 2018, 15:15:58 »
Hele, proč se používá SNAT ručně nastavená pravidla místo kratšího:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Aby pravidla byla jasnější a bylo to přehlednější?
Nebo pro to jsou bezpečnostní důvody?
Protože u maškarády vybírá odchozí IP adresu jádro. Pokud máte na odchozím rozhraní jedinou IP adresu, je to jedno. Pokud jich tam ale máte víc, typicky chcete určit, za kterou IP adresou bude ta maškaráda schovaná. Třeba síť uživatelských PC schováte za jednu IP adresu, ale server schováte za jinou, protože nechcete, aby se ta IP adresa serveru dostala na blacklist, pokud bude nějaké uživatelské PC škodit a třeba rozesílat spam.

j

Re:IPtables a zařízení za NAT
« Odpověď #26 kdy: 13. 08. 2018, 17:36:53 »
v tomto konkretnom pripade by ti to fungovalo aj bez maskarady (z vonku) a aj bez SNATU (co je vlastne maskarada), vzhladom na to, ze prichadzajuci paket presmerujes na vnutornu(cielovu) adresu (zdrojova adresa sa nezmeni), a naspat pojde paket podla default routy smerom von.. Cize toto nie je Tvoj problem. Ak mas problem s divnymi hlaskami tak je za tym nieco ine,.

Ne, tak to by opravdu nefugovalo ...

Boze lidi, nez neco napise tak si o tom neco zjistete ...

NAT dela presne toto:

Paket src=X, dst=Y ... prijde z interni site. Tzn X je PRIVATNI IP, Y je VEREJNA IP

Nat PREPISE src=K ... kde K je VEREJNA IP natujici krabky.

Cil (Y) tedy dostane paket src=K, dst=Y. Odpoved vraci v podobe paketu src=Y, dst=K

Tudiz neodpovida vlastne X, ale K. Kdyz paket dorazi K, tak ten ale VI (=ma ulozeno v nat tabulce) ze muze dojit odpoved od Y, a tudiz opet zmeni tentokrat na paket src=Y, dst=!!X!! ... a tenhle paket normalne odroutuje = protoze vi ze na internim rozhrani ma ten privatni rozsah, posle to prave tam.

A presne na tomhle je zalozenej i princip jak projit NATem zvenku dovnitr. KAZDEJ router odroutuje paket, pro kterej zna cestu. Pokud tudiz na K prijde paket s dst X, tak se nebude natovat (neodpovida ocekavany odpovedi) ale bude se routovat = doruci se. Takovej paket by sice hypoteticky nemel dorazit, protoze hypoteticky by kazdej router na internetu mel privatni rozsahy at uz v src nebo dst zahazovat. Ale spousta z nich to nedela.

Bonusem tu pak jeste je sourcerouting = do paketu se daj vymenovat routery(IPcka) pres ktery ma paket putovat. U NATu staci vyjmenovat dve - verejnou adresu natu a cilovou privatni adresu. 99% soho krabek tohle doruci.

Proto je velice podstatny mit spravne nastavenej firewall, kterej presne tohle znemozni. A proto kazdej, kdo tu breci jak nutne potrebuje nat aby ochranil svoji sit je nebetycnej kokot. Protoze prave kvuli tem zmenam adres v prubehu dorucovani paketu neni vubec jednoduchy (=je to hromada pravidel ktery sou vlastne nadbytecny) ten firewall nakonfigurovat spravne. Narozdil od situace, kdy jsou na obou stranach verejny rozsahy, a tudiz se da jednoduse rict, ze se nemaji dorucovat pakety do rozsahu vnitrni site.

...
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Aby pravidla byla jasnější a bylo to přehlednější?
Nebo pro to jsou bezpečnostní důvody?
Ne kazdej chce aby se mu IPcka menila jak si router zrovna usmysli, a nekteri maji verejnych IPcek vic, a ruzny adresy maji ruzny ucely. Maskarada navic historicky mela ponekud jiny (a velmi neprijemny) vlastnosti.  Zcela bezne muzes mit trebas od ISPka pridelenou krome verejny jeste privatni adresy a na ty rozhodne nic natovat nechces.

Nekdy se bez toho bohuzel neobejdes.

Re:IPtables a zařízení za NAT
« Odpověď #27 kdy: 13. 08. 2018, 17:48:42 »
Najlepsie nastartovat virtualky, tcpdump a overit si to osobne..  :D
« Poslední změna: 13. 08. 2018, 17:51:53 od snuff1987 »

Re:IPtables a zařízení za NAT
« Odpověď #28 kdy: 13. 08. 2018, 18:26:07 »
Tak som si to checkol, ospravedlnujem sa..Ano treba robit aj SNAT/MASQUERADE  na odchadzajucom interfacy smerom do vnutornej siete.. Povodne MASQUERADE pravidlo sa aplikuje na nove spojenia smerom zvnutra, cize toto spojenie nijako neovplyvni..

Cize aby to fungovalo musis robit na routri v  PREROUTINGu DNAT na vnutornu IP a nasledne v POSTROUTINGU SNAT alebo MASQUERADE.

Re:IPtables a zařízení za NAT
« Odpověď #29 kdy: 13. 08. 2018, 19:12:22 »
Tak som si to checkol, ospravedlnujem sa..Ano treba robit aj SNAT/MASQUERADE  na odchadzajucom interfacy smerom do vnutornej siete.. Povodne MASQUERADE pravidlo sa aplikuje na nove spojenia smerom zvnutra, cize toto spojenie nijako neovplyvni..
Ano, tak je to správně. O přepsání cílové adresy paketu, který je odpovědí na paket, na kterém byl proveden DNAT, se postará samotné jádro. Jedině to má totiž dostatek informací.

Cize aby to fungovalo musis robit na routri v  PREROUTINGu DNAT na vnutornu IP a nasledne v POSTROUTINGU SNAT alebo MASQUERADE.
Nesmysl. Výše jsem to vysvětloval, vyzkoušejte si to. Na to, abyste dělal reverzní NAT, nemáte k dispozici potřebné informace. Když jádro dělá SNAT, mění zdrojovou IP adresu, ale také může změnit zdrojový port! Představte si, že máte v privátní síti dva počítače, které se oba rozhodnou přes váš NAT (SNAT, maškarádu) připojit pomocí HTTPS protokolu na portu 443 na server 1.1.1.1. Cílová dvojice adresa:port tedy bude v obou případech 1.1.1.1:443, zdrojová IP adresa bude po SNATu veřejná IP adresa routeru – ale čtveřice zdrojové a cílové IP adresy a portů identifikuje TCP/IP spojení, nemohou zároveň existovat dvě spojení, která budou mít tyto údaje stejné. Takže SNATu nezbývá, než jeden z těch odchozích portů změnit. Kdybyste pak u příchozích paketů dělal DNAT ručně, jak byste věděl, který port patří kterému počítači v privátní síti?

Takže když děláte SNAT nebo maškarádu, definujete jen pravidla pro odchozí pakety a jádro samo automaticky aplikuje reverzní pravidla na příchozí pakety (a případně samo mění port podle toho,jak ho změnilo u odchozího paketu). No a DNAT se chová úplně stejně, například protože by bylo nesmyslné, aby se to pro DNAT chovalo jinak, než pro SNAT.