Portál AbcLinuxu, 12. května 2025 15:43

Dotaz: Více veřejných IP - směrování na neveřejné

Petr Maleček avatar 5.1.2011 16:53 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Více veřejných IP - směrování na neveřejné
Přečteno: 982×
Odpovědět | Admin
Zdravím, jsem tu opět s dotazem, určitě budete vědět. Mám router, na něm mi běží OpenWRT (IPv4 + IPv6), NAT funguje skvěle, IPv6ky také. Dostal jsem další balíček veřejných IPv4 adres a teď bych je potřeboval přiřadit určitým počítačům.

Příklad:
Pro počítač 192.168.0.70 chci aby měl IP 81.201.56.70
Pro počítač 192.168.0.75 chci aby měl IP 81.201.56.75
Všechny ostatní počítače chci aby vystupovali pod současnou IP adresou routeru (tzn. beze změny).

Zkoušel jsem něco takového:

iptables -t nat -A POSTROUTING -o eth1:1 -j SNAT --to 192.168.0.70
kde eth1:1 jsem přiřadil onu veřejnou IP adresu 81.201.56.70
Bohužel i nadále počítač vystupuje pod adresou routeru a ne onou 81.201.56.70, kterou se mu pokouším přiřadit (za NATem, ne přímo).

Díky za návrhy.
LinMuck, WinFuck :-P

Ř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

5.1.2011 17:01 Pavel
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj,,
to co hledáš se jmenuje NAT 1:1
iptables -t nat -A PREROUTING -i rozhrani_k_ISP -d verejne_ip -j DNAT --to-destination vnitrni_adresa
iptables -t nat -A POSTROUTING -i rozhrani_do_vnitrni_site -s vnitrni_ip -j SNAT --to-source verejne_ip
Přeji prima den :-)
Petr Maleček avatar 5.1.2011 19:55 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Díky za odpověď, udělal jsem následující:
iptables -t nat -A PREROUTING -i eth1 -d 81.201.56.12 -j DNAT --to 192.168.0.12
iptables -t nat -A POSTROUTING -o br-lan -s 192.168.0.12 -j SNAT --to-source 81.201.56.12
A výsledek je takový, mám na onom stroji stále IP routeru (tzn. bezezměny) :-( ... na IP koukám přes mojeip.cz, whatismyip.com a podobně.

Dělám ještě něco špatně ?
LinMuck, WinFuck :-P
Jendа avatar 5.1.2011 20:09 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Protože ten stroj pro odchozí spojení používá tu privátní IP. Zkusil bych smazat defaultní routu, která teď vede na 192.168.0.1, a nastavil jako router veřejnou IP routeru s OpenWRT nebo router ISP.

Resp. preferovaná IP pro odchozí spojení by měla jít nastavit pomocí parametru src při přidávání routy (viz).
Petr Maleček avatar 5.1.2011 20:16 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Špatně jsem se vyjádřil - privátní IP musí mít ten stroj stále, ale na internetu vystupuje pod IP routeru namísto IP kterou jsem mu přiřadil pomocí příkladu z první odpovědi :-)

Nechci aby měl klient dvě IP (jednu privátní a jednu veřejnou) na jednom rozhraní u sebe, ale aby se o to staral router a klient měl jen privátní.
LinMuck, WinFuck :-P
5.1.2011 17:02 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Za prvé, ni jako eth:1 neexistuje. Síťová karta je eth1, eth1:1 je něco, čím vás mate ifconfig, který je 12 let na Linuxu zastaralý a nemá se používat. Používejte příkaz ip z balíčku iproute2, který vám bude zobrazovat skutečné nastavení síťování v jádře.

Za druhé, pokud se to má týkat jen odchozí komunikace a chete mermomocí použít NAT, mělo by stačit nastavit tohle:
iptables -t nat -A POSTROUTING -s 192.168.0.70 -j SNAt --to 81.201.56.70
Lepší mi ale připadá nastavit ty veřejné IP adresy rovnou těm koncovým počítačům (jako další IP adresu) a řešit to normálním routováním.
Petr Maleček avatar 5.1.2011 20:13 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Za prvé, nci jako eth:1 neexistuje.
Ano, také jsem nepsal eth:1, ale eth1:1 (jako druhá IP rozhraní), ale to víte.
... čím vás mate ifconfig, který je 12 let na Linuxu zastaralý a nemá se používat
Mě se nezdá, že by mě ifconfig mátl. Přijde mi mnohem jednodušší napsat:

ifconfig eth1:1 192.168.0.2/24 než-li ip addr add 192.168.0.2/24 dev eth1 Ale pokud je to tak jak řikáte, tak se "napravím".

S linuxem si rozumím bez problému již dlouho, ale ohledně iptables jsem úplně mimo mísu, protože jsem neměl nikdy potřebu to řešit, to až teď co jsem si dal na Router OpenWRT :-(

Co se týče Vašeho příkladu, tak s tím jsem bohužel nepochodil :-( stále se stroj NATuje přes router (tj. má jeho ip).

Díky :-)
LinMuck, WinFuck :-P
5.1.2011 20:30 Matěj Vaňátko | skóre: 19 | Brno
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Jak píše pan Jirsák, ifconfig je sice zastaralý nástroj, nicméně, mnoho mých známých kolegů jej stále používá, vč. mě a nevidím jediný důvod, proč si komplikovat život psaním složitých příkazů přes ip, když ifconfig funguje bezproblémově. Je sice fakt, že tak trochu mate kernel, ale když to funguje, nevidím důvod to nepoužívat... S nikým se ale nehádám, je to věc každého admina...
Nicméně, opravdu potřebujete NAT 1:1. Nedávno jsem to tu řešil a výsledek je toto:
# Vše co má jít do internetu, tak ať má source IP veřejnou adresu routeru
iptables -t nat -A POSTROUTING -o "VENKOVNI_ROZHRANNI_K_ISP" -s "INT.IP.PC" -j SNAT --to "VEŘEJNÁ IP ROUTERU"
# Vše co má jít na lokální PC z veřejné IP adresy, pošli na IP adresu lokálního PC iptables -t nat -A PREROUTING -i "VENKOVNI_ROZHRANNI_K_ISP" -d "DANÁ VEŘEJNÁ IP" -j DNAT --to "INT.IP.PC"

Je to mnou používaný způsob a funguje naprosto OK. Vůbec bych tam nezahrnoval nějaká interní rozhranní a vše měňte na ETH, které vede k ISP.
Petr Maleček avatar 5.1.2011 20:49 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné

root@pmalecek-owrt:~# iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.12 -j SNAT --to 81.201.56.12
root@pmalecek-owrt:~# iptables -t nat -A PREROUTING -i eth1 -d 81.201.56.12 -j DNAT --to 192.168.0.12
Změnil jsem jen ten první příklad, kde chci, aby cokoli co má jít do internetu z toho počítače s IP 192.168.0.12 tak chci, aby mělo 2. veřejnou IP routeru (určenou jen pro ten PC s IP 192.168.0.12).

Bohužel stále jsem ve stavu, kdy když se podívám na mojeip.cz, tak má počítač 1. (hlavní) IP routeru, namísto druhé IP, kterou pro něj chci používat :-(

Ještě jednou tedy pro 100% ujasnění co chci - když se podívám na jakémkoli počítači na stránku mojeip.cz, tak aby se jako vystupující IP zobrazila veřejka routeru (což tak nyní funguje), ale když se podívám z počítače, který má IP 192.168.0.12, tak aby na stránce mojeip.cz vystupoval pod veřejnou IP 81.201.56.12 (mám ji pro ten stroj vyhrazenou).

Díky :-)
LinMuck, WinFuck :-P
5.1.2011 20:57 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Máte nějaký důvod, proč to chcete řešit NATem a ne obyčejným routováním? Připadá mi mnohem jednodušší nastavit počítači druhou IP adresu, než konfigurovat NAT a pak případně řešit problémy s plnou tabulkou spojení, s nedostatkem portů, s komunikací mezi počítači obsluhujícími veřejné IP adresy atd.
5.1.2011 21:03 Matěj Vaňátko | skóre: 19 | Brno
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Není možné. Tato konfigurace funguje naprosto v cajku. Teď mi to tady běží ve VMware a chodí to bez problémů. Zkuste pomocí TCPDUMP sledovat provoz na ETH, které vede k ISP co leze ven a jak to leze zpátky.
Takže jestli do ETH1 máte připojeného ISP, musí to chodit.. Ať už se jmenuje v systému to zařízení třeba eth1:1, kde máte tu veřejnou IP, tak na tom nezáleží. Fyzicky je to stále ETH1, takže to je správně. A máte tam i jiná pravidla pro FW, která by tato pravidla mohla anulovat, protože vyhoví dříve ?? zkuste místo parametru -A použít parametr -I a restartovat firewall.. Doufám, že to jste provedl i před tím. Ale jestli máte zkušenosti s Linuxem jak píšete, tak je vám to určitě jasné :-)
Petr Maleček avatar 5.1.2011 21:27 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Tak už to konečně funguje. Chyba nebyla v pravidlech které jsem vepisoval, ale v pořadí. Na tom routeru mi běží "firewall" do něhož se definují pravidla nějak takto:

config rule
        option src              wan
        option proto            tcp
        option dest_port        23
        option target           ACCEPT
        option family   ipv4

... a jak tu již někdo zmiňoval, nejdřív se nadefinovala vší komunikace na hlavní IP routeru a já jsem pak přidával pravidlo, které se mělo zavést ještě před tím.

Naštěstí tento firewall počítá i s uživatelskými pravidly, takže stačilo vložit ty řádky, které jste mi radil a já si je upravil do /etc/firewall.user a již je vše jak jsem chtěl.

Všem moc děkuji za snahu poradit, opět jsem tu trotl já, který se přehlédl.
LinMuck, WinFuck :-P
5.1.2011 21:33 Matěj Vaňátko | skóre: 19 | Brno
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Hlavní je, že to běží.. Iptables se zpracovávají tak, že prostě první pravidlo co vyhoví se použije. Na to jediné je nutné dát si pozor. A nebo jak říká pan Jirsák, konfigurovat firewall a NAT tak, aby nedocházelo k takovéto "kolizi" pravidel ;)
Petr Maleček avatar 5.1.2011 21:38 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Stále se učíme :-) Děkuji.
LinMuck, WinFuck :-P
5.1.2011 21:40 Matěj Vaňátko | skóre: 19 | Brno
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Naprosto souhlasím :-D
5.1.2011 21:00 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
nevidím jediný důvod, proč si komplikovat život psaním složitých příkazů přes ip, když ifconfig funguje bezproblémově
Zrovna v původním dotazu máte příklad toho, že ifconfig nefunguje bezproblémově. Internetové poradny jsou plné těch, kteří si myslí, že ifconfig jim funguje bezproblémově, akorát mají nějaký problém s nastavením sítě. Také si pochvalují, jak je jednoduchý, a nevadí jim, že dělá něco jiného, než si oni myslí.
Petr Maleček avatar 5.1.2011 21:02 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
To byla spíše vyjímka, to "eth0:0" jsem do iptables napsal na zkoušku a jelikož to nehlásilo žádnou chybu, tak jsem to považoval za funkční :-) Ale jinak máte pravdu.
LinMuck, WinFuck :-P
Jendа avatar 5.1.2011 20:35 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Ano, také jsem nepsal eth:1, ale eth1:1 (jako druhá IP rozhraní), ale to víte.
To byl asi nedoklep v komentáři předřečníka.
Mě se nezdá, že by mě ifconfig mátl.
Ale mate. Například tím, že ti ukazuje neexistující rozhraní eth1:1. Mě zase mate tím, že mi neukazuje všechny adresy, které mám momentálně na síťovce nastavené (zkus si přidat dvě IPv4 adresy na jednu síťovku a pak se podívej do ifconfigu - ukáže ti jenom jednu!).
eth1:1 (jako druhá IP rozhraní), ale to víte.
No právě že alespoň já nevím. Od jádra 2.2 může mít jedno rozhraní víc adres a zároveň se na to nepoužívají takovéto podivné aliasy. (brát s rezervou, tou dobou jsem chodil do školky, zkušenosti mám jen zprostředkované od pamětníků)

Nějaké odkazy (+ diskuze).
Petr Maleček avatar 5.1.2011 20:40 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
To je bohužel pravda, že počet IP pro dané rozhraní není při výpisu vidět, ale to mi nevadí, jelikož jsem já ten, kdo IP přiděluje. Každopádně díky :-)
LinMuck, WinFuck :-P
5.1.2011 20:53 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Ano, také jsem nepsal eth:1, ale eth1:1 (jako druhá IP rozhraní), ale to víte.
eth:1 je překlep, omlouvám se, mělo tam být eth1:1.
Mě se nezdá, že by mě ifconfig mátl.
Pokud by vás nemátl, nepokoušel byste se v iptables používat neexistující rozhraní eth1:1.
Co se týče Vašeho příkladu, tak s tím jsem bohužel nepochodil :-( stále se stroj NATuje přes router (tj. má jeho ip).
Jak to zjišťujete? Zkoušíte např. ping na jiný počítač, a tam zjišťujete odchozí adresu? Někde jsem zahlédl, že jste to testoval pomocí webu – nemáte tam web proxy server? Jak vypadají všechna pravidla pro NAT – nejsem si jist, jak to funguje, když jeden paket vyhoví více pravidlům pro NAT, které pravidlo se pak uplatní.
Petr Maleček avatar 5.1.2011 20:58 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Jak to zjišťujete?
Přes webové adresy mojeip.cz, whatismyip.com atp. Proxy nemám, už na něj na routeru není místo :-)

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
prerouting_rule  all  --  anywhere             anywhere
zone_lan_prerouting  all  --  anywhere             anywhere
zone_wan_prerouting  all  --  anywhere             anywhere
DNAT       all  --  anywhere             81.201.56.12      to:192.168.0.12

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
postrouting_rule  all  --  anywhere             anywhere
zone_lan_nat  all  --  anywhere             anywhere
zone_wan_nat  all  --  anywhere             anywhere
SNAT       all  --  petr-ntb.192.in-addr.arpa  anywhere            to:81.201.56.12

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain MINIUPNPD (1 references)
target     prot opt source               destination
DNAT       tcp  --  anywhere             anywhere            tcp dpt:38945 to:192.168.0.10:38945
DNAT       udp  --  anywhere             anywhere            udp dpt:38945 to:192.168.0.10:38945
DNAT       udp  --  anywhere             anywhere            udp dpt:20851 to:192.168.0.95:20851
DNAT       tcp  --  anywhere             anywhere            tcp dpt:20851 to:192.168.0.95:20851
DNAT       tcp  --  anywhere             anywhere            tcp dpt:49291 to:192.168.0.10:49291

Chain nat_reflection_in (1 references)
target     prot opt source               destination

Chain nat_reflection_out (1 references)
target     prot opt source               destination

Chain postrouting_rule (1 references)
target     prot opt source               destination
nat_reflection_out  all  --  anywhere             anywhere

Chain prerouting_lan (1 references)
target     prot opt source               destination

Chain prerouting_rule (1 references)
target     prot opt source               destination
nat_reflection_in  all  --  anywhere             anywhere

Chain prerouting_wan (1 references)
target     prot opt source               destination

Chain zone_lan_nat (1 references)
target     prot opt source               destination

Chain zone_lan_prerouting (1 references)
target     prot opt source               destination
prerouting_lan  all  --  anywhere             anywhere

Chain zone_wan_nat (1 references)
target     prot opt source               destination
MASQUERADE  all  --  anywhere             anywhere

Chain zone_wan_prerouting (1 references)
target     prot opt source               destination
MINIUPNPD  all  --  anywhere             anywhere
prerouting_wan  all  --  anywhere             anywhere

LinMuck, WinFuck :-P
5.1.2011 21:06 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Zkuste to pravidlo specifické pro 81.201.56.12 dát na začátek místo na konec – možná v NATu vyhrává první. A nebo může být problém v tom, že maškaráda má přednost před NATem. Nevím, jak u NATu v iptables fungují priority, vždy jsem to nastavoval tak, aby paket vyhověl jen jednomu pravidlu. Doporučil bych to stejně udělat i vám – tj. do prerouting_rule, zone_lan_prerouting atd. posílat jenom ty pakety, pro které nechcete mít specifický NAT.
Petr Maleček avatar 5.1.2011 21:57 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Díky - přesně tak :-)
LinMuck, WinFuck :-P
pavlix avatar 6.1.2011 00:40 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Ně se nezdá, že by mě ifconfig mátl. Přijde mi mnohem jednodušší napsat:

ifconfig eth1:1 192.168.0.2/24 než-li ip addr add 192.168.0.2/24 dev eth1
Tak v tom vidím trošku ten problém. Když ti přijde jednodušší přidat (add) IP než vytvářet nějaké pseudorozhraní.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
Petr Maleček avatar 6.1.2011 10:46 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Jsem osoba líná a proč bych psal příkaz delší, když mohu napsat ten kratší se stejným výsledkem ?

Apropo co jsem koukal - ifconfig vypíše i tato "subrozhraní", takže vidím ve výpisu br-lan, wlan0, eth0, eth1, eth1:1, eth1:2, tap0, ...
LinMuck, WinFuck :-P
6.1.2011 11:12 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Protože výsledek není stejný.
6.1.2011 13:41 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné

1. Když už vás tak trápí každý znak, tak si to porovnejme:

ifconfig eth1:1 192.168.0.2/24 # 30 znaků
ip a a 192.168.0.2/24 dev eth1 # 30 znaků

Navíc syntaxe, kterou uvádíte u příkazu ifconfig, ani není podporována v manuálové stránce. Podle ní to má být

ifconfig eth1:1 192.168.0.2 netmask 255.255.255.0 # pro IPv4
ifconfig eth1 add fec0::2/64                      # pro IPv6

2. Vypíše je někdy. Ale problém je hlavně v tom, že je vůbec vypíše (tedy někdy), protože neexistují. Uživatelé pak snadno uvěří v jejich existenci a snaží se s nimi pracovat jako se síťovými rozhraními, což v lepším případě nejde (viz váš problém s netfilterem), v horším to udělá něco jiného (zkuste tomu "rozhraní eth1:1" třeba nastavit příznaky nebo parametry, nastaví se eth1).

pavlix avatar 6.1.2011 20:24 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Více veřejných IP - směrování na neveřejné
Jsem osoba líná a proč bych psal příkaz delší, když mohu napsat ten kratší se stejným výsledkem ?
Já jsem osoba líná, takže radši říkám počítači to, co po něm chci, ne něco, co po něm sice vůbec nechci, abych docílil toho, co chci. A to i kdyby mě to stálo pár stisků kláves navíc (všema deseti to nezabere ani znatelný čas).

Jinak viz co psal Michal Kubeček.
Apropo co jsem koukal - ifconfig vypíše i tato "subrozhraní", takže vidím ve výpisu br-lan, wlan0, eth0, eth1, eth1:1, eth1:2, tap0, ...
Což vidím také jako velkou nevýhodu. Nejen, že si s ifconfigem musím říkat o nesmyslná rozhraní, ale on mi je dokonce i vypisuje.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

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.