Portál AbcLinuxu, 10. května 2025 13:30

Dotaz: veřejné IP ve vnitřní síti

21.8.2005 21:45 Mik
veřejné IP ve vnitřní síti
Přečteno: 695×
Odpovědět | Admin
Dobrý den, dostal jsem od providera blok /29 veřejných IP adres a chtěl bych tyto adresy přidělit jednotlivým uživatelům v síti. Nejdřív asi nějaké schéma sítě. Od poskytovatele máme přidělenou vnitřní IP 172.x.x.a. Tuto IP adresu mám nastavenu na WAN portu routeru. LAN port routeru má nastaven rozsah 10.157.0.0/25 (tento rozsah je NATovám - masquarade). Dále máme v síti další subnety s rozsahy 10.158.0.0/25, 10.158.0.128/25 atd.... (pomocí SNAT na 172.x.x.a). Nyní jsem dostali přidělené veřejné IP adresy od poskytovatele, cituji "pres vase rozhrani routeru 172.x.x.a byl naroutovan verejny segment 194.x.x.x/29". Teď bych chtěl jednotlivým uživatelům přidělit veřejné IP v různých segmentech, tzn. uživatel ze segmentu 10.158.0.0/25 dostane 1 veřejnou IP, dva uživatelé ze segmentu 10.158.1.0/25 dostanou veřejné IP atd...

Co jsem zatím zkoumal různé možnosti tak přichází v úvahu tunel (openvpn) nebo dnat+snat. Rozhodl jsem se vyzkoušel možnost dnt+snat. Zatím jsem pro pročtení manuálu a diskuzí vymyslel toto: chci uživateli např. s adresou 10.158.1.33 přidělit veřejnou IP 194.x.x.a iptables -t nat -A PREROUTING -d 194.x.x.a -j DNAT --to-destination 10.158.1.33 iptables -t nat -A POSTROUTING -o eth1 -s 10.158.1.33 -j SNAT --to 194.x.x.a

zkoušel jsem z našeho routeru pingat na veřejnou IP 194.x.x.a ale bez odezvy.

Chtěl bych se proto zeptat, jestli vůbec směr kterým jsem se vydal vede k cíli.

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

Odpovědi

21.8.2005 22:18 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proč to děláte tak sloužitě, proč prostě nepřidáte příslušné položky do směrovací tabulky? Třeba
  ip route add 194.x.x.224 dev eth1
  ip route add 194.x.x.225 dev eth2
  ip route add 194.x.x.226/31 via 10.158.0.66
apod.
22.8.2005 01:27 Jiří Veselský | skóre: 30 | blog: Jirkovo | Ostrava
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti

Obávám se, že todle bude fungovat jen pokud stanice, které mají používat ony veřejné adresy, mají nainstalován nějaký operační systém. Pokud je na nich nějaký microsoftí produkt, nebude možno (alespoň pokud vím) těmto vysvětlit, kde mají hledat def-gw. Windows tuším routing via zařízení neumějí a neumějí si nechat nastavit IP s maskou /32, takže by to na nich byl docela problém.

(Ale možná kecám, možná to nějak jde, akorát já jsem nikdy nevyvinul dostatečné úsilí.)

wake avatar 23.8.2005 14:27 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
DHCP?
Tento příspěvek má hlavičku i patičku!
22.8.2005 01:21 Jiří Veselský | skóre: 30 | blog: Jirkovo | Ostrava
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
Odpovědět | | Sbalit | Link | Blokovat | Admin

Záleží, kterým počítačům budete chtít ty veřejné adresy přidělit. Nejjednodušší případ bude, pokud to budou počítače na stejném segmentu, jako je LAN routeru (tedy segment 10.157.0.0/25). V takovém případě na LAN rozhraní routeru přidejte adresu 194.x.x.x+1/29 a příslušným stanicím nastavte 194.x.x.x+2 až 194.x.x.x+6, maska 255.255.255.248, brána 194.x.x.x+1. Na routeru musíte samozřejmě ošetřit, aby se tento rozsah nemaškarádoval.

Pokud byste chtěl celý ten blok adres dostat do jiného segmentu (třeba 10.158.0.0/25), pak musíte na tom svém WAN/LAN routeru naroutit 194.x.x.x/29 via 10.157.0.x (gateway do segmentu 10.158.0.0) a na této gatewai pak analogicky s předchozím odstavcem nastavit 194.x.x.x+1, atd...

Úplně nejsložitější případ by nastal, pokud byste chtěl některé z těch veřejných adres přidělovat počítačům v různých segmentech. To už by pak nešlo čistě proroutovat a muselo by se to nějak obejít (ať už SNAT/DNATem nebo přes ARPproxy).

Každopádně, to co jsem popsal je čistý routing, nic se neNATuje, prostě se to routuje, tam kam má.

Pokud přesně uvedete, co, jak, kde a komu chcete nastavit (a odkupasebelou ty vaše další subnety, rád svůj popis příslušně zpřesním.

22.8.2005 18:17 Mik
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
Ano rozumím, naroutovat vždy celý segment veřejných adres do jednoho subnetu by byla ta nejjednodušší cesta. Bohužel tolik veřejných adres nemám a navíc jak říkáte, by to byl asi ve windowsech problém (i kdyby to až tak složité nebylo, další věc je ta, že chci minimum věcí nechat nastavovat uživateli.)

Tzn. že asi v mém případě půjde o ten nejsložitější případ, kdy chci přidělovat veřejné IP v různých segmentech.

Nyní trochu zpřesním popis sítě a dám sem výpis subnetů. Jako hlavní router používáme počítač s disketovou distribucí Coyote linux (v současné chvíli instalováno pokusně na disku, ale půjde na CF) s pár úpravama. Dále v síti používáme wifi AP asus wl-500g (tyto zařízení zároveň plní funkci routeru - s upraveným fw od olega kde nedochází k zatuhávání wan portu). Výpis subnetů + nat
route add -net 10.158.0.0 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.0.128 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.1.0 netmask 255.255.255.128 gw 10.157.0.3
route add -net 10.158.1.128 netmask 255.255.255.128 gw 10.157.0.3
route add -net 10.158.2.0 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.3.0 netmask 255.255.255.128 gw 10.157.0.4
route add -net 10.158.4.0 netmask 255.255.255.128 gw 10.157.0.20
route add -net 10.158.5.0 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.5.128 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.6.0 netmask 255.255.255.128 gw 10.157.0.10

iptables -t nat -A POSTROUTING -o eth1 -s 10.158.0.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.0.128/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.1.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.1.128/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.2.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.3.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.4.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.5.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.5.128/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.6.0/25 -j SNAT --to 172.x.x.a
V té to chvíli bych rád nastavil veřejné IP 194.x.x.x+1 stanici 10.157.0.49, IP 194.x.x.x+2 stanici 10.158.1.33 a IP 194.x.x.x+3 stanici 10.158.0.50. Ještě pokud by to bylo možné, nejlepší by bylo, kdyby všem stanicím uvnitř zůstala zachována jejich vnitřní IP, ale není to úplně nutné, kdyby nebylo jednoduché cesty jak to vyřešit.

Děkuji za dosavadní rady, rád ještě cokoliv upřesním.
23.8.2005 14:17 Jiří Veselský | skóre: 30 | blog: Jirkovo | Ostrava
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti

Hm, tak to je malé neštěstí. Asi by to šlo nějak vyřešit pomocí ARP proxy, ale obávám se, že to ztroskotá na nastavení Windows a určitě by to bylo moc práce.

V takovém případě bych doporučil nastavit na tom routeru SNAT/DNAT a prostě příchozí provoz pro IP 194.x.x.x+1 DNATnout na 10.157.0.49, odchozí provoz z 10.157.0.49 SNATnout na 194.x.x.x+1 a tak dál. Bude to nejméně práce a na stanicích nebudete muset nic měnit.

Má to dokonce jednu výhodu, že totiž budete schopen využít všech 8 IP z té /29, při klasickém routování byste jich použil tak maximálně pět. Má to na druhé straně i nevýhodu, protože některé obskurní protokoly (FTP, kupříkladu, to je první obludnost na ráně) nemusí pracovat správně, ale to je vesměs řešitelné stavovým firewallem s vhodným modulem. Želbohu, jiná cesta asi není.

23.8.2005 16:55 mikael
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
Delam to samy na routeru, klienti uvnitr site maji privatni adresu a a vsechno se preklada az na "koncovem" routeru do internetu. Udelal jsem si na to script: echo "NAT 1:1" COMMENT="#" DEV=eth0 while read PublicIP PrivateIP UserName do FIRST_CHAR=`echo $PublicIP|cut -c1` if [ "$FIRST_CHAR" = "$COMMENT" ] then echo "$UserName commented" else echo "$UserName ($PrivateIP -> $PublicIP)" iptables -t nat -A PREROUTING -d $PublicIP -j DNAT --to $PrivateIP iptables -t nat -A POSTROUTING -o $DEV -s $PrivateIP -j SNAT --to $PublicIP iptables -A FORWARD -i $DEV -d $PrivateIP -j ACCEPT fi done < /1-1-nat.conf
Nastaveni v 1-1-nat.conf vypada takhle: # verejna privatni name 212.240.181.2 10.93.0.1 ns 212.240.181.3 10.93.0.3 jiri 212.240.181.4 10.93.0.18 mikael ...
24.8.2005 09:59 Mik
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
Takže jsem to vyzkoušel následujícím způsobem.
ifconfig eth1:0 194.x.x.x+1 up
iptables -t nat -A PREROUTING -d 194.x.x.x+1 -j DNAT --to 10.158.1.33      
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.1.33 -j SNAT --to 194.x.x.x+1
iptables -A FORWARD -i eth1 -d 10.158.1.33 -j ACCEPT

route add -net 10.158.0.0 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.0.128 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.1.0 netmask 255.255.255.128 gw 10.157.0.3
route add -net 10.158.1.128 netmask 255.255.255.128 gw 10.157.0.3
route add -net 10.158.2.0 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.3.0 netmask 255.255.255.128 gw 10.157.0.4
route add -net 10.158.4.0 netmask 255.255.255.128 gw 10.157.0.20
route add -net 10.158.5.0 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.5.128 netmask 255.255.255.128 gw 10.157.0.10
route add -net 10.158.6.0 netmask 255.255.255.128 gw 10.157.0.10

iptables -t nat -A POSTROUTING -o eth1 -s 10.158.0.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.0.128/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.1.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.1.128/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.2.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.3.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.4.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.5.0/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.5.128/25 -j SNAT --to 172.x.x.a
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.6.0/25 -j SNAT --to 172.x.x.a
Na internetu už vystupuji pod veřejnou IP adresou, ale nemůžu se na ni zvenku dostat. Zkoušel jsem vypnout firewall u sebe na počítači a nevím o tom že bych něco blokoval na routeru. Takže jediné co vím, je, že SNAT funguje. Jak se dá co nejjednodušeji zjistit zda funguje DNAT pro moji IP?
24.8.2005 11:06 Jiří Veselský | skóre: 30 | blog: Jirkovo | Ostrava
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti

Spusťte si na firewallu tcpdump na LANovém i WANovém rozhraní a zkuste ze své stanice obyčejný ping na cojávím www.seznam.cz. No a uvidíte, co jak kterým rozhraním přijde, přeloží se a odejde.

24.8.2005 11:20 Mik
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
tcpdump na routeru neni, ale snad bude stacit iptraf

ping na www.seznam.cz (212.80.76.18)
ICMP echo req (60 bytes) from 10.158.1.33 to 212.80.76.18 (src HWaddr 0011d8 
ICMP echo req (60 bytes) from 194.x.x.x+1 to 212.80.76.18 (src HWaddr 001
ICMP echo rply (60 bytes) from 212.80.76.18 to 194.x.x.x+1 (src HWaddr 00
ICMP echo rply (60 bytes) from 212.80.76.18 to 10.158.1.33 (src HWaddr 00119 
24.8.2005 11:48 Jiří Veselský | skóre: 30 | blog: Jirkovo | Ostrava
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti

Pokud je to tak, že LANovým rozhraním přišel request, SNATnul se, odešel WANovým, následně se WANovým vrátil reply, DNATnul se a odešel LANovým (což vypadá, že to tak je), pak je ale všechno v pořádku.

A ta stanice, z níž jste zkoušel pingat, se tváří, že to pingá? Protože jinak teda nevím, co vám vlastně nefunguje. Eventuálně mi mailněte, zkusíme se domluvit přes ICQ.

24.8.2005 15:59 Mik
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
Vše už funguje, problém byl vyřešen díky panu Veselskému. Chyba byla v nastavení stavového firewallu.

Takže tento zápis
iptables -t nat -A PREROUTING -d 194.x.x.x1 -j DNAT --to 10.158.1.33      
iptables -t nat -A POSTROUTING -o eth1 -s 10.158.1.33 -j SNAT --to 194.x.x.x+1
iptables -I FORWARD -d 10.158.1.33 -j ACCEPT
lze bez problému použít.

Děkuji rovněž všem, kteří přispěli.
24.8.2005 11:18 xxx
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
zkuste pouzit volbu --to-destination (nebo tak nejak je to v iptables). Kdyz jsem u DNATu pouzival volbu --to, tak jsem s tim mel problem. Nevim sice proc (protoze i s --to by to melo bezet), ale proste nebezelo...
24.8.2005 11:49 Mik
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
zkusil jsem, ale výsledek je stejný....

pro zajímavost:
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
nat-acl    all  --  0.0.0.0/0            0.0.0.0/0           
dns-preroute  all  --  0.0.0.0/0            0.0.0.0/0           
auto-forward  all  --  0.0.0.0/0            0.0.0.0/0           
port-forward  all  --  0.0.0.0/0            0.0.0.0/0           
DNAT       all  --  0.0.0.0/0            194.x.x.x+1      to:10.158.1.33 

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  10.157.0.0/25        0.0.0.0/0           
dns-postroute  all  --  0.0.0.0/0            0.0.0.0/0           
SNAT       all  --  10.158.1.33          0.0.0.0/0           to:194.x.x.x+1 
SNAT       all  --  10.158.0.0/25        0.0.0.0/0           to:172.20.71.21 
SNAT       all  --  10.158.0.128/25      0.0.0.0/0           to:172.20.71.21 
SNAT       all  --  10.158.1.0/25        0.0.0.0/0           to:172.20.71.21 
SNAT       all  --  10.158.1.128/25      0.0.0.0/0           to:172.20.71.21 
SNAT       all  --  10.158.2.0/25        0.0.0.0/0           to:172.20.71.21 
SNAT       all  --  10.158.3.0/25        0.0.0.0/0           to:172.20.71.21 
SNAT       all  --  10.158.4.0/25        0.0.0.0/0           to:172.20.71.21 
SNAT       all  --  10.158.5.0/25        0.0.0.0/0           to:172.20.71.21 
SNAT       all  --  10.158.5.128/25      0.0.0.0/0           to:172.20.71.21 
SNAT       all  --  10.158.6.0/25        0.0.0.0/0           to:172.20.71.21 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain auto-forward (1 references)
target     prot opt source               destination         

Chain dns-postroute (1 references)
target     prot opt source               destination         

Chain dns-preroute (1 references)
target     prot opt source               destination         

Chain nat-acl (1 references)
target     prot opt source               destination         

Chain port-forward (1 references)
target     prot opt source               destination 
wake avatar 23.8.2005 14:34 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
Odpovědět | | Sbalit | Link | Blokovat | Admin
proč nepřidat všude po cestě routy na to 194..... a příslušným klientům nepřiřadit (MAC-based) rovnou jejich externí adresy ?
Tento příspěvek má hlavičku i patičku!
23.8.2005 15:43 Petr Holík
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
Nejjednodussi by podle me bylo, jak rika kolega nasadit ostre ip i ve vnitrni siti a ty nazaklede MAC adres pridelovat z dhcp. Soucasny DNAT a SNAT ponechat nezmenen pro klienty co nemaji verejne ip. V pripade, ze ma vas provider nastaveno routovani tech verejnejch ip adres prez vas router neni ani potreba zapinant ARP proxy.v pripade ze ma s vama provider spojovou sit 194.x.x.x a IP adresy jsou pre jeho router direct conect je potreba pomoci /proc/sys/net/ipv4/conf/ethX/proxy_arp povolit ARP proxy - to ale pravdepodobne nebude vas pripad...
24.8.2005 10:12 Mik
Rozbalit Rozbalit vše Re: veřejné IP ve vnitřní síti
Nemám s providerem spojovou síť 194.x.x.x. Router providera má nitřní IP.

Můžete prosím uvést na konkrétním případě jak to myslíte? Takhle asi moc IP adres nerozdělím, ne? Trochu se v ztrácím jak konkrétně to chcete naroutovat. Bylo tu více námětů to naroutovat, ale každý to asi myslel trochu jinak. Děkuji.

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.