Pomoc s iptables pro dvě rozhraní na web serveru

Wosa79

Pomoc s iptables pro dvě rozhraní na web serveru
« kdy: 12. 12. 2017, 12:08:20 »
Ahoj.

Jedná se o tento problém:

Linux má dvě síťové rozhraní (eth a vpn). Na VPN je statická ipadresa, na eth může být statická i z DHCP. Adresy na VPN se používají z rozsahu 10.0.0.0/8. Dané zařízení je vždy přiřazeno do sítě 10.x.y.0/24. Protože je rozsah 10.0.0.0/8 veřejně použitelný je možné, že eth rozhraní dostane z DHCP serveru adresu, která je ze stejného rozsahu jako je adresa na VPN rozhraní. Na zařízení běží web server, ssh server.

Problém:

paket přijde z VPN rozhraní -> je zpracován web serverem -> odpověď odchází na VPN rozhraní
paket přijde z eth rozhraní -> je zpracován web serverem -> odpověď odchází na eth rozhraní

Pokud jsou adresy obou rozhraní z jednoho rozsahu pak se dle routovací tabulky pakety pošlou na eth a vpn je nepoužitelná. Změna rozsahu na VPN rozhraní není možné, protože ip adresa se používá jako unikátní identifikace zařízení a každý zákazník má vlastní rozsah a na něm může být několik zařízení.

Řešní:

Chtěl jsem to vyřešit nastavení v iptables, že všecky pakety co přijdou z VPN rozhraní budou označeny "--set-mark" a poté při routování použiju další routovací tabulku, kde na označené pakety použiju defalt gateway VPN. Bohužel se mi to nedaří rozchodit a tak si nejsem jistej, zda je to vůbec správná cesta.

Předem děkuji za pomoc.

Vašek


Lol Phirae

Re:Pomoc s iptables pro dvě rozhraní na web serveru
« Odpověď #1 kdy: 12. 12. 2017, 12:29:50 »
Řešení: Přečti si RFC1918, přesuň VPN na jiný vyhrazený rozsah a přestaň vymýšlet kokotiny a rovnáky na vohejbák.

Wosa79

Re:Pomoc s iptables pro dvě rozhraní na web serveru
« Odpověď #2 kdy: 12. 12. 2017, 13:12:12 »
Řešení: Přečti si RFC1918, přesuň VPN na jiný vyhrazený rozsah a přestaň vymýšlet kokotiny a rovnáky na vohejbák.

Nerad to říkám, kamaráde, ale tvá rada mi rozhodně nepomohla. A pokud neumíš číst tak mi radši neodpovídej.
Psal jsem, že u zařízení nelze změnit rozsah potažmo adresu pro VPN rozhraní.

Cek

Re:Pomoc s iptables pro dvě rozhraní na web serveru
« Odpověď #3 kdy: 12. 12. 2017, 13:38:24 »
Řešení: Přečti si RFC1918, přesuň VPN na jiný vyhrazený rozsah a přestaň vymýšlet kokotiny a rovnáky na vohejbák.

Nerad to říkám, kamaráde, ale tvá rada mi rozhodně nepomohla. A pokud neumíš číst tak mi radši neodpovídej.
Psal jsem, že u zařízení nelze změnit rozsah potažmo adresu pro VPN rozhraní.

No tak nastav DHCP na eth aby pouzivalo jiny rozsah nez 10.0.0.0/8 kdyz to nejde u tech zarizeni, privatnich rozsahu je prekvapive vic. Navic teda sebrat zarizenima cely ackovy rozsah, tomu se rika slusne plytvani :))) Kolik tech zakazniku proboha je?????

A jninak se musim vyjmecne pridat k LOLovi, vymyslis nesmysly.

Wosa79

Re:Pomoc s iptables pro dvě rozhraní na web serveru
« Odpověď #4 kdy: 13. 12. 2017, 08:51:24 »
Zdravím všechny.
Zřejmě jsem to špatně popsal, ale věc se má takhle:
Vyrábíme zřízení, které si zákazník připojí kde chce (po celé Evropě). Takže nedokážu ovlivnit adresu na eth rozhraní.
Aby si zákazník nemusel zařizovat veřejnou ip adresu pro svá zařízení, tak je to řešený skrze VPN. To zařízení se připojí na náš server, kde má každý zákazník svůj rozsah. Všeckyj sou ale z toho balíku 10/8.
A tím je dané, že není v mé moci nijak změnit rozsah na eth ani na VPN.
Proto bych uvítal, nějaký nápad jak danou situaci řešit. Pokud to ovšem má nějaké řešení.
Díky


Cek

Re:Pomoc s iptables pro dvě rozhraní na web serveru
« Odpověď #5 kdy: 13. 12. 2017, 10:26:23 »
Zdravím všechny.
Zřejmě jsem to špatně popsal, ale věc se má takhle:
Vyrábíme zřízení, které si zákazník připojí kde chce (po celé Evropě). Takže nedokážu ovlivnit adresu na eth rozhraní.
Aby si zákazník nemusel zařizovat veřejnou ip adresu pro svá zařízení, tak je to řešený skrze VPN. To zařízení se připojí na náš server, kde má každý zákazník svůj rozsah. Všeckyj sou ale z toho balíku 10/8.
A tím je dané, že není v mé moci nijak změnit rozsah na eth ani na VPN.
Proto bych uvítal, nějaký nápad jak danou situaci řešit. Pokud to ovšem má nějaké řešení.
Díky

No, na to se vetsinou pouziva softskills :))) Napises do manualu, ze na eth rozhrani nesmi byt z duvodu vyuziti 10.0.0.0/8 VPNkou tyhle adresy a nechas to na zakaznikovi ;-), max to muzes este detekovat a poslat mu chybu v konfiguraci.

Co pouzit ve VPNce IPv6? Teda pokud je este nejaka varianta jak upravit ten produkt....

Ale porad mi zabrani celeho  10.0.0.0/8 prijde jako priserny overkill.....

V

Re:Pomoc s iptables pro dvě rozhraní na web serveru
« Odpověď #6 kdy: 13. 12. 2017, 13:15:34 »
Pokud někdo je schopný, tak naplánuje adresní tak, že nemůže dojít ke kolizi. Takže např. má rozsah typu veřejný použit tam, kde se nemůže na internetu vyskytnou, a sice na VPN jako přidělená adresa. Tj. je za JINOU veřejnou adresou, která už na internetu routovatelná je.

A kdo s tim nepočítal, tak překládá a překládá (=NAT) ... proto se v rozsahu VPN používá rozsah "encryption domain", pouze něco je tam povoleno

BS

Re:Pomoc s iptables pro dvě rozhraní na web serveru
« Odpověď #7 kdy: 13. 12. 2017, 15:53:25 »
Zdrojem problému je pochopitelně nešťastně zvolený rozsah VPN. Korektní řešení je rozsah přesunout, pokud to není možné, pak lze toto řešit pomocí policy routing. Myšlenka je taková, že vytvoříte separátní routavací tabulku pro každé rozhraní (v případě dhcp je potřeba to "dohackovat" do dhcp skriptů a záleží na použitém klientovi). Následně je pak potřeba definovat pravidla, kdy má být použita která tabulka.

Pravidla mohou být například na základě zdrojové adresy (tedy adresy rozhraní), případně na základě iptables mark, takže lze vytvořit opravdu komplexní politiky.

Příklad použití např zde:
http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html

Lze obecně vyhledat řadu příkladů, zajímá vás policy routing, případně source routing. Ve vašem případě by mělo stačit zhruba toto (nesedím u mašiny s Linuxem, takže je to z hlavy a nemusí to fungovat na první dobrou)
1) Je potřeba dodefinovat nové tabulky v /etc/ip_route2/rt_tables, záznamy jsou něco jako
Kód: [Vybrat]
100 eth_table
101 vpn_table
2) Nastavím routy
Kód: [Vybrat]
ip ro add <eth address>/<eth mask> dev eth0 table eth_table
ip ro add <vpn address>/<vpn mask> dev vpn table vpn_table
3) Nastavím pravidla
Kód: [Vybrat]
ip ru add from <eth address> lookup eth_table
ip ru add from <vpn address> lookup vpn_table

Wosa79

Re:Pomoc s iptables pro dvě rozhraní na web serveru
« Odpověď #8 kdy: 15. 12. 2017, 07:54:38 »
Už mi to funguje.
Díky všem.

Cek

Re:Pomoc s iptables pro dvě rozhraní na web serveru
« Odpověď #9 kdy: 15. 12. 2017, 09:30:51 »
Už mi to funguje.
Díky všem.

Tak tomu rikam odpoved ktera vsem ostatnim pomuze....
Napis aspon zhruba jak, at jsme priste chytrejsi, i kdyby to melo byt "diky za prispevek nade mnou, nakopnul me spravnym smerem a nejak tak jsem to udelal"