Portál AbcLinuxu, 6. května 2025 14:19

Dotaz: routing přístupu zvenku

20.5.2012 13:45 adam
routing přístupu zvenku
Přečteno: 587×
Odpovědět | Admin
Prosím zdvořile a snaživě o pomoc. Mám Linuxrouter s :
eth0 s ip 10.0.0.3 + na 10.0.0.138 router s public Internet IP
eth1 s ip 192.168.91.1 - vnitřní klientská síť 1
eth2 s ip 192.168.92.1 - vnitřní klientská síť 2
eth3 s ip 192.168.3.2 + na 192.168.3.1 router s hlavním Inet spojem

(vše netmask /24)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth3
192.168.3.0     *               255.255.255.0   U     0      0        0 eth0
192.168.92.0    *               255.255.255.0   U     0      0        0 eth2
192.168.91.0    *               255.255.255.0   U     0      0        0 eth1
loopback        *               255.0.0.0       U     0      0        0 lo
default         192.168.3.1     0.0.0.0         UG    1      0        0 eth0

Z klientských sítí jde Internetový traffic na default gateway a maškarádou ven.

Je třeba zařídit prostup zvenku přes public Internet IP na stanici (na http) na klientské síti 1 a zpět zase ven přes ten router s Public IP.

Na routeru s PublicIP mám portforward na 10.0.0.3:80 a na linuxrouteru mám forward a překlad na tu stanici 192.168.1.26:80.

Nedaří se mi nastavení, aby se zase pakety vracely zpět (nyní dorazí až k 192.168.1.26, a jak jsem vysledoval, vrací se pak defaultgatewayi dopryč).

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.3 --dport 80 -j DNAT --to 192.168.91.26:80
iptables -A FORWARD -p tcp -i eth3 -o eth1 -d 192.168.91.26 --dport 80 -j ACCEPT

iptables -A INPUT -p ALL -i eth1 -j ACCEPT
iptables -A INPUT -p ALL -i eth2 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -i eth2 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.5.2012 14:00 NN
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podle meho chybi ta cast, ktera ti ten provoz do vnitrni site na port 80 za se odfiltruje a posle spatky a misto toho ti to spadne do maskarady. Takze bych dodelal ten NAT a dal ho pred tu maskaradu:
iptables -t nat -a POSTROUTING -s 192.168.91.26 --sport 80 -j SNAT --to-source 10.0.0.3:80
NN
20.5.2012 17:42 adam
Rozbalit Rozbalit vše Re: routing přístupu zvenku
ano, něco takového tam asi chybí, ale zrovna toto ukazuje chabu v syntaxi...

i když ji zobecním na iptables -t nat -A POSTROUTING -s 192.168.91.26 -j SNAT --to 10.0.0.3 nebo se směrováním na router iptables -t nat -A POSTROUTING -s 192.168.91.26 -j SNAT --to 10.0.0.138 tak to nejede :(
21.5.2012 08:38 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Znamená to, že ten linuxrouter není výchozí brána pro danou stanici? Pak musíte na tom routeru kromě DNATu dělat také SNAT (nebo maškarádu), tj. nastavit paketu pro server jako zdrojovou IP adresu adresu linuxrouteru. Tím pádem stanice (web server) odpoví zpět linuxrouteru, a ten dostane příležitost udělat reverzní operaci k nastavenému DNATu.
iptables -t nat -A POSTROUTING -p tcp -d 192.168.91.26 --dport 80 -j SNAT --to-source 192.168.91.???
PS: Když už prosíte snaživě, byl by takový problém si příspěvek před odesláním prohlédnout, a opravit chybné znaky, formátování kódu a zapnutý caps-lock?
21.5.2012 08:49 adam
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Stanice má IP 192.168.91.26 a její default gateway je linuxrouter IP 192.168.91.1 (tj. ethrozhraní linuxrouteru). Linuxrouter pak má sám defaultgateway 192.168.3.1.

Na tu stanici se zvnějšku ale přistupuje přes třetí rozhraní (přes tu síť 10.0.0.0), takže tudy je potřeba aby to také odešlo...

zatím jsem nepokročil :(
21.5.2012 11:19 NN
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Davas to pravidlo pred tu maskaradu ?

NN
21.5.2012 11:51 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Takže schéma vaší sítě vypadá nějak takhle?
INTERNET ---- LinuxRouter ---- stanice (web server)
     \             |
      \            |
       \------- Router
Pak na LinuxRouteru není potřeba dělat SNAT. Je tam jenom potřeba zařídit správné routování těch spojení, která pocházejí z routeru. Udělal bych to pomocí pravidel (ip rule) z balíčku iproute2. Pro pakety se zdrojovou IP adresou v síti 10.0.0.0 bych nastavil jinou routovací tabulku, kde bude jako default gateway uveden ten Router. Říká se tomu source based routing.
21.5.2012 16:58 adam
Rozbalit Rozbalit vše Re: routing přístupu zvenku
ne takto :

INTERNET 1 (default gw linuxrouteru)------------ eth0

vnitřní síť se stanicí (webserver) ----------------- eth1

vnitřní síť 2 ------------------------------------------- eth2

INTERNET 2 veřejné IP (zde naslouchá webserver stanice)-- eth3

Linuxrouter má rozhraní eth0-3

INTERNET 1 a 2 jsou segmenty kde jsou ADSLroutery s přístupem ven.
21.5.2012 18:03 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: routing přístupu zvenku
V tomhle se nevyznám. V původním dotazu je napsáno, že při přístupu z internetu na web server jde paket nejprve přes Router a pak přes LinuxRouter. To bych v tom schématu potřeboval vidět. A pak další spoje – k webovému serveru a do internetu.

Druhá možnost zapojení, aby komunikace šla přes Router a pak LinuxRouter by bylo lineární
Internet ---- Router ---- LinuxRouter ---- web server
ale tomu zase neodpovídají IP adresy a výchozí brány zmiňované v dalších komentářích.

Nejlepší by asi bylo namalovat nějaké jednoduché schéma v grafickém editoru (do schématu se pak vejdou i IP adresy) a obrázek vložit jako přílohu komentáře.
21.5.2012 18:43 adam
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Příloha:
obrázek přílohou
21.5.2012 21:08 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: routing přístupu zvenku
To je v podstatě to, co jsem namaloval výše - to, že linuxový router není ani přes eth0 připojen přímo "do internetu", ale do jiného routeru, tam nehraje roli. Platí tedy to, co jsem napsal v daném komentáři - musíte nějak rozpoznat odchozí pakety pro spojení, která na router přišla přes síť 10.0.0.0/16, a ty směrovat pomocí jiné routovací tabulky. Já bych je rozpoznával podle toho, že mají jako zdrojovou IP adresu buď 10.0.0.3, nebo celý odpovídající rozsah. Tj. když na webserver dorazí paket zahajující HTTP spojení, webserver odpoví paketem, kde bude jako zdrojová adresa 192.168.1.26. Paket přijde na linuxový router, tam se "odDNATuje", tj. 192.168.1.26 se přepíše na 10.0.0.3. Pak se podle pravidla vloženého přes ip rule vybere speciální routovací tabulka, kde bude jako výchozí brána uveden router 10.0.0.138 a paket odejde na router inet2, kde se znova "odDNATuje" na veřejnou IP adresu a hurá do internetu.

A nebo si můžete přát rychlé zprovoznění IPv6.
22.5.2012 11:05 miro
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Tak zkuste použít ten příkaz, který vám pan Jirsák napsal (místo těch třech otazníků tam dejte jedničku), a pak jasně napište "tenhle příkaz nefunguje, místo toho se stane to a to". "Zatím jsem nepokročil" není odpověď na konkrétní radu. Já jsem si to prošel, a dospěl jsem ke stejnému závěru jako pan Jirsák. Mělo by to fungovat (pokud to nezprzní nějaké jiné pravidlo iptables, jejichž úplný výpis jste sem nedodal).
23.5.2012 02:21 adam
Rozbalit Rozbalit vše Re: routing přístupu zvenku
řešení : do iptables přidáno před NAT maškarádu :
iptables -t nat -A PREROUTING -p tcp -d 10.0.0.3 --dport 80 -j DNAT --to 192.168.91.26:80
iptables -A FORWARD -p tcp -i eth3 -o eth1 -d 192.168.91.26 --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.91.26 -j SNAT --to 10.0.0.138

do routovacích pravidel přidáno :
echo "12 isp2" >> /etc/iproute2/rt_tables
ip route add default via 10.0.0.138 table isp2
ip rule add from 10.0.0.0/24 table isp2
ip rule add from 192.168.91.26/255.255.255.255 table isp2

děkuji všem za příspěvky, finále jsem ladil po prostudování zdrojů : http://linux-ip.net/html/adv-multi-internet.html, http://goo.gl/d3J66, a zdroje o iptables
23.5.2012 08:06 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Ten SNAT je tam zbytečný, pokud je ten linuxový router stejně výchozí bránou pro web server. A čím méně NATu, tím lépe.


Jinak s tím formátováním příspěvků jste zdá se nepoučitelný. Myslím ale, že v současné podobě je to mnohem čitelnější, a bylo by dobré to tak vložit rovnou a nečekat, až to opraví některý z administrátorů Abíčka.
23.5.2012 09:08 NN
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Neni, protoze tam je jeste maskarada:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ktera je osem nastavena tak, ze sebere vsechno ostatni..

NN
23.5.2012 09:44 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: routing přístupu zvenku
Jo takhle, ono je to směrem do internetu. Takže na požadavky na webový server to nebude mít vliv a týká se to jenom spojení, která webový server navazuje ven. A je to vlastně duplicita té maškarády, takže je to zbytečné až nebezpečné (nevím, co se stane, když se má na jedno spojení uplatnit dvakrát SNAT).
23.5.2012 12:12 miro
Rozbalit Rozbalit vše Re: routing přístupu zvenku
týká se to jenom spojení, která webový server navazuje ven

IMHO se to týká veškerého provozu odcházejícího z 192.168.91.26.

nevím, co se stane, když se má na jedno spojení uplatnit dvakrát SNAT

Myslím, že se neuplatní. Od webserveru půjde přes:

ip rule add from 192.168.91.26/255.255.255.255 table isp2
ip route add default via 10.0.0.138 table isp2

takže půjde přes eth3, tudíž

iptables -t nat -A POSTROUTING -s 192.168.91.26 -j SNAT --to 10.0.0.138

ale

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

se už neuplatní kvůli tomu -o eth0

Nějak jsem si při přemýšlení o tomhle problému neuvědomil, že ten "INET2 Router" směrem dovnitř evidentně nenatuje, jinak by tazatel tenhle problém vůbec neměl. Pokud natování na vnitřním rozhraní nelze nastavit, tak se ten problém bez úpravy routovacích tabulek zřejmě vyřešit nedá.

23.5.2012 12:27 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: routing přístupu zvenku
IMHO se to týká veškerého provozu odcházejícího z 192.168.91.26.
Ano, což ale bude provoz do internetu, jiný nemá důvod jít přes router. Poprvé jsem to pravidlo moc nezkoumal a myslel jsem, že je to upravené to mé původní, které mělo upravovat spojení z internetu na web server – a tím „navazuje ven“ jsem myslel, že je ve skutečnosti určené pro opačný směr, tedy spojení zahájena z počítače, kde běží webový server.
Myslím, že se neuplatní.
Máte pravdu, je tam to omezení -o eth0.
Nějak jsem si při přemýšlení o tomhle problému neuvědomil, že ten "INET2 Router" směrem dovnitř evidentně nenatuje, jinak by tazatel tenhle problém vůbec neměl.
Ten router asi dělá DNAT (z veřejné IP adresy na privátní rozsah), nedělá SNAT (který je zbytečný při typickém použití SOHO routerů, kde je router zároveň jedinou bránou do dalších sítí).

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.