Nastavení routování

R223

Nastavení routování
« kdy: 12. 11. 2018, 02:13:41 »
Ahoj,

snažím se o nastavení routingu v rámci svých několika sítí ale:
Situace:
- tři lokální sítě spoujené mezi sebou pomocí openVPN, s jedním centrálním bodem na VPS. Sítě jsou mezi sebou routované a zařízení na sebe vidí.
- centrální bod má jedinný veřejnou IP.
Potřebuju mít možnost směrovat provoz na tuto IP do sítě.
- rozběhal jsem to až do stavu, kdy se dotaz z venku přeloží (dst-nat), dojde až k cíli, ten odpoví, ale odpověď se pošle ven přes první výchozí bránu, tj. se ztratí.

Moc nevím co s tím. Poradíte?


Re:Nastavení routování
« Odpověď #1 kdy: 12. 11. 2018, 07:11:44 »
Tam, kde děláte DNAT, musíte v tomhle případě dělat i SNAT. NATovaný paket pak bude mít jako adresu zdroje uvedenou IP adresu toho NATujícího zařízení, odpovědní paket doputuje zase k tomu NATu, ten DNAT a SNAT se provedou obráceně a teprve pak se ten paket odešle zpět do internetu.

expert

Re:Nastavení routování
« Odpověď #2 kdy: 12. 11. 2018, 08:01:02 »
Za 1000,- nastavím.

M.

Re:Nastavení routování
« Odpověď #3 kdy: 12. 11. 2018, 09:11:33 »
Nejjednodušší je co píše Jirsák, udělat i SRCNAT na tom VPN koncentrátoru, tím ale přijdu v těch koncových službách i informaci o zdrojové IP (vyjma toho, že dle IP poznám, že to přišlo asi z Internetu).
Není popsáno, co funguje jako ty brány/OpenVPN klienti na těch 3 lokalitách. Ale pokud je to něco rozumného (třeba odvozeno od linuxu), tak můžu použít značkování spojení - příchozí spojení přes OVPN si označkuji nějakou značkou a a až paket se bude vracet, tak pokud na daném spojení mám connmark z vpn, tak nasměruji na alternativní routovací tabulku, co to pošle zpět do VPN tunelu.

Kolemjdoucí

Re:Nastavení routování
« Odpověď #4 kdy: 12. 11. 2018, 09:55:32 »
Tam, kde děláte DNAT, musíte v tomhle případě dělat i SNAT. NATovaný paket pak bude mít jako adresu zdroje uvedenou IP adresu toho NATujícího zařízení, ...

Tvrzení že je nutné dělat SNAT je naprosto nepravdivé a to z toho důvodu že existují i jiná řešení, která mají navíc tu výhodu že na cílových serverech bude vidět nezměněná zdrojová IP adresa. To že cílový server neuvidí skutečnou IP adresu klienta často znamená že je to řešení které se pan Jirsák naprosto chybně prohlašuje za jediné možné v praxi nepoužitelné a je třeba použít něco šíkovnějšího, třeba "iptables -j MARK --set-mark 1234" na příchozí pakety a "ip rule add fwmark 1234 table 1234" pro routování odchozích paketů zpátky přes VPN (routovací tabulka 1234 musí samozřejmě být správně nastavená).


R223

Re:Nastavení routování
« Odpověď #5 kdy: 12. 11. 2018, 10:45:14 »
V různých kombinacích je v cestě pfSense a Mikrotik.

S SNATem jsem měl na pfSense problémy - nastavil jsem, ale prostě nefungoval....

Re:Nastavení routování
« Odpověď #6 kdy: 12. 11. 2018, 10:53:03 »
řešení které se pan Jirsák naprosto chybně prohlašuje za jediné možné
Je to trollení nutné? Navíc když si každý může jednoduše odskrolovat o půl obrazovky výše, přečíst si mou odpověď kde uvidí, že jsem nabídl řešení, ale nikde jsem netvrdil, že je jediné možné – takže si prostě vymýšlíte.

je třeba použít něco šíkovnějšího, třeba "iptables -j MARK --set-mark 1234" na příchozí pakety a "ip rule add fwmark 1234 table 1234" pro routování odchozích paketů zpátky přes VPN (routovací tabulka 1234 musí samozřejmě být správně nastavená).
Tady je ovšem potřeba doplnit, že to řešení je ve skutečnosti mnohem komplikovanější, než se z téhle jedné věty zdá – takhle jednoduché řešení by fungovalo jen v některých speciálních případech topologie těch sítí.

Místo, kde je nejlepší označkovat pakety, že přišly z VPN, je ten VPN koncentrátor, kde se předpokládám dělá i ten DNAT. Označovat je kdekoli později a vycházet přitom z předpokladu „když to má veřejnou zdrojovou IP adresu a míří to na cílový server, určitě to muselo přijít přes VPN“ se může vymstít, až se konfigurace sítě změní. Za druhé, a to je ještě podstatnější, řešit odchozí provoz pouze vhodnou routovací tabulkou bude fungovat jedině v případě, že ty servery nebo jejich výchozí brána mají přímý link na ten VPN koncentrátor (a ta druhá routovací tabulka musí být tam, odkud ten přímý link vede). Pokud by topologie byla složitější a mezi serverem nejbližší bránou a VPN koncentrátorem byly ještě jiné routery, které mají také přístup do internetu, musela by se ta speciální routovací pravidla nastavit i na nich, aby to fungovalo.

Proto jsem navrhl to řešení s SNATem, protože je to nejjednodušší, vše se vyřeší na jednom místě a nezáleží na topologii zbytku sítě. Pokud někdo umí používat vícenásobné routovací tabulky a značkování paketů, nebude se asi na takhle jednoduchou věc ptát někde na fóru.

Re:Nastavení routování
« Odpověď #7 kdy: 12. 11. 2018, 10:55:10 »
V různých kombinacích je v cestě pfSense a Mikrotik.

S SNATem jsem měl na pfSense problémy - nastavil jsem, ale prostě nefungoval....
Co je za systém na tom centrálním bodu, který má veřejnou IP adresu? Ten DNAT děláte tam?

Kolemjdoucí

Re:Nastavení routování
« Odpověď #8 kdy: 12. 11. 2018, 11:15:40 »
řešení které se pan Jirsák naprosto chybně prohlašuje za jediné možné
Je to trollení nutné? Navíc když si každý může jednoduše odskrolovat o půl obrazovky výše, přečíst si mou odpověď kde uvidí, že jsem nabídl řešení, ale nikde jsem netvrdil, že je jediné možné – takže si prostě vymýšlíte.

Máte problém se základním chápáním psaného textu, a co hůř dokonce textu který jste sám napsal: "Tam, kde děláte DNAT, musíte v tomhle případě dělat i SNAT." Doporučuji zaměřit pozornost na slovo MUSÍTE kterým jste se zbytku světa snažil sdělit že žádné jiné varianty neexistují přesto že to není pravda, existují!

je třeba použít něco šíkovnějšího, třeba "iptables -j MARK --set-mark 1234" na příchozí pakety a "ip rule add fwmark 1234 table 1234" pro routování odchozích paketů zpátky přes VPN (routovací tabulka 1234 musí samozřejmě být správně nastavená).
Tady je ovšem potřeba doplnit, že to řešení je ve skutečnosti mnohem komplikovanější, než se z téhle jedné věty zdá – takhle jednoduché řešení by fungovalo jen v některých speciálních případech topologie těch sítí.

Místo, kde je nejlepší označkovat pakety, že přišly z VPN, je ten VPN koncentrátor, kde se předpokládám dělá i ten DNAT. Označovat je kdekoli později a vycházet přitom z předpokladu „když to má veřejnou zdrojovou IP adresu a míří to na cílový server, určitě to muselo přijít přes VPN“ se může vymstít, až se konfigurace sítě změní.

Uvádíte tu místo které pokládáte za nejlepší pro značkování paketů a uvádíte ho špatně, takže celá následující úvaha je nesmyslná. Správné místo pro značkování paketů je ten konec VPN který je v lokální síti a do značkovacího pravidla je potřeba zahrnout příhozí interface (z VPN). Naopak DNAT patří na ten konec VPN co má veřejnou IP adresu, tak aby se aplikovalo standardní routování na privátní IP adresy za VPN.

Re:Nastavení routování
« Odpověď #9 kdy: 12. 11. 2018, 12:29:13 »
Doporučuji zaměřit pozornost na slovo MUSÍTE kterým jste se zbytku světa snažil sdělit že žádné jiné varianty neexistují
Není vám to hloupé, vysvětlovat mi, co jsem myslel textem, který jsem napsal? „Musíte“ neznamená „žádné jiné varianty neexistují“. Když se někde v baráku dole na recepci zeptáte, kde máte zaplatit poplatek za psa, odpoví vám: „To musíte výtahem do třetího patra, pak se dáte doleva a jsou to na konci chodby dveře číslo 327.“ Tak se s nimi hlavně nezapomeňte pohádat, že nemusíte, že můžete jít pěšky po schodech, můžete jet výtahem do 5. patra a sjet dvě patra po zábradlí a nebo že si můžete nechat přistavit požární žebřík a vlézt tam oknem.

Správné místo pro značkování paketů je ten konec VPN který je v lokální síti
Potřebujete si označit, na kterém zařízení proběhl ten DNAT a pak zařídit, aby se odpovědní paket dostal opět na toto zařízení, které má tabulku spojení, najde v ní údaje pro odpovědní paket a upraví ten odpovědní paket reverzní operací, než jakou udělal na příchozím paketu DNATem (tedy změní zdrojovou IP adresu a případně zdrojový port paketu – ale záměrně to nechci nazývat SNATem).

Ono se totiž klidně může stát, že tazatel síť za dva roky rozšíří a bude mít dvě zařízení s veřejnou IP adresou, a servery bude chtít mít dostupné přes obě dvě ty IP adresy. A v tom okamžiku to vaše řešení „přišlo to z VPN, tudíž to muselo přijít z té jediné veřejné IP adresy“ přestane fungovat.

Ostatně ona je hloupost značkovat vše, co přišlo přes VPN, i když zatím má jen jednu veřejnou IP adresu – protože byste takhle značkoval veškerý provoz, který přišel z VPN, tedy i ten z těch zbývajících dvou lokálních sítí. A ten nepotřebujete hnát přes ten VPS s veřejnou IP adresou, když může jít přímo přes VPN.

Radek

Re:Nastavení routování
« Odpověď #10 kdy: 12. 11. 2018, 12:49:57 »
Ahoj,

existuje vice reseni. Jak nekteri pisi, muzete udelat kombinaci DNAT a SNAT, pripadne znackovani packetu. Take muzete smerovat veskery provoz z lokalit pres VPN a az pak do internetu.

Pripadne, pro vas asi nejjednodussi reseni. Nejaky "TCP Proxy" na centralnim bodu, napriklad :
Kód: [Vybrat]
socat TCP-LISTEN:80,fork TCP:202.54.1.5:80
Pokud se jedna o nejakou webovou aplikaci, muzete pouzit i nginx/apache jako reverzni proxy a jako bonus tam muzete pridat https od Let's Encrypt.

Radek

Re:Nastavení routování
« Odpověď #11 kdy: 12. 11. 2018, 13:43:03 »
Take muzete smerovat veskery provoz z lokalit pres VPN a az pak do internetu.
Tím se z toho VPS stává single point of failure pro připojení těch lokalit do internetu, navíc může být úzkým hrdlem z hlediska propustnosti sítě.

Pripadne, pro vas asi nejjednodussi reseni. Nejaky "TCP Proxy" na centralnim bodu, napriklad :
Kód: [Vybrat]
socat TCP-LISTEN:80,fork TCP:202.54.1.5:80
Pokud se jedna o nejakou webovou aplikaci, muzete pouzit i nginx/apache jako reverzni proxy a jako bonus tam muzete pridat https od Let's Encrypt.
Ano, pokud ten centrální bod je stejně nějaký počítač (vypadá to, že ano), nainstaloval bych tam nginx a HTTP/HTTPS hnal přes něj jako přes reverzní proxy (IP adresa klienta se pak předává v hlavičkách), případně jiné protokoly pak přes stream proxy. nginx podporuje PROXY protokol, kterým je v takovém případě také možné předat informace o zdrojové IP adrese.

Navíc tím odpadnou všechny problémy s NATOváním a routováním, můžete spravovat všechny HTTPS certifikáty na jednom místě, můžete směrovat požadavky do různých sítí na základě cesty (např. example.com/pobocka1 do jedné sítě a example.com/pobocka2 do druhé), a pořád takhle můžete směrovat i obecná TCP spojení.

R223

Re:Nastavení routování
« Odpověď #12 kdy: 12. 11. 2018, 14:38:35 »
Proto jsem navrhl to řešení s SNATem, protože je to nejjednodušší, vše se vyřeší na jednom místě a nezáleží na topologii zbytku sítě. Pokud někdo umí používat vícenásobné routovací tabulky a značkování paketů, nebude se asi na takhle jednoduchou věc ptát někde na fóru.

Ono to používat umím, ale tak na Mikrotiku. Nastavení podle stejné logiky na tom pfSense prostě nedělá to samé.
Routerů je samozřejmě v cestě několik, každý saozřejmě pošle provovoz mířící mimo síť rovnou do internetu.

Koncentrátor je pfSense.

Re:Nastavení routování
« Odpověď #13 kdy: 12. 11. 2018, 15:30:34 »
Ono to používat umím, ale tak na Mikrotiku. Nastavení podle stejné logiky na tom pfSense prostě nedělá to samé.
Routerů je samozřejmě v cestě několik, každý saozřejmě pošle provovoz mířící mimo síť rovnou do internetu.

Koncentrátor je pfSense.
pfSense nepoužívám, ale zkuste napsat, jak jste tam ten SNAT nastavil, buď to dáme dohromady, nebo odpoví někdo, kdo pfSense zná. Ale v podstatě by mělo stačit buď tam zapnout maškarádu, a nebo nastavit SNAT na IP adresu vnitřního rozhraní toho VPS (toho rozhraní, kterým se pak paket odesílá na cílový server).

Jinak osobně bych – když tam máte plnohodnotný VPS a FreeBSD – v tomhle případě volil ten nginx nebo ha-proxy, pokud ta spojení na servery mají být nějaké normální protokoly nad TCP. Dostanete tím nezávislost na topologii vašich sítí a budete moci lépe pracovat s příchozím provozem.

R223

Re:Nastavení routování
« Odpověď #14 kdy: 12. 11. 2018, 18:18:33 »
Ono to používat umím, ale tak na Mikrotiku. Nastavení podle stejné logiky na tom pfSense prostě nedělá to samé.
Routerů je samozřejmě v cestě několik, každý saozřejmě pošle provovoz mířící mimo síť rovnou do internetu.

Koncentrátor je pfSense.
pfSense nepoužívám, ale zkuste napsat, jak jste tam ten SNAT nastavil, buď to dáme dohromady, nebo odpoví někdo, kdo pfSense zná. Ale v podstatě by mělo stačit buď tam zapnout maškarádu, a nebo nastavit SNAT na IP adresu vnitřního rozhraní toho VPS (toho rozhraní, kterým se pak paket odesílá na cílový server).

Jinak osobně bych – když tam máte plnohodnotný VPS a FreeBSD – v tomhle případě volil ten nginx nebo ha-proxy, pokud ta spojení na servery mají být nějaké normální protokoly nad TCP. Dostanete tím nezávislost na topologii vašich sítí a budete moci lépe pracovat s příchozím provozem.
Kazdopadne diky. Jsem rad, ze moje prvotni myslenka se SNAT nebyla chybna. On se ten pfSense obcas chova divne, ruzne apliku/neaplikuje pravidla. Kdyz jsou pak v ceste 3, blbe se to ladi. Uz odladit to cele divadlo s VPN mezi sebou byl celkem porod. Obecne vetsinou vim co delam, ale nemam s tim tak castou zkusenost, abych si byl jisty.
Na reseni s proxy se podivam, nikdy jsem to nepouzival.

Neni to pro me uplne kriticka vec, ale potrebuju to postupne doresit a mit nektere veci pristupne z venku mimo VPN.