Vraag Hoe werkt IPv6-subnetwerken en hoe verschilt dit van IPv4-subnetten?


Dit is een Canonical Question over IPv6-subnetten.

Verwant:

Ik weet er veel over IPv4-subnetten, en terwijl ik me klaarmaak om een ​​IPv6-netwerk (deploy | work on) in te zetten, moet ik weten hoeveel van deze kennis overdraagbaar is en wat ik nog moet leren. IPv6 lijkt op het eerste gezicht veel complexer dan IPv4. Dus ik zou graag willen weten:

  • IPv6 is 128 bits, dus waarom is / 64 het kleinste aanbevolen subnet voor hosts? Gerelateerd hieraan:
    • Waarom wordt aangeraden om / 127 te gebruiken voor point-to-point verbindingen tussen routers en waarom werd dit in het verleden aanbevolen? Moet ik bestaande routerlinks wijzigen om / 127 te gebruiken?
    • Waarom zouden virtuele machines worden voorzien van minder dan a / 64 adressen?
    • Zijn er andere situaties waarin ik een subnet zou gebruiken dat kleiner is dan / 64?
  • Kan ik rechtstreeks van IPv4-subnetten naar IPv6-subnetten toewijzen? Komt een IPv4 / 24 bijvoorbeeld rechtstreeks overeen met een IPv6 / 56 of / 120?
  • Mijn interfaces hebben verschillende IPv6-adressen. Moet het subnet voor iedereen hetzelfde zijn?
  • Waarom zie ik soms een% in plaats van een / in een IPv6-adres en wat betekent dit?
  • Verdoe ik teveel subnetten? Zullen we niet gewoon weer opraken?
  • Op welke andere belangrijke manieren onderscheidt IPv6-subnetting zich van IPv4-subnetten?

110
2017-09-11 00:57


oorsprong




antwoorden:


Het eerste dat moet worden vermeld over IPv6-subnetten is dat een andere wijze van denken wordt gevraagd. In IPv4 denk je meestal aan het aantal adressen u hebt de beschikking over en hoe u er voldoende aan elke eindgebruiker kunt toewijzen. In IPv6 denk je meestal aan het aantal (/ 64) subnetten je hebt de beschikking over en hoe je ze kunt toewijzen aan eindgebruikers. U maakt zich bijna nooit zorgen over het aantal IP-adressen dat in een bepaald subnet wordt gebruikt. Met uitzondering van enkele speciale gevallen zoals point-to-point-links, heeft elk subnet gewoonweg veel meer adressen beschikbaar dan het ooit zal vereisen, dus maakt u zich in plaats daarvan alleen zorgen over het toewijzen van subnetten, niet over hosts binnen deze subnetten.

IPv6-subnetten zijn meestal / 64 omdat dat vereist is voor SLAAC (stateless adres autoconfiguration) werken. Zelfs als SLAAC niet in gebruik is, kunnen er andere redenen zijn om / 64 te gebruiken. Er kunnen bijvoorbeeld enkele eindgebruikersapparaten zijn die er net van uitgaan / 64, of anders zijn routing van subnetten langer dan / 64 op sommige routers inefficiënt omdat de routerimplementator het geval van / 64 of kortere routes heeft geoptimaliseerd om te besparen routeringstabelgeheugen.

Waarom wordt aangeraden om / 127 te gebruiken voor point-to-point-koppelingen

Voor het specifieke geval van point-to-point-links wordt / 127 aanbevolen in plaats van / 64 om een ​​kwetsbaarheid te voorkomen waarbij packets adressen naar een van de vierronden van ongebruikte adressen in het subnet ongewenste buurverzoekaanvragen en tabelinvoer veroorzaken die kan een router verdrinken. Dergelijke pakketten voor ongewenste adressen kunnen schadelijk of toevallig zijn. Maar zelfs als u een point-to-point-koppeling daadwerkelijk als / 127 configureert, zijn sommige mensen voorstander om een ​​geheel / 64 toch toe te wijzen om consistent te zijn.

Waarom zouden virtuele machines worden voorzien van subnetten kleiner dan / 64?

Ik weet niet precies waarom virtuele machines zouden worden voorzien van subnetten kleiner dan / 64. Misschien omdat een hostingprovider veronderstelde dat een server als een eindgebruiker was en slechts een enkel (/ 64) subnet nodig had, niet verwachtend dat de server eigenlijk een verzameling VM's zou zijn die een interne routingtopologie vereisen? Het kan ook eenvoudig worden gedaan door het maken van het adresplan gemakkelijker te onthouden: de gastheer krijgt PREFIX::/64, dan krijgt elke VM PREFIX:0:NNNN::/96 waar NNNN uniek is voor de VM en de VM kan toewijzen PREFIX:0:NNNN:XXXX:YYYY zoals het wil.

Kan ik rechtstreeks van IPv4-subnetten naar IPv6-subnetten toewijzen? Komt een IPv4 / 24 bijvoorbeeld rechtstreeks overeen met een IPv6 / 56 of / 120?

Vanuit een low-levelperspectief van hoe adressering en routering werkt, heeft de prefixlengte dezelfde betekenis in IPv6 en IPv4. Op dat niveau kun je een analogie maken, zoals "een IPv4 / 16 gebruikt de helft van de bits voor het netwerkadres en de helft van de bits voor het hostadres, dat is als een / 64 in IPv6". Maar deze vergelijking is niet echt geschikt. Sterke conventies zijn naar voren gekomen in IPv6, waardoor de divisies van netwerkgroottes enigszins meer lijken op de oude wereld van stijlvolle netwerken in IPv4. Om zeker te zijn, introduceerde IPv6 niet classful adressering waarbij de belangrijkste paar bits van het adres een bepaald netmasker afdwingen, maar wat IPv6 doet hebben is zeker [defacto / conventionally] standaard netwerkmaten:

  • / 64: de basisgrootte van een enkel subnet: LAN, WAN, adressenblok voor virtuele webhosts, enz. Van "normale" subnetten wordt nooit verwacht dat ze een kleiner (langer voorvoegsel) dan / 64 zijn. Er wordt nooit verwacht dat subnetten groter zijn (kortere prefix) dan / 64 omdat a / 64-waardigheid van hostadressen veel meer is dan we ons kunnen voorstellen.
  • / 56: een blok van 256 standaard subnetten. Hoewel het huidige beleid ISP's toestaat blokken van zo groot als / 48 aan elke eindgebruiker uit te delen en hun adresgebruik nog steeds goed te rechtvaardigen, kunnen sommige ISP's ervoor kiezen om een ​​/ 56 toe te kennen aan consumentengekochte klanten als een compromis tussen toewijzingspartijen van subnetten voor hen en adresseer economie.
  • / 48: een blok van 65536 basissubnets en de aanbevolen blokgrootte die elke eindklant van een ISP-klant moet ontvangen.
  • / 32: de standaardgrootte van het blok dat de meeste internetproviders zullen ontvangen telkens wanneer zij meer adressen aanvragen bij een regionaal adresregister.

Binnen serviceprovider en entreprise-netwerken zijn veel meer prefixlengtes dan deze 4 te zien. Wanneer we kijken naar de routeringstabellen van routers binnen deze netwerken, hebben IPv4 en IPv6 veel gemeen, inclusief het grootste deel van de manier waarop routing werkt: routes voor langere voorvoegsels overschrijven routes voor kortere prefixen, dus het is mogelijk om te aggregeren (korter maken) en te boren down (maak langere) routes. Net als in IPv4 kunnen routes worden samengevoegd of samengevat tot grotere blokken met kortere prefixen om de grootte van routeringstabellen te minimaliseren.

Een andere kwestie van mapping tussen IPv4 en IPv6 zou zijn hoe IPv4- en IPv6-toewijzingen op dual-stackmachines moeten worden geharmoniseerd, zodat aanpakken van plannen gemakkelijk kunnen worden begrepen. In de verste verte zijn er zeker conventies die algemeen gebruikt worden om dit te doen: sluit het IPv4 "subnetnummer" in in een deel van het IPv6-voorvoegsel, ofwel met BCD (B.v. 10.0.234.0/24 wordt 2001:db8:abcd:234::/64) of binair (10.0.234.0/24 wordt 2001:db8:abcd:ea::/64).

Mijn interfaces hebben verschillende IPv6-adressen. Moet het subnet voor iedereen hetzelfde zijn?

Absoluut niet! Van IPv6-hosts wordt verwacht dat ze multihomed kunnen zijn door meerdere IP-adressen tegelijkertijd te hebben die afkomstig zijn van verschillende subnetten, net zoals IPv4. Als ze automatisch zijn geconfigureerd met SLAAC, zijn de verschillende subnetten mogelijk afkomstig van routerreclame van verschillende routers.

Waarom zie ik soms een% in plaats van een / in een IPv6-adres en wat betekent dit?

Je zou de ene niet zien in plaats van de andere. Ze hebben verschillende betekenissen. Een schuine streep duidt een prefix (subnet) aan, wat een blok adressen betekent die allemaal met hetzelfde beginnen n bits. Een adres zonder een schuine streep is een hostadres. Je zou kunnen denken aan een dergelijk adres met aan het eind een impliciete "/ 128", wat betekent dat alle 128 bits zijn gespecificeerd.

Het procentteken vergezelt een link-local adres. In IPv6 heeft elke interface een link-local adres naast andere IP-adressen die het kan hebben. Maar het punt is, link-local adressen zijn altijd, zonder uitzondering, in de fe80::/10 blok. Maar als we proberen met een peer te praten via een lokaal adres en de lokale host meerdere interfaces heeft, hoe moeten we dan weten welke interface we gebruiken om met deze peer te praten? Normaal gesproken vertelt de routeringstabel ons welke interface moet worden gebruikt voor een bepaald voorvoegsel, maar hier vertelt het ons dan fe80::/10 is bereikbaar via elke interface.

Het antwoord is dat we moeten aangeven welke interface moet worden gebruikt met behulp van de syntaxis address%interface. Bijvoorbeeld, fe80::1234:5678:8765:4321%eth0.

Verdoe ik teveel subnetten? Zullen we niet gewoon weer opraken?

Niemand weet het. Wie kan de toekomst vertellen?

Maar overweeg dit. In IPv6 is het aantal beschikbaar subnetten is het kwadraat van het aantal beschikbaar individuele adressen in IPv4. Dat is echt heel veel. Nee, ik bedoel echt heel veel!

Maar toch: we geven automatisch een / 32 uit aan elke ISP die er om vraagt, we geven a / 48 uit aan elke ISP-klant. Misschien overdrijven we en zullen we IPv6 toch verspillen. Maar er is een bepaling voor: slechts één achtste van de IPv6-ruimte is tot nu toe beschikbaar voor gebruik: 2000::/3. Het idee is dat als we een vreselijke puinhoop maken van de eerste achtste en we het liberale toewijzingsbeleid drastisch moeten herzien, we nog zeven keer proberen voordat we in de problemen zitten.

En tot slot: IPv6 hoeft niet eeuwig mee te gaan. Misschien zal het een langere levensduur hebben dan IPv4 (een indrukwekkend leven al en het is nog niet voorbij) maar zoals elke technologie zal het op een dag stoppen met matteren. We moeten het alleen tot die tijd maken.


130
2017-09-11 02:55



Zeer goede uitleg! Vooral over de verschillende mindset. Als je naar de cijfers kijkt, zie je dat er in 2000 536,870,912 / 32's (kleine ISP's) zijn: / 3. Met een wereldbevolking van 7 miljard is dat één ISP per 13 mensen, en elke dergelijke ISP kan 65.536 klanten hebben met a / 48 elk. U hoeft zich geen zorgen te maken over het verspillen van adressen :-) - Sander Steffann
Ja, dit is een heel goede verklaring. - Fergus
Goede uitleg over de specifieke details van 2000 :: / 3. - Koos van den Hout
Leuke uitleg. +1 bij de laatste opmerking. Ik hoop dat iedereen dit al heeft gezien: xkcd.com/865 - Nico
@SanderSteffann En als het een probleem wordt, zou het redelijk zijn voor ISP's om nieuwe / 64s toe te wijzen aan residentiële gebruikers in plaats van / 48s., En voor kleine ISP's om blokken van 4096 van die tegelijkertijd aan te vragen (/ 52 blokken ). Het huidige schema is zo ontworpen dat er op elke laag ruimte is voor uitbreiding. - immibis


IPv6 is 128 bits, dus waarom is / 64 het kleinste aanbevolen subnet voor hosts?

Allereerst een beetje ASCII-kunst van de RFC's om terminologie vast te stellen:

|         n bits         |   m bits  |       128-n-m bits         |
+------------------------+-----------+----------------------------+
| global routing prefix  | subnet ID |       interface ID         |
+------------------------+-----------+----------------------------+

Het voorvoegsel voor globale routering identificeert meestal het algemene netwerk waartoe het adres behoort. Het zijn meestal 48 bits. De interface-ID identificeert een gegeven netwerkinterface. Het is meestal 64-bits. De resterende 16 bits is uw subnet-ID.

Oké, met de uitleg:

Volgens RFC 4291 - IP-versie 6 Adressering van architectuur:

Alle Global Unicast-adressen anders dan die welke beginnen met binaire 000 hebben een 64-bits interface-ID-veld.

En RFC 5375 - Overwegingen voor IPv6 Unicast-adrestoewijzing:

Een belangrijk onderdeel van een IPv4-adresseringsplan is de lengte bepalen      van elk subnetprefix. In tegenstelling tot IPv4, de IPv6-adressering      architectuur [RFC4291] geeft aan dat alle subnetten globaal worden gebruikt      Unieke adressen en ULA's hebben altijd dezelfde prefixlengte van 64      bits.

Dus de uitzondering op het 000-voorvoegsel negerend, is de interface-ID dat altijd 64-bits precies. Dit is een andere manier om dat te zeggen alle lokale uitzendnetwerken zijn altijd 64-bits. Als u een IPv6-adres hebt, is het netmasker hiervan altijd 64 bits. Nooit meer, nooit minder. Als aan u een grotere adresruimte is toegewezen (kortere netmasker dan 64-bits), wordt ervan uitgegaan dat u die adresruimte partitioneert in 64-bits netwerken en zelf de routering uitvoert. Als je een netwerk hebt gekregen dat kleiner is dan dat (langere netmasker), dan heeft iemand het verpest.

Dus waarom 64 bits precies?

In de regel worden IPv6-adressen automatisch geconfigureerd in plaats van toegewezen. De router zal adverteren welk netwerkprefix beschikbaar is (routeringsprefix + subnet-ID: eerste 64-bits), en uw computer vult de laatste 64-bits in met behulp van zijn eigen unieke id. Hoe komt uw computer met een unieke identificatiecode? Er zijn een paar mogelijkheden, de meest gebruikelijke is om het MAC-adres van je interface te gebruiken. Je deelt de MAC in tweeën (leverancier halve / seriële helft), draait het universeel-lokale bit aan de kant van de leverancier en sluit ze samen met FF:FE middenin. Zo 00:30:48:01:23:45 wordt 0230:48ff:fe01:2345. Plaats nu het geadverteerde 64-bit netwerkprefix aan de linkerkant van dat en je hebt je IP-adres.

Het belangrijke punt hier is dat als u dit schema volgt, IP-adresbotsingen niet zullen gebeuren. Aangezien elk apparaat in een bepaald broadcastnetwerk een uniek MAC-adres nodig heeft om te werken, betekent het koppelen van de interface-ID aan het MAC-adres dat zolang het broadcast-verkeer niet botst, noch IPv6-adressen worden gebruikt. Het gebruik van 64-bits (in plaats van alleen de 48 toegewezen aan MAC-adressen) geeft een beetje bewegingsruimte die verder gaat dan alleen de adressen die door dit schema worden geboden (er zijn er nog meer).

Zijn er andere situaties waarin ik een subnet zou gebruiken dat kleiner is dan / 64?

Nee. Tenzij je gebroken bent. Wellicht heeft u een rechtvaardiging op basis van lokale vereisten voor het instellen van handmatige routing met uw bestaande netwerk. Maar bedenk dat je daarmee waarschijnlijk een zooitje maakt:

Van RFC 5375 - Overwegingen voor IPv6 Unicast-adrestoewijzing:

Als u een prefixlengte gebruikt die afwijkt van a / 64, worden er veel afgebroken      kenmerken van IPv6, inclusief Neighbor Discovery (ND), Secure Neighbour      Detectie (SEND) [RFC3971], privacy-extensies [RFC4941], delen van      Mobile IPv6 [RFC4866], Protocol Independent Multicast - Sparse Mode      (PIM-SM) met Embedded-RP [RFC3956] en Site Multihoming van IPv6      Bemiddeling (SHIM6) [SHIM6], onder anderen. Een aantal andere      functies die momenteel worden ontwikkeld of die worden voorgesteld, zijn ook afhankelijk van      / 64 subnet-voorvoegsels.

....

Sommige netwerkbeheerders hebben echter voorvoegsels langer dan gebruikt      / 64 voor koppelingen tussen routers, meestal slechts twee routers op een      point-to-point link. Op koppelingen waar alle adressen zijn toegewezen      door handmatige configuratie, en alle knooppunten op de link zijn routers (niet      eindgastheren) die bekend zijn bij het netwerk, hebben administrators niet nodig      een van de IPv6-functies die afhankelijk zijn van / 64 subnet-prefixen, dit kan      werk. Het gebruik van subnetprefixen langer dan / 64 wordt niet aanbevolen voor      algemeen gebruik, en ze te gebruiken voor koppelingen die eindgastheren bevatten      een bijzonder slecht idee, omdat het moeilijk is om te voorspellen wat IPv6 is      functies die de hosts in de toekomst zullen gebruiken.

Waarom wordt aangeraden om / 127 te gebruiken voor point-to-point verbindingen tussen routers en waarom werd dit in het verleden aanbevolen?

Misschien wil je het even vergeten RFC 3627 - Gebruik van / 127 prefixlengte tussen routers die als schadelijk worden beschouwd. Bekijk dan de volgende RFC 6164 - 127-bit IPv6-voorvoegsels op inter-routerlinks gebruiken.

Het bezwaar tegen het gebruik van voorvoegsels langer dan / 64 op routers heeft te maken met automatische configuratie van de router die mogelijk onder zeldzame omstandigheden faalt. Het bezwaar tegen het gebruik van prefixen korter dan / 127 (alleen 2-hosts) heeft te maken met een aantal potentiële denial-of-service-problemen met betrekking tot pakketten die naar de niet-afgeroepen adressen worden verzonden. Omdat problemen met de denial-of-service in de echte wereld slechter zijn dan theoretische mislukkingen in de auto-configuratie, is 127 de nieuwe favoriet.

Moet ik bestaande routerlinks wijzigen om / 127 te gebruiken?

Als je een IPv6-router bestuurt, raad ik je aan de twee RFC's te lezen (ze zijn kort!) En zelf te beslissen.

Kan ik rechtstreeks van IPv4-subnetten naar IPv6-subnetten toewijzen?

Komt een IPv4 / 24 bijvoorbeeld rechtstreeks overeen met een IPv6 / 56 of / 120?

Eigenlijk ja. Weet je nog die 000 prefix die we bewust eerder hebben genegeerd? Welnu, hier is een gebruik voor:

Op dual-stacksystemen (waarbij zowel de IPv4- als de IPv6-stack actief is), kunt u IPv4 weergeven met behulp van IPv6-mechanica. Ze noemen het "IPv6-IPv6-adressen"Het patroon is helemaal nullen, gevolgd door FFFF, gevolgd door het 32-bits IPv4-adres.

Zo, 192.168.100.21 wordt ::FFFF:C0A8:6415 - of eenvoudiger: ::FFFF:192.168.100.21. Aangezien die rechterbit een IPv4-adres vertegenwoordigt, wordt deze traditioneel uitgeschreven met behulp van de decimale vorm.

Omdat dit een echt IPv4-adres is, gebruikt het nog steeds IPv4-headers enz., Wat betekent dat een IPv4-stack aanwezig moet zijn, IPv4-routes moeten worden ingesteld en zo. Het voordeel is dat u zowel IPv4- als IPv6-adressen kunt weergeven met behulp van één adresstructuur, die de ontwikkeling van toepassingen vereenvoudigt. Het maakt geen enkel verschil als het gaat om het netwerk.


42
2018-01-10 06:51





  1. IPv6 is 128 bits, dus waarom is / 64 het kleinste aanbevolen subnet voor hosts?

    Dit prefixformaat werd oorspronkelijk aanbevolen in een oudere RFC - er is sindsdien een herziening van dit beleid waar de kwestie van Neighbor Discovery Attacks wordt overwogen en het gebruik van a / 126 is een geldige beperking - niettemin, als u PtP-koppelingen met de Het enige doel van het routeren van verkeer, een alternatieve optie is eenvoudigweg vasthouden aan een / 64 en firewall dat subnet. Beter nog, wijs jezelf een pool toe waarmee je / 64 subnetten tekent, en heb die hele pool als een bestemming op de zwarte lijst aan je rand (en waar dan ook waar die vijandigheid vandaan zou kunnen komen)

  2. Waarom wordt aangeraden om / 127 te gebruiken voor point-to-point verbindingen tussen routers en waarom werd dit in het verleden aanbevolen? Moet ik bestaande routerlinks wijzigen om / 127 te gebruiken?

    / 127 wordt niet aanbevolen tussen routers en is nooit geweest - het Anycast-adres van alle routers is het volledige nullen-adres van het subnet; dit betekent dat / 127 technisch alleen geldig is tussen twee machines waarvan er één is NIET fungeren als een router. / 126 is natuurlijk prima.

    In elk geval zou ik echter niet adviseren om bestaande / 64 links te veranderen tenzij uw apparatuur kwetsbaar is voor een Border Discovery-cache-aanval - en zelfs in dit geval moet u eerst bepalen of u die / 64 daadwerkelijk gaat gebruiken voor internetconnectiviteit , als het antwoord nee is, firewall het gewoon.

  3. Waarom zouden virtuele machines worden voorzien van subnetten kleiner dan / 64?

    Dit breekt SLAAC en RA's, tenzij je echt, werkelijk weet wat je doet, het is onwaarschijnlijk dat je een goede reden hebt om dit te doen - misschien heeft je upstream je alleen een single / 64 gegeven, maar als dat het geval is, moet je teruggaan naar hen en meer vragen, als ze willen om je hiervoor op te laden, op zoek te gaan naar een nieuwe provider en ze misschien ook een paar vervelende e-mails te sturen die linken naar de relevante RFC's.

  4. Zijn er andere situaties waarin ik een subnet zou gebruiken dat kleiner is dan / 64?

    Eerlijk gezegd? waarschijnlijk niet. Als ik een legitieme reden bedenk dat een kleiner subnet de voorkeur heeft voor andere doeleinden dan het voorkomen van NDP-aanvallen, zal ik dit gedeelte bewerken.

    Daarentegen, daar zijn situaties waar je zou zijn NIET subnetten kleiner dan / 64 willen gebruiken - met name overal waar u een omgeving met apparatuur voor het doorsturen van hardware uitvoert (denk aan naammerkrouters en L3-switches) - sommige zullen geen hardwarerouting van voorvoegsels langer dan / 64 kunnen uitvoeren, andere moeten splitsen om de bewerking op te zetten in meerdere vergelijkingen, moet u op zijn minst uw best doen om ervoor te zorgen dat / 64 het langste voorvoegsel is in uw (OSPF / ISIS / EIGRP / etc.) backbone.

  5. Kan ik rechtstreeks van IPv4-subnetten naar IPv6-subnetten toewijzen? Komt een IPv4 / 24 bijvoorbeeld rechtstreeks overeen met een IPv6 / 56 of / 120?

    Officieel, :: ffff: xxxx is het formaat voor een IPv6-toegewezen IPv4-adres - er zijn natuurlijk ook een aantal overgangsmechanismen, namelijk 6to4 en zijn relatieve, 6e, die een IPv4-adres toewijzen aan een globale IPv6-een voor de doeleinden om IPv6-toegang via IPv4 te bieden door een IPv6-voorvoegsel te maken dat is afgeleid van het IPv4-adres dat wordt overgedragen.

  6. Mijn interfaces hebben verschillende IPv6-adressen. Moet het subnet voor iedereen hetzelfde zijn?

    Nee, het gebruik van verschillende adressen en subnetformaten in dezelfde interface zou geen probleem moeten zijn. Als dit zo is, is de implementatie buggy. Natuurlijk is een betere vraag waarom zou je dit doen?

  7. Waarom zie ik soms een% in plaats van een / in een IPv6-adres en wat betekent dit?

    Dit is een scheidingsteken, algemeen toegepast op link-local adressen (fe80 :: / 12) - aangezien hetzelfde link-local adres legitiem op meerdere interfaces kan bestaan, wordt het% -delimiter gebruikt om aan te geven welke interface bedoeld is. Linux maakt over het algemeen het specificeren van de interface verplicht bij het uitvoeren van operaties met een link-local. Windows Vista / 2008 en verder zijn een beetje slimmer en klagen niet tenzij een link-local niet-uniek is.

  8. Verdoe ik teveel subnetten? Zullen we niet gewoon weer opraken?

    Nee. Dit is een dood paard dat is gegeseld WAAAAAAAAAY te vaak - het huidige wereldwijde IPv6-internet is 2000 :: / 3 - er zijn verschillende voorvoegsels die IANA zou kunnen gebruiken als op de een of andere manier elke RIR op de planeet hun adresbestanden kon leegmaken. Dus nee, we zullen niet genoeg ruimte hebben, en zelfs als dat zo is, dan is een penbeweging nodig om een ​​nieuw voorvoegsel te tonen, geen technische verandering. Het enige wat deze vraag echt benadrukt, is het onvermogen van de menselijke geest om volledig te begrijpen hoe belachelijk groot de adresruimte is.

  9. Op welke andere belangrijke manieren onderscheidt IPv6-subnetting zich van IPv4-subnetten?

    Behalve dat het niet uitmaakt hoeveel ruimte u gebruikt, onthoud dat er geen broadcastadres is en dat het "subnet-zero" -adres nu het anycastadres van de all-routers is (in feite een adres dat impliciet bestaat op alle geconfigureerde nodes om IPv6-pakketten door te sturen) - dit heeft een handig neveneffect van het toestaan ​​dat je dat allemaal nullen-adres gebruikt als je standaardroute in een netwerk (nee, het zal geen pakketduplicatie veroorzaken, het is ANYcast, niet MULTIcast) - houd in gedachten hoewel de host om de paar seconden heen en weer kan schakelen tussen routers, dus dit is niet geschikt voor een stateful firewalling-instelling als verbindingscontrole niet tussen hen wordt gesynchroniseerd.

    Afgezien van dit, is het andere grote verschil dat IPv6 geeft om dubbele adressen en dode buren (NUD) - dus, in tegenstelling tot IPv4, zal een host weigeren een adres te gebruiken als het kan bepalen dat een ander knooppunt op de link het al gebruikt . NUD aan de andere kant is handig als u statische routes configureert - u kunt eigenlijk meerdere afzonderlijke routes definiëren naar een prefix met variërende statistieken en deze zullen echt werken, in tegenstelling tot in IPv4, waar de laagste metriekroute wordt gebruikt, ongeacht of de volgende -hop is dood of levend (hoewel dit misschien niet waar is voor sommige IPv4-implementaties die ARP gebruiken om routes te valideren zoals Cisco en andere grote routerleveranciers)

    TLDR; IPv6 detecteert dubbele adressen en onbereikbare buren. Het adres met alle nullen is all-routers anycast en er is niet zoiets als uitzenden, iedereen is een gewoon adres.


18
2018-03-10 17:27



Als antwoord op antwoord 2) ... tools.ietf.org/html/rfc6164  tools.ietf.org/html/rfc6547 - cpt_fink


Voor degenen die zich afvragen waar in de specificaties de / 64-vereiste voor SLAAC vandaan komt, zijn hier enkele extra verwijzingen:

Van IPv6 Stateless Address Autoconfiguration (RFC 4862):

Als de som van de lengte van het voorvoegsel en lengte van interface-ID   is niet gelijk aan 128 bits, de Prefix Information-optie MOET zijn   genegeerd. [...]

Het is de verantwoordelijkheid van de systeembeheerder om ervoor te zorgen   dat de lengte van voorvoegsels in Router Advertisements   zijn daarvoor consistent met de lengte van interface-identificaties   link type.

En van IP-versie 6 adresseringsarchitectuur (RFC 4291):

Voor alle unicast-adressen, behalve degene die beginnen met het binaire bestand   waarde 000, Interface-ID's moeten 64 bits lang zijn en moeten zijn   geconstrueerd in gemodificeerd EUI-64-formaat.

Omdat de interface-ID dus 64 bits lang moet zijn en de som van de prefixlengte en de interface-ID-lengte 128 moet zijn, is de enige mogelijke lengte van het voorvoegsel bij gebruik van SLAAC 64 bits.


2
2018-01-06 00:45





IPv6 is 128 bits, dus waarom is / 64 het kleinste aanbevolen subnet voor hosts?

Omdat de voorstanders van IPv6 het idee van auteloze configuratie zonder staat genoten.

Als je voor een andere subnetgrootte gaat, zal de automatische configuratie van statenloos uitvallen. Sommige andere minder belangrijke dingen kunnen ook breken, lees rfc7421 voor meer informatie.

Persoonlijk vind ik dat stateloze autoconfiguratie sowieso een stom idee is. Het leidt tot onleesbare adressen en geeft je in principe geen controle over adressering, behalve het blokkeren van het subnet.

Natuurlijk is het ding met conventies als je ze volgt en dingen fout gaan kun je wijzen op de conventie, als je weigert om ze te volgen en dingen fout gaan, dan zal het jouw schuld zijn.

Waarom wordt aangeraden om / 127 te gebruiken voor point-to-point verbindingen tussen routers,

Het gebruik van subnetten met een klein aantal beschikbare adressen voorkomt aanvallen op uitputting van buren.

Natuurlijk is deze redenering niet alleen van toepassing op point-to-point-links. Ik denk dat het politiek mogelijk was om deze aanbeveling te doen voor point-to-point router-links, maar politiek niet mogelijk om het voor andere links te maken.

Waarom zouden virtuele machines worden voorzien van minder dan a / 64 adressen?

We moeten hier een onderscheid maken. Er zijn twee manieren waarop een hostingprovider adressen aan een computer kan toewijzen (fysiek of virtueel).

Ze kunnen "on-link" -adressen toewijzen, waarbij verwacht wordt dat het apparaat antwoordt op verzoeken om buren te detecteren. Sommige hostingproviders hebben ervoor gekozen om elke machine een / 64 te geven die voordelen biedt in adresmobiliteit, anderen geven elke VLAN een / 64 en geven vervolgens de individuele machines subblokken van die welke minder adressen gebruiken en kunnen betekenen dat lokaal verkeer lokaal blijft in plaats van overgeven aan een router.

Of ze kunnen de machine als een router behandelen en een gerouteerd blok toewijzen. In dit geval zou het voldoende adressen nodig hebben om al zijn interne subnetten te adresseren. Als u de "alle subnets moet / 64" -conventie volgen, zou dit betekenen dat u er minimaal een / 64 en mogelijk meer aan moet toewijzen. Dit is logisch voor machines met "netwerken in de machine", bijvoorbeeld een containergastheer.

Kan ik rechtstreeks van IPv4-subnetten naar IPv6-subnetten toewijzen? Komt een IPv4 / 24 bijvoorbeeld rechtstreeks overeen met een IPv6 / 56 of / 120?

Elke dergelijke toewijzing is een kwestie van lokaal beleid.

Mijn interfaces hebben verschillende IPv6-adressen. Moet het subnet voor iedereen hetzelfde zijn?

Nee

Waarom zie ik soms een% in plaats van een / in een IPv6-adres en wat betekent dit?

% is een interface-ID. Het wordt gebruikt in combinatie met link-local adressen. Dit is nodig omdat een apparaat meerdere interfaces kan hebben en de netwerken die op die interfaces zijn aangesloten overlappende link-local adressen hebben.

Verdoe ik teveel subnetten? Zullen we niet gewoon weer opraken?

Ik zou me er niet te veel zorgen over maken.

Zelfs met de vreemde beslissing van de IPv6-ontwerpers om een ​​128-bits adresruimte te gebruiken en vervolgens bijna de helft ervan weg te gooien bij automatische configuratie zonder status, heeft IPv6 nog steeds enorm veel meer ruimte dan IPv4.

En als er een knelpunt was, zou het niet veel meer kosten dan een slag van een pen om die vreemde beslissing terug te draaien.

Een veel groter probleem met de schaalbaarheid van IPv6 is de routetabelomvang. IPv6 NAT wordt sterk afgeraden. Het runnen van een groot netwerk op provider-toegewezen adressen leidt tot een aanzienlijk risico van provider lock-in.

Ik geloof dus dat naarmate de penetratie van IPv6 in bedrijfsnetwerken toeneemt, er een explosie zal optreden in aanvragen voor IPv6-ruimte zonder providers.


2
2018-01-06 03:25