Veřejná IPv4 přes CGN

SB

Veřejná IPv4 přes CGN
« kdy: 07. 06. 2018, 12:02:29 »
Dobrý den.
    Známý si pořídil na pokusy router Mikrotik. Po připojení k drátu od poskytovatele koukáme, že na onom rozhraní je místo jeho veřejné adresy (která funguje - připojuje se domů zvenku, ...) adresa z rozsahu 172.16.0.0/12! Takže jestli jsem to správně pochopil, tak onen poskytovatel danou veřejnou adresu překládá CGNatem 1:1 na tu vnitřní, kterou svojí sítí routuje k uživateli. Docela jsem na to čuměl, nikdy jsem nic takového neviděl, ani neslyšel.

Otázky:

1. Je to běžné?
2. Je to v pořádku?
3. Nemůže to rozdrbat některé protokoly, např. tunel 6to4 (velmistr poskytovatel 6ku neposkytuje)? Mně jede doma přes Mikrotik 6to4 bez problémů (jen jako test, jinak mám nativní 6), známému to nejede.
4. Dá se to nějak odrbat, např. v preroutingu, postroutingu, ... já nevímco...

Děkuji.


Pepan

Re:Veřejná IPv4 přes CGN
« Odpověď #1 kdy: 07. 06. 2018, 13:54:41 »
CGNat?  ;D

1) ano
2) ano
4) na koncovém zařízení neodrbete nic, vlastně ani nevím, co tím myslíte

Pali

Re:Veřejná IPv4 přes CGN
« Odpověď #2 kdy: 07. 06. 2018, 20:40:07 »
1) Áno, na Slovensku služba pre domácnosti "internet s verejnou IPv4 adresou" je poväčšine takto riešená.

2) Čo už narobíte, keď je to bežné. Tí, čo nemajú verejnú IPv4 adresu tak sú zapojený úplne rovnako. Až na to, že im tam provider dal nejaký symetrický NAT a nie NAT 1:1.

3) Áno, môže. Protokoly, ktoré nepočítajú s NATom budú mať určite problém. Ostatné buď zdetegujú NAT 1:1 (napr. pomocou STUN serveru), alebo zdetegujú iný NAT a nejak sa zariadia.

Pozor na to, čo sa myslí pod pojmom NAT 1:1. Ak je to skutočne iba Network Address Translation (tzn. preklad adries), tak by to pre 6to4 byť problém nemal. Avšak ak sa do toho mieša nejaký filtering, napr. provider prepúšťa iba TCP, UDP a ICMP pakety, tak na 6to4 treba zabudnúť (to používa vlastný protokol).

A pri nastavovaní 6to4 treba správne vyrátať IPv6 adresu zo skutočnej verejnej IPv4 adresy. Neviem aká je implementácia v tom Mikrotiku, ale ak ráta IPv6 adresu z tej privátnej IPv4 tak to logicky nepôjde. Treba potom IPv6 vyrátať ručne a nastaviť ju manuálne.

4) Ak je zariadenie skutočne za NAT 1:1, ktorý nerobí žiadne filtrovanie a chcete aby aplikácie na tom stroji (routri) videli skutočnú verjenú adresu, tak sa dá spraviť ďalší NAT 1:1 ktorý tu privátnu adresu bude NATovať spätne na verejnú.

Dá sa to nastaviť napr. tak, že sa na sieťový interface pridá ďalšia adresa (tá verejná) a potom cez iptables/SNAT sa bude odchádzajúcim paketom so zdrojovou verejnou IP adresou meniť adresa na tú privátnu. Bude to teda vyzerať nejak takto:

internet <--> verejná adresa <-(provider NAT 1:1)-> privátna adresa <-(váš NAT 1:1)-> verejná adresa <-> (vaša aplikácia)

Pali

Re:Veřejná IPv4 přes CGN
« Odpověď #3 kdy: 07. 06. 2018, 20:47:05 »
A ešte jedna poznámka, rozsah 172.16.0.0/12 znamená "obyčaný" NAT, nie CGN. Pre CGN je vyčlenený rozsah 100.64.0.0/10.

Dosť pochybujem o tom, že niekto má implementovanú niečo ako podporu pre CGNAT 1:1, to by ani nedávalo moc zmysel. Pre CGN je väčšinou dostupný pool verejných IPv4 adries a pre každé odchádzajúce spojenie z vnútornej siete je vybraná (pseudo)náhodná zdrojová verejná IPv4 adresa a nejaký (pseudo)náhodný zdrojový TCP/UDP port, ktorý sa vôbec nemusí zhodovať so zdrojovým portom čo vybral klient z vnútornej siete.

Pepan

Re:Veřejná IPv4 přes CGN
« Odpověď #4 kdy: 07. 06. 2018, 21:41:37 »
Dá sa to nastaviť napr. tak, že sa na sieťový interface pridá ďalšia adresa (tá verejná) a potom cez iptables/SNAT sa bude odchádzajúcim paketom so zdrojovou verejnou IP adresou meniť adresa na tú privátnu. Bude to teda vyzerať nejak takto:

internet <--> verejná adresa <-(provider NAT 1:1)-> privátna adresa <-(váš NAT 1:1)-> verejná adresa <-> (vaša aplikácia)

Jo, to určitě jde. Jen nevím, jakému by to sloužilo účelu resp. čemu by to pomohlo. Á propós, dá se to udělat tak, aby Mikrotik "nepožral" minimálně 3 legitimní veřejné IP adresy (/30, ve kterém je daná veřejná IP)?


jouda

Re:Veřejná IPv4 přes CGN
« Odpověď #5 kdy: 07. 06. 2018, 22:27:07 »
Jo, to určitě jde. Jen nevím, jakému by to sloužilo účelu resp. čemu by to pomohlo. Á propós, dá se to udělat tak, aby Mikrotik "nepožral" minimálně 3 legitimní veřejné IP adresy (/30, ve kterém je daná veřejná IP)?
Ano jde, třeba já to takhle mám, použitelné to je (občas člověk musí vědět co dělá - třeba u IPSEC bez NAT-T), a ani se providerovi nedivím že volí podobné řešení, když mezi 10000 zákazníky má 9995 kterým stačí klasická zNATovaná 10.x.x.x, tak je to asi to nejsnadnější a nejlevnější co může udělat.

P.S. Odvolávám vynucený souhlas se zpracováním os. údajů nad rámec nezbytně nutný pro odeslání postu.

SB

Re:Veřejná IPv4 přes CGN
« Odpověď #6 kdy: 08. 06. 2018, 09:33:07 »
4) na koncovém zařízení neodrbete nic, vlastně ani nevím, co tím myslíte

Myslím tím to, že nevím, jak je v Mikrotiku implemetovaný tunel 6to4, takže ani nemůžu vědět, zda se to neposere, když přijde z tunelu packet, který má místo veřejné cílové adresy soukromou, na což 6to4 není dělané.

SB

Re:Veřejná IPv4 přes CGN
« Odpověď #7 kdy: 08. 06. 2018, 10:57:43 »
Pozor na to, čo sa myslí pod pojmom NAT 1:1. Ak je to skutočne iba Network Address Translation (tzn. preklad adries), tak by to pre 6to4 byť problém nemal. Avšak ak sa do toho mieša nejaký filtering, napr. provider prepúšťa iba TCP, UDP a ICMP pakety, tak na 6to4 treba zabudnúť (to používa vlastný protokol).

A pri nastavovaní 6to4 treba správne vyrátať IPv6 adresu zo skutočnej verejnej IPv4 adresy. Neviem aká je implementácia v tom Mikrotiku, ale ak ráta IPv6 adresu z tej privátnej IPv4 tak to logicky nepôjde. Treba potom IPv6 vyrátať ručne a nastaviť ju manuálne.

No jo, teď jsem si uvědomil, že 6to4 jede přes podprotokol IP 41. Jestli to ti vocasi filtrují, tak je po ptákách. Ale otestovat by to mělo jít třeba pingem.
Veřejná 4 je na hex dobře, tam problém nebude. Problém může být s Mikrotikem, co udělá, když bude mít příchozí packet soukromou cílovou adresu.

4) Ak je zariadenie skutočne za NAT 1:1, ktorý nerobí žiadne filtrovanie a chcete aby aplikácie na tom stroji (routri) videli skutočnú verjenú adresu, tak sa dá spraviť ďalší NAT 1:1 ktorý tu privátnu adresu bude NATovať spätne na verejnú.

Dá sa to nastaviť napr. tak, že sa na sieťový interface pridá ďalšia adresa (tá verejná) a potom cez iptables/SNAT sa bude odchádzajúcim paketom so zdrojovou verejnou IP adresou meniť adresa na tú privátnu. Bude to teda vyzerať nejak takto:

internet <--> verejná adresa <-(provider NAT 1:1)-> privátna adresa <-(váš NAT 1:1)-> verejná adresa <-> (vaša aplikácia)

IPv4 neumí více adres na rozhraní...

SB

Re:Veřejná IPv4 přes CGN
« Odpověď #8 kdy: 08. 06. 2018, 11:03:27 »
A ešte jedna poznámka, rozsah 172.16.0.0/12 znamená "obyčaný" NAT, nie CGN. Pre CGN je vyčlenený rozsah 100.64.0.0/10.

Dosť pochybujem o tom, že niekto má implementovanú niečo ako podporu pre CGNAT 1:1, to by ani nedávalo moc zmysel. Pre CGN je väčšinou dostupný pool verejných IPv4 adries a pre každé odchádzajúce spojenie z vnútornej siete je vybraná (pseudo)náhodná zdrojová verejná IPv4 adresa a nejaký (pseudo)náhodný zdrojový TCP/UDP port, ktorý sa vôbec nemusí zhodovať so zdrojovým portom čo vybral klient z vnútornej siete.

Nový rozsah pro CGN všichni nepoužívají, předpokládám, že ti staří (a to tenhle ISP je) mají domácí rozsahy.

To mi nepřijde složité, vedle masquerade mají ve směrovači nabouchaná 2 NATovací pravidla (sem-tam) pro každého tvrdoadresáta.

Nikdo

Re:Veřejná IPv4 přes CGN
« Odpověď #9 kdy: 08. 06. 2018, 11:44:42 »
O rozsahu 100.64.0.0/10 nikdo z lokalne vzniklych poskytovatelu urcite ani neslysel, minimalne v dobe vzniku. Takze ano, vetsina z nich jede pres adresy urcene pro LAN. Mnohdy narazite i na historicke zateze v podobe 192.168.0.0/16.

ano, NAT 1:1 je bezny u domacich pripojek, nekteri poskytovatele umi i routovane verejky, ale bude to za jinou cenu, protoze jim to sezere minimalne 4 IPcka. Na mikrotiku routing pres /31 nejspise nezprovoznite, nesnasi to.


jouda

Re:Veřejná IPv4 přes CGN
« Odpověď #10 kdy: 08. 06. 2018, 11:59:14 »
IPv4 neumí více adres na rozhraní...
Krásná "alternativní pravda"

SB

Re:Veřejná IPv4 přes CGN
« Odpověď #11 kdy: 08. 06. 2018, 16:14:02 »
Pardon, asi jsem si to spletl s nemožností mít zároveň adresu linkovou (169.254...) a jinou.

Pali

Re:Veřejná IPv4 přes CGN
« Odpověď #12 kdy: 08. 06. 2018, 16:53:39 »
No jo, teď jsem si uvědomil, že 6to4 jede přes podprotokol IP 41. Jestli to ti vocasi filtrují, tak je po ptákách. Ale otestovat by to mělo jít třeba pingem.

Ping je ICMP protokol (1), nie IPv6 (41). Takže test pingom neoverí, či 6to4 cez protokol 41 prejde tiež.

IPv4 neumí více adres na rozhraní...

Asi sa nájdu operačné systémy, ktoré to nepodporujú... ale v Linuxe to ide bez problémov nastaviť. Treba ale namiesto zastaralého ifconfig použiť ip.

Pardon, asi jsem si to spletl s nemožností mít zároveň adresu linkovou (169.254...) a jinou.

To tiež neplatí. Ručne si môžete nastaviť zároveň aj 169.254.x.x adresu aj 10.x.x.x adresu a aj verejnú IPv4 adresu na jeden interface. Linux vám v tom nezabárni.

RFC 3927 síce o 169.254.0.0/16 rozsahu hovorí, že sa nemá používať na manuálne nastavovanie adries, ale to je trochu diskutabilné. IPv4 link-local adresy nastavuje nejaký program a jeho činnosť môže manuálne odsimulovať aj nejaký admin, napr. pomocou pripravených skriptov.

SB

Re:Veřejná IPv4 přes CGN
« Odpověď #13 kdy: 10. 06. 2018, 00:04:50 »
No jo, teď jsem si uvědomil, že 6to4 jede přes podprotokol IP 41. Jestli to ti vocasi filtrují, tak je po ptákách. Ale otestovat by to mělo jít třeba pingem.

Ping je ICMP protokol (1), nie IPv6 (41). Takže test pingom neoverí, či 6to4 cez protokol 41 prejde tiež.

Ale když použijete odněkud z inetu
Kód: [Vybrat]
ping6 <adresa IPv6 6to4>(něco jako 2002:6d31:5a1f::, stačí prvních 48 bitů) a na rozhraní k ISP spusíte Torch, tak tam (pochopitelně) uvidíte protokol 41, ne ICMP. Ověřeno.

Pali

Re:Veřejná IPv4 přes CGN
« Odpověď #14 kdy: 10. 06. 2018, 01:40:55 »
No jo, teď jsem si uvědomil, že 6to4 jede přes podprotokol IP 41. Jestli to ti vocasi filtrují, tak je po ptákách. Ale otestovat by to mělo jít třeba pingem.

Ping je ICMP protokol (1), nie IPv6 (41). Takže test pingom neoverí, či 6to4 cez protokol 41 prejde tiež.

Ale když použijete odněkud z inetu
Kód: [Vybrat]
ping6 <adresa IPv6 6to4>(něco jako 2002:6d31:5a1f::, stačí prvních 48 bitů) a na rozhraní k ISP spusíte Torch, tak tam (pochopitelně) uvidíte protokol 41, ne ICMP. Ověřeno.

Aha, takto sa myslí ten ping test, ICMPv6 ping zabalený v protokole 41 poslaný cez IPv4. Tým sa to určite otestovať dá.

Ja som to pôvodne pochopil ako spustenie pingu z vnútornej siete.