Portál AbcLinuxu, 12. května 2025 11:34

Dotaz: Dvě připojení k internetu na jednom serveru

4.9.2014 11:46 semtex | skóre: 24 | blog: semtex
Dvě připojení k internetu na jednom serveru
Přečteno: 1071×
Odpovědět | Admin
Zdravím, řeším následující problém. Doteď je na jednom serveru (který je gw, webserver, mailserver) 2Mbit připojení od poskytovatele A s následujícími parametry:
network: aaa.aaa.aaa.220
gateway (adresa modemu): aaa.aaa.aaa.221
IP: aaa.aaa.aaa.222
bcast: aaa.aaa.aaa.223
Nyní je tam nataženo připojení od poskytovatele B 20Mbit, na které se přejde. Toto připojení má parametry:
network: bbb.bbb.bbb.48
gateway (modem): bbb.bbb.bbb.49
IP: bbb.bbb.bbb.50-54 (pro server jako gw 50)
bcast: bbb.bbb.bbb.55
Než se ale zařídí změna dns záznamů, chtěli bychom udělat následující – v serveru 3 síťové karty. Pro připojení sítě do internetu použít poskytovatele B, pro web a mail server poskytovatele A (vlastně jen pro přístup zvenku na www a maily).

Když nahodím rozhraní poskytovatele B (eth2) a SNAT předělám na toto rozhraní, tak internet zevnitř funguje, ale přestane fungovat přístup zvenku na rozhraní poskytovatele A (eth0). Zevnitř i zvenku se dopingám na modem (aaa.aaa.aaa.221), ale zvenku už se nedopingám na aaa.aaa.aaa.222 Když shodím eth2 (ifdown eth2), tak se již na eth0 zvenku dopingám :-(

Routovací tabulka vypadá následovně:
aaa.aaa.aaa.220    *     255.255.255.252    U   0    0    0    eth0
192.168.1.0        *     255.255.255.0      U	0    0    0    eth1
bbb.bbb.bbb.48     *     255.255.255.248    U	0    0    0    eth2
default   bbb.bbb.bbb.49 0.0.0.0            UG  0    0    0    eth2
Už si vůbec nevím rady, nezapomněl jsem na něco? Děkuji za každý nápad.
Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.9.2014 11:58 Filip Jirsák
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud byste měl veřejné IP adresy a ISP neblokoval odchozí provoz s cizí zdrojovou IP adresou, normálně by vám to fungovalo. Když píšete o SNATu, máte ale pravděpodobně privátní IP adresy a před serverem je nějaký NAT. Pak musí jít pakety s odpovědí stejnou cestou, kterou přišel požadavek (aby se na nich provedl správně reverzní NAT). Každopádně pokud chcete pakety posílat tím spojem, který patří k určité zdrojové IP adrese, potřebujete tzv. source policy routing. Odkaz na návod v FAQ: Jak na připojení k internetu přes dva ISP? Stručně řečeno – musíte mít dvě routovací tabulky (každá bude mít jako výchozí bránu uvedeného jiného ISP), a mezi těmito tabulkami vybírat nějakým pravidlem (ve vašem případě podle zdrojové IP adresy).
4.9.2014 12:04 semtex | skóre: 24 | blog: semtex
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Omlouvám se, toto jsem zcela neobjasnil - obě adresy od obou providerů jsou veřejné. SNAT tam mám kvůli lokální síti (je tam víc PC).
4.9.2014 12:10 semtex | skóre: 24 | blog: semtex
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Ale teď když koukám na tu kapitolu 4, nevyřešil by můj problém ip rule? Že bych změnil:
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default
na
0:      from all lookup local
32765:  from all to aaa.aaa.aaa.222 iif eth0 lookup main
32766:  from all lookup main
32767:  from all lookup default
Nebo to je blbost?
4.9.2014 20:03 semtex | skóre: 24 | blog: semtex
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Hmm, tak nevím, zkouším a nic :-(

Přitom si říkám, proč by to vlastně nemělo fungovat - 2 různé routery od 2 různých ISP, 2 veřejné adresy. eth0 - ISP1, eth1 - LAN (NAT), eth2 - ISP2

A teď udělám:
1) eth0 up, eth2 down - zvenku opingám eth0
2) eth0 down, eth2 up - zvenku opingám eth2
3) eth0 up, eth2 up - zvenku opingám jen eth2, eth0 ne
Jsem z toho nějakej jalovej. Přitom si říkám, že když mají obě síťovky veřejné adresy, tak by to mělo být stejné, jako když bych tam měl dva různé servery :-(
4.9.2014 20:36 Petr
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
"Přitom si říkám, že když mají obě síťovky veřejné adresy, tak by to mělo být stejné, jako když bych tam měl dva různé servery :-(" - a to je prave ten omyl - muzes mit kolik chces sitovek , ale pokud je jedna routovaci tabulka a tedy jedna default gw tak to proste nebude fungovat kvuli filtraci na IP spoofing. Podivej se poradne na odpoved z 11:58 od Filipa Jirsáka. Nebudu znova psat co jiz jasne napsal.
5.9.2014 00:29 semtex | skóre: 24 | blog: semtex
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Omlouvám se, ale už jsem asi natvrdlej... Já ale totiž nepotřebuju vybírat, do které routovací tabulky to půjde podle zdrojové adresy, ale podle cílové. Zkusil jsem přidat rule, že když jdu na adresu síťovky eth0 (ta odpovídá právě adrese www serveru), tak aby šel na tabulku xxx. No a v tabulce xxx jsem dal defaultní routu via ISP1, ale stejně mi to nepomohlo. Asi to už zabalím :-(
6.9.2014 10:00 Filip Jirsák
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Podle cílové adresy se vybírá už v rámci jedné routovací tabulky, na to jich nepotřebujete víc. Ale pokud ISP, kterého teď máte jako výchozí bránu, blokuje pakety se zdrojovou IP adresou, která není z jeho rozsahu, potřebujete vybírat routovací tabulku podle zdrojové IP adresy. Máte IP adresu IP1 přidělenou od ISP1, a IP adresu IP2 přidělenou od ISP2. Dnes, pokud máte jako výchozí bránu nastaveno ISP1, přijde paket s cílovou IP2 přes ISP2. Ten se normálně dostane až na váš server, server chce odpovědět, takže vytvoří paket s cílovou adresou klienta a zdrojovou adresou IP2. Máte jen jednu routovací tabulku, tam najde jádro routu odpovídající cílové adrese (adrese klienta), nejspíš výchozí routu a odešle paket přes ISP1. Ten paket ale považuje za paket s podvrženou zdrojovou IP adresou (IP2 není z jeho rozsahu) a zahodí ho. Vy potřebujete, aby jádro poznalo, že jde o paket "patřící" k ISP2, a to pozná podle (v té chvíli) zdrojové IP adresy - jde o odchozí paket, odpověď, proto jsou v něm zdrojová a cílová IP adresy prohozeny oproti příchozímu paketu.
7.9.2014 23:30 semtex | skóre: 24 | blog: semtex
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Hmm, dík za nakopnutí, tohle mi nedošlo, že to dělám přesně opačně. Zítra vyzkouším.
8.9.2014 17:48 semtex | skóre: 24 | blog: semtex
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Zdravím, tak to tak nějak pomohlo, ale ne úplně všechno mi chodí... Přidal jsem ip rule - když je zdrojová adresa ta původní ip, jde na tabulku ISP2 a v tabulce ISP2 mám defaultní cestu přes tuto eth0. Připojení na net jde přes nového ISP přes eth3.

Nyní jsem v tomto stavu:

eth3 - veřejná IP adresa, několik PC za NATem - připojení na net funguje

eth0 - veřejná IP adresa, tato IP adresa je v DNS záznamu domény. Když se zvenku připojím na www stránky této domény, tak už to funguje (to předtím nešlo).

Nyní jsem si ale všiml, že když chci pingnout z PC za NATem právě tu veřejnou adresu eth0, tak nepingnu a samozřejmě se zevnitř nedostanu tím pádem ani na www stránky... Asi jsem zase na něco zapomněl, akorát opět nevím na co.
8.9.2014 18:21 Filip Jirsák
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Máte v té tabulce pro ISP2 routu do vaší sítě? Pokud byste tam měl jenom tu výchozí bránu, odpověď se nepošle zpět do vaší sítě, ale přes eth0 se ji pokusíte poslat do internetu.
8.9.2014 22:07 semtex | skóre: 24 | blog: semtex
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Ha... Ano, měl jsem tan jen tu výchozí bránu ;-) Děkuji
9.9.2014 07:03 Filip Jirsák
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
V tomhle případě by ty tabulky měly být stejné, jediný rozdíl je v té výchozí bráně. I v té tabulce může být spojovací síť ISP z té druhé karty - pakety od vás pak nemusí běžet venkem přes internet, ale pošlete je rovnou přes druhou kartu. Akorát je potřeba dát pozor na to, že odpovědi půjdou "okolo", takže pokud by ten ISP měl třeba NAT, nebude to fungovat - pak byste tu "zkratku" musel vynechat. Ale ostatní routy (ne k těm ISP ale do vnitřní sítě) musí ve vašem případě být v obou tabulkách a stejné.
8.9.2014 09:19 j
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Az na to, ze kazdej normalni server odpovida z adresy, na kterou paket dorazil. Takze to zadnej problem neni.

"Doteď je na jednom serveru (který je gw, webserver, mailserver) "

=> vse mu bezi na jednom stroji (jestli nekeca), takze zadnej NAT => je zcela nesmyslny to resit, to funguje naprosto normalne od prirody. Pokud mu srv na IPcku neposloucha, tak to pochopitelne fungovat nemuze, ale opet, v defaultni konfiguraci poslouchaj jak web tak mailservery na vsech rozhranich ktery jsou k dizpozici. A zcela spravne vraci odpovedi se spravnou src IP.
8.9.2014 09:37 Filip Jirsák
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Server ani z jiné IP adresy, než na kterou přišel požadavek, odpovědět nemůže. Protože pak by si ten paket odesílající strana nespárovala do správného spojení. Ale odchozí IP adresa je při jednoduchém routování nezajímavá, protože v routovací tabulce se samozřejmě vyhledává podle cílové IP adresy a zdrojová IP adresa se vůbec nebere v úvahu. Proto je potřeba v tomto případě mít routovací tabulky dvě, a nejprve podle zdrojové IP adresy jednu z nich vybrat. Problém není v tom, že by server odpovídal se špatnou zdrojovou IP adresou. Problém je v tom, že paket se správnou zdrojovou IP adresou pošle přes linku ISP, do jehož rozsahu tato IP adresa nepatří. Systémy ISP to vyhodnotí jako podvrženou zdrojovou IP adresu (nevědí, že daný zákazník má linku ještě od jiného ISP a ta IP adresa patří do rozsahu tohoto druhého ISP), a tak paket zahodí. Klidně se to dá odsledovat tcpdumpem na rozhraní, které vede k ISP, který je nastaven jako výchozí brána. Na tomto rozhraní se objeví paket se zdrojovou IP adresou patřící do rozsahu druhého ISP, ale k cíli ten paket už nedojde.
6.9.2014 09:21 Stanislav Petr | skóre: 27 | Praha
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Potrebujes si udelat dve routovaci tabulky kazdou s jinou default routou a pomovi policy base routing (ip rules) tridit odchozi pakety do spravny tabulky podle zdrojove IP adresy.
No jo... Co bych cekal od systemu, kterej se vypina tlacitkem start... http://glux.org
pepe_ avatar 6.9.2014 20:51 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru

Ukázka postupu nebude ? Děkuji.

6.9.2014 22:23 Filip Jirsák
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Odkaz je hned v prvním komentáři.
7.9.2014 08:12 Slim
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Já bych zkusil SNAT na těch internetových rozhraních směrem dovnitř

iptables -I PREROUTING -i eth0 -j SNAT aaa.aaa.aaa.220
iptables -I PREROUTING -i eth2 -j SNAT bbb.bbb.bbb.48

měl by stačit i pouze SNAT na rozhraní, které není default bránou tj. pouze

iptables -I PREROUTING -i eth0 -j SNAT aaa.aaa.aaa.220

ale je to pouze tip, nezkoušel jsem
7.9.2014 08:14 Slim
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
oprava, chybí tam tabulka, samozřejmě správně je
iptables -t nat -I PREROUTING -i eth0 -j SNAT aaa.aaa.aaa.220
7.9.2014 08:45 Filip Jirsák
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
To samozřejmě nebude fungovat. Server by se pokusil odpovědět na adresu odesílatele, v tomto případě tedy (po změně) na svou vlastní adresu, ale on sám žádné spojení nezahájil - takže by se spojení ani nenavázalo. Není potřeba vymýšlet nová řešení, správný způsob řešení je dávno známý, mnohokrát popsaný na internetu a má i svou položku ve zdejší FAQ, protože se na to lidé ptají stále dokola.
7.9.2014 21:38 Slim
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Ale bude to fungovat, stejně jako to funguje analogicky opačným směrem. Provozoval jsem to takto před pár lety, když jsme měnili providera a chvíli souběžně provozovali dvě veřejné IP. Server odpoví na vlastní adresu na port vytvořený natem, který odpověď přeloží na správnou cílovou adresu a port. Jediná nevýhoda je, že cílový server nezná přesnou adresu stroje, který inicializoval požadavek.
7.9.2014 22:08 Slim
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
No ale vzhledem k tom, že SNAT nelze použít s PREROUTING, tak je to špatně. Bohužel už to je pár let, ale vím, že když jsem řešil stejný problém jako tazatel, vyřešil jsem to pravidly v iptables, zítra zkusím podumat jak.
8.9.2014 22:03 Filip Jirsák
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Pouze s SNATem se to dá vyřešit tehdy, když máte ke každému ISP jeden router, a server je připojený k oběma. Routery pak provoz z venku SNATují na svou adresu, server tedy odpoví tomu správnému routeru a ten už to pošle svou výchozí bránou. Přesunout ten SNAT na ten server by šlo jedině v případě, že by se odSNATování dělalo až po routování, což od oka asi pravda nebude (ale nezkoumal jsem to). Každopádně bych zbytečně neměnil pakety, když se to dá úplně normálně udělat pomocí pravidel a dvou routovacích tabulek.
8.9.2014 08:27 Filip Jirsák
Rozbalit Rozbalit vše Re: Dvě připojení k internetu na jednom serveru
Server odpoví na vlastní adresu na port vytvořený natem, který odpověď přeloží na správnou cílovou adresu a port.
A na tu cílovou adresu se to pošle přes výchozí bránu, tedy vše přes jednoho ISP. Pokud má ten ISP zapnutou ochranu proti podvržením IP adresám (v případě tohoto dotazu zřejmě má), pak zahodí pakety, které patří do „spojení“ od druhého ISP – takže se spojení ani nenaváže.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.