{"id":1149,"date":"2026-09-16T03:00:30","date_gmt":"2026-09-16T03:00:30","guid":{"rendered":"https:\/\/junglelabs.uk\/"},"modified":"2026-09-16T03:08:20","modified_gmt":"2026-09-16T03:08:20","slug":"get-an-ipv6","status":"publish","type":"post","link":"https:\/\/junglelabs.uk\/fr\/get-an-ipv6\/","title":{"rendered":"Comment obtenir une allocation \/48 IPv6 de la RIPE NCC : Guide complet"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In contemporary network architecture, relying on upstream Internet Service Providers (ISPs) for dynamically assigned or non-portable IPv6 space creates vendor lock-in, complicates disaster recovery, and hinders carrier-neutral multi-homing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An IPv6 <code>\/48<\/code> is widely recognized across global transit networks and Internet Exchange Points (IXPs) as the minimum allocation boundary for public BGP routing. While IPv6 addressing boundaries extend down to <code>\/64<\/code> (the standard single-subnet allocation under SLAAC), Tier-1 carriers and autonomous systems universally filter prefixes longer than <code>\/48<\/code> (such as <code>\/56<\/code> or <code>\/64<\/code>) to protect global routing tables from unbounded bloat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By securing an independent IPv6 allocation directly through the RIPE NCC (R\u00e9seaux IP Europ\u00e9ens Network Coordination Centre), an organization obtains:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Provider Independence (PI):<\/strong> Freedom to change transit carriers or upstream vendors without renumbering internal networks, infrastructure, or edge services.<\/li>\n\n\n\n<li><strong>True BGP Multi-homing:<\/strong> The ability to advertise your route to two or more transit providers simultaneously, optimizing latency and failover.<\/li>\n\n\n\n<li><strong>Decentralized Security &amp; Trust:<\/strong> Direct administrative control over cryptographic origin validation (RPKI ROA) and reverse DNS (<code>ip6.arpa<\/code>) delegation.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Understanding RIPE NCC Policy: Allocations vs. Assignments<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before submitting requests, it is essential to understand the distinction in terminology defined by the RIPE NCC IPv6 Address Allocation and Assignment Policy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Allocations (PA &#8211; Provider Aggregatable):<\/strong> Blocks intended to be subdivided and distributed further to downstream customers or internal business units. These are typically issued to Local Internet Registries (LIRs), starting at <code>\/29<\/code> or <code>\/32<\/code>.<\/li>\n\n\n\n<li><strong>Assignments (PI &#8211; Provider Independent):<\/strong> Blocks assigned directly to an End User organization for its own dedicated operational infrastructure. These prefixes cannot be further sub-allocated to third parties.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For an organization, homelab, or enterprise seeking a standalone <code>\/48<\/code>, you will primarily seek a Provider Independent (PI) assignment, registered under an <code>inet6num<\/code> object with a status of <code>ASSIGNED PI<\/code> (or <code>ALLOCATED-BY-LIR<\/code> depending on contract structure).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Choosing Your Path: Direct LIR Membership vs. Sponsoring LIR<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">RIPE NCC allows two mechanisms for end users to secure resources:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Feature \/ Metric<\/strong><\/td><td><strong>Direct LIR Membership<\/strong><\/td><td><strong>Sponsoring LIR Model<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Target Audience<\/strong><\/td><td>ISPs, Telcos, Data Centers, Large Enterprises<\/td><td>Small-to-Medium Businesses (SMBs), Startups, Edge Networks<\/td><\/tr><tr><td><strong>Annual Financial Commitment<\/strong><\/td><td>Annual RIPE membership fee (~\u20ac1,000\u2013\u20ac1,550\/year)<\/td><td>Modest annual sponsorship fee (often \u20ac50\u2013\u20ac250\/year)<\/td><\/tr><tr><td><strong>One-Time Onboarding<\/strong><\/td><td>Direct legal vetting &amp; application fee with RIPE NCC<\/td><td>Set up directly via the sponsoring broker\/partner<\/td><\/tr><tr><td><strong>Resource Capabilities<\/strong><\/td><td>Can request <code>\/29<\/code>\u2013<code>\/32<\/code> IPv6 blocks, 16\/32-bit ASNs, and manage LIR pool<\/td><td>Can sponsor <code>\/48<\/code> PI, 16\/32-bit ASNs, and transfer handles<\/td><\/tr><tr><td><strong>Management Overhead<\/strong><\/td><td>High (direct governance, voting rights, compliance)<\/td><td>Low (sponsor handles administrative filings with RIPE)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Recommendation:<\/strong> Unless your organization anticipates becoming a commercial internet registry or requires massive <code>\/29<\/code>\u2013<code>\/32<\/code> aggregations, contracting a Sponsoring LIR is the standard, most economical approach to secure a <code>\/48<\/code>.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Mandatory Prerequisites<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To qualify for an IPv6 assignment under RIPE NCC criteria, the requesting entity must fulfill three primary requirements:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A. Demonstration of Multi-Homing Intent<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">RIPE NCC policies require that an End User requesting an independent prefix must demonstrate an intent to multi-home the prefix. This is evidenced by:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Operating or acquiring an Autonomous System Number (ASN).<\/li>\n\n\n\n<li>Providing active or planned peering\/transit arrangements with <strong>at least two distinct autonomous systems<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">B. Legal Presence within the RIPE NCC Service Region<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The applicant (the End User organization) must be legally established within the RIPE service territory (encompassing Europe, the Middle East, and parts of Central Asia). If contracting via a Sponsoring LIR, the sponsoring agreement requires:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Official corporate registry documentation (e.g., Certificate of Incorporation, KVK, Handelsregister, Companies House excerpt).<\/li>\n\n\n\n<li>Proof of operational or infrastructure presence if applying from an international parent entity.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">C. Technical Addressing Plan<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You must be prepared to articulate a basic addressing scheme demonstrating that the <code>\/48<\/code> will be utilized across network segments (e.g., edge routers, DMZ, internal services, VPN gateways, site-to-site tunnels) within 12 months.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step-by-Step Acquisition Lifecycle<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.Step 1: Create a RIPE NCC Access Account &amp; Maintainer Objects\uff1a<\/strong>Establish identity in the RIPE Whois Database\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Begin by creating an administrative profile on the RIPE NCC Access Portal. Once authenticated, construct your base Whois database objects:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>person<\/code> or <code>role<\/code> object:<\/strong> Defines the administrative and technical contacts (including email and postal address).<\/li>\n\n\n\n<li><strong><code>mntner<\/code> (Maintainer) object:<\/strong> Secures your objects with authentication (SSO, PGP key, or password hash). Every subsequent object (<code>inet6num<\/code>, <code>route6<\/code>, <code>domain<\/code>) will reference this maintainer.<\/li>\n\n\n\n<li><strong><code>organisation<\/code> object:<\/strong> Represents the legal entity holding the IP resource.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2.Step 2: Engage a Sponsoring LIR &amp; Execute the Agreement\uff1a<\/strong>Formally delegate the application to an active registry\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Select an established Sponsoring LIR. You will be required to execute the standardized RIPE End User Assignment Agreement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This contract legally binds your organization to RIPE policies and confirms that if the sponsorship agreement terminates without transfer to a new sponsor, the resources revert to RIPE NCC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3.Step 3: Formal Application &amp; Subnet Plan Submission\uff1a<\/strong>Submit technical justification via the LIR portal\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your Sponsoring LIR submits the resource request through the RIPE LIR Portal. Key parameters submitted include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Target Prefix Length: <code>\/48<\/code><\/li>\n\n\n\n<li>Holder Org ID &amp; Maintainer handles (<code>mnt-by<\/code>, <code>mnt-routes<\/code>, <code>mnt-domains<\/code>)<\/li>\n\n\n\n<li>Upstream multi-homing details: Target Origin ASN and names of at least two transit providers or IXP peers.<\/li>\n\n\n\n<li>Deployment schedule: High-level subnet assignment plan (e.g., 10 to 50 <code>\/64<\/code> subnets deployed across multiple locations).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4.Step 4: Ticket Review &amp; Prefix Generation\uff1a<\/strong>RIPE Hostmasters validate and assign the prefix\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RIPE Hostmasters evaluate the request against current policy guidelines (typically within 1 to 3 business days). Upon approval:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RIPE assigns an unallocated block from their reserved pool (e.g., <code>2a0f:...::\/48<\/code> or <code>2a10:...::\/48<\/code>).<\/li>\n\n\n\n<li>The corresponding <code>inet6num<\/code> object is created in the global RIPE Whois database with your maintainer and organization handles attached.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5.Step 5: RPKI Validation, Routing Objects, and DNS Delegation\uff1a<\/strong>Secure routing integrity before advertising\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Log in to the RIPE LIR or Access dashboard to establish:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RPKI ROA (Route Origin Authorization):<\/strong> Cryptographically bind the assigned <code>\/48<\/code> to your originating ASN with MaxLength <code>\/48<\/code>.<\/li>\n\n\n\n<li><strong><code>route6<\/code> Object:<\/strong> Create the routing registry object in the RIPE IRR (Internet Routing Registry) to ensure automated upstream prefix-filters permit your announcements.<\/li>\n\n\n\n<li><strong>Reverse DNS Delegation:<\/strong> Point the corresponding <code>ip6.arpa<\/code> domain object to your authoritative nameservers.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Post-Allocation Technical Configurations<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once the prefix is visible in the Whois database, perform the following operational tasks to make the block usable across the internet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating the IRR <code>route6<\/code> Object<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Transit providers generate prefix filters using tools like <code>bgpq4<\/code> by querying IRR databases (RIPE, RADB, NTT). Without an accurate <code>route6<\/code> object, your BGP sessions will be rejected or filtered out.<\/p>\n\n\n\n<div class=\"code-block-card\">\n  <div class=\"code-header\">\n    <span class=\"code-lang\">Plaintext<\/span>\n    <div class=\"code-actions\">\n      <!-- \u4e0b\u8f7d\u6309\u94ae -->\n      <button type=\"button\" class=\"btn-icon\" title=\"\u4e0b\u8f7d\u6587\u672c\" onclick=\"downloadPlainText()\">\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n          <polyline points=\"8 12 12 16 16 12\"><\/polyline>\n          <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"><\/line>\n        <\/svg>\n      <\/button>\n      <!-- \u590d\u5236\u6309\u94ae -->\n      <button type=\"button\" class=\"btn-icon\" id=\"copy-btn\" title=\"\u590d\u5236\u4ee3\u7801\" onclick=\"copyPlainText()\">\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"><\/rect>\n          <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"><\/path>\n        <\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n  <pre><code id=\"snippet-text\">route6:         2a0f:xxxx:xxxx::\/48\ndescr:          Production Anycast &amp; Core Routing\norigin:         AS65530\nmnt-by:         YOUR-MNT\nsource:         RIPE<\/code><\/pre>\n<\/div>\n\n<style>\n  .code-block-card {\n    background-color: #121212;\n    border-radius: 26px;\n    padding: 22px 28px 24px 28px;\n    margin: 20px 0;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n    box-sizing: border-box;\n  }\n  .code-block-card .code-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 18px;\n  }\n  .code-block-card .code-lang {\n    font-size: 14px;\n    font-weight: 700;\n    color: #ffffff;\n    letter-spacing: 0.2px;\n  }\n  .code-block-card .code-actions {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n  }\n  .code-block-card .btn-icon {\n    background: transparent;\n    border: none;\n    cursor: pointer;\n    color: #cbd5e1;\n    padding: 2px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 4px;\n    transition: color 0.15s ease, opacity 0.15s ease;\n  }\n  .code-block-card .btn-icon:hover {\n    color: #ffffff;\n    opacity: 0.8;\n  }\n  .code-block-card pre {\n    margin: 0;\n    padding: 0;\n    font-size: 14.5px;\n    line-height: 1.6;\n    overflow-x: auto;\n    white-space: pre;\n    color: #ffffff;\n    background: transparent;\n    border: none;\n  }\n  .code-block-card code {\n    font-family: inherit;\n    color: inherit;\n    background: transparent;\n    padding: 0;\n  }\n<\/style>\n\n<script>\n  function copyPlainText() {\n    const text = document.getElementById('snippet-text').innerText;\n    const btn = document.getElementById('copy-btn');\n    navigator.clipboard.writeText(text).then(() => {\n      const orig = btn.innerHTML;\n      btn.innerHTML = '<span style=\"color:#4ade80;font-size:12px;font-family:sans-serif;\">Copied!<\/span>';\n      setTimeout(() => { btn.innerHTML = orig; }, 1800);\n    });\n  }\n\n  function downloadPlainText() {\n    const text = document.getElementById('snippet-text').innerText;\n    const blob = new Blob([text], { type: 'text\/plain;charset=utf-8' });\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = 'route6.txt';\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a);\n    URL.revokeObjectURL(url);\n  }\n<\/script>\n\n\n\n<h3 class=\"wp-block-heading\">Implementing RPKI ROA<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">RPKI (Resource Public Key Infrastructure) prevents BGP route hijacks and misconfigurations.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In the <strong>RIPE NCC Access Dashboard<\/strong> -&gt; <strong>RPKI Dashboard<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Set <strong>Origin ASN<\/strong>: Your operational ASN (e.g., <code>AS65530<\/code>).<\/li>\n\n\n\n<li>Set <strong>Prefix<\/strong>: <code>2a0f:xxxx:xxxx::\/48<\/code>.<\/li>\n\n\n\n<li>Set <strong>Max Length<\/strong>: <code>48<\/code> <em>(Crucial: Avoid setting Max Length to <code>\/64<\/code> unless specifically required, as lax max-length configurations open attack surfaces for sub-prefix hijacks)<\/em>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Establishing Upstream BGP Peering<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Announce your aggregate prefix to your BGP upstream neighbors using dynamic routing engines (e.g., BIRD2, FRRouting, Junos, or Cisco IOS-XR).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Example: BIRD 2 Configuration Snippet<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Example: BIRD 2 Configuration Snippet<\/p>\n\n\n\n<div class=\"code-block-card\">\n  <div class=\"code-header\">\n    <span class=\"code-lang\">C<\/span>\n    <div class=\"code-actions\">\n      <!-- \u4e0b\u8f7d\u6309\u94ae -->\n      <button type=\"button\" class=\"btn-icon\" title=\"\u4e0b\u8f7d\u914d\u7f6e\" onclick=\"downloadBirdConfig()\">\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n          <polyline points=\"8 12 12 16 16 12\"><\/polyline>\n          <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"><\/line>\n        <\/svg>\n      <\/button>\n      <!-- \u590d\u5236\u6309\u94ae -->\n      <button type=\"button\" class=\"btn-icon\" id=\"copy-bird-btn\" title=\"\u590d\u5236\u4ee3\u7801\" onclick=\"copyBirdConfig()\">\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"><\/rect>\n          <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"><\/path>\n        <\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n  <pre><code id=\"bird-code\">protocol <span class=\"tok-blue\">static<\/span> {\n    ipv6;\n    <span class=\"tok-comment\"># Route the entire <span class=\"tok-pink\">\/48<\/span> to blackhole locally to prevent loops<\/span>\n    route <span class=\"tok-pink\">2a0f:xxxx:xxxx::\/48<\/span> blackhole;\n}\n\nfilter export_to_transit {\n    <span class=\"tok-comment\"># Announce only the exact <span class=\"tok-pink\">\/48<\/span> allocation<\/span>\n    <span class=\"tok-yellow\">if<\/span> (net = <span class=\"tok-pink\">2a0f:xxxx:xxxx::\/48<\/span>) then {\n        accept;\n    }\n    reject;\n}\n\nprotocol bgp upstream_transit_a {\n    local as <span class=\"tok-pink\">65530<\/span>;\n    neighbor <span class=\"tok-pink\">2001:db8:100::1<\/span> as <span class=\"tok-pink\">64496<\/span>;\n    ipv6 {\n        <span class=\"tok-blue\">import<\/span> all;\n        <span class=\"tok-blue\">export<\/span> filter export_to_transit;\n    };\n}<\/code><\/pre>\n<\/div>\n\n<style>\n  .code-block-card {\n    background-color: #121212;\n    border-radius: 26px;\n    padding: 24px 28px 26px 28px;\n    margin: 20px 0;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n    box-sizing: border-box;\n  }\n  .code-block-card .code-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 20px;\n  }\n  .code-block-card .code-lang {\n    font-size: 15px;\n    font-weight: 700;\n    color: #ffffff;\n    letter-spacing: 0.2px;\n  }\n  .code-block-card .code-actions {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n  }\n  .code-block-card .btn-icon {\n    background: transparent;\n    border: none;\n    cursor: pointer;\n    color: #cbd5e1;\n    padding: 2px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 4px;\n    transition: color 0.15s ease, opacity 0.15s ease;\n  }\n  .code-block-card .btn-icon:hover {\n    color: #ffffff;\n    opacity: 0.85;\n  }\n  .code-block-card pre {\n    margin: 0;\n    padding: 0;\n    font-size: 14.5px;\n    line-height: 1.65;\n    overflow-x: auto;\n    white-space: pre;\n    color: #f8fafc;\n    background: transparent;\n    border: none;\n  }\n  .code-block-card code {\n    font-family: inherit;\n    color: inherit;\n    background: transparent;\n    padding: 0;\n  }\n\n  \/* \u622a\u56fe\u540c\u6b3e\u8bed\u6cd5\u9ad8\u4eae\u914d\u8272 *\/\n  .tok-blue { color: #818cf8; }      \/* \u6d45\u7d2b\/\u6df1\u84dd static, import, export *\/\n  .tok-yellow { color: #facc15; }    \/* \u9ec4\u8272 if *\/\n  .tok-pink { color: #f472b6; }      \/* \u6d45\u7c89\/\u6d0b\u7ea2 IP\u6bb5\u3001\u7aef\u53e3\u4e0eASN\u6570\u5b57 *\/\n  .tok-comment { color: #94a3b8; }   \/* \u6ce8\u91ca\u989c\u8272 *\/\n<\/style>\n\n<script>\n  function copyBirdConfig() {\n    const text = document.getElementById('bird-code').innerText;\n    const btn = document.getElementById('copy-bird-btn');\n    navigator.clipboard.writeText(text).then(() => {\n      const orig = btn.innerHTML;\n      btn.innerHTML = '<span style=\"color:#4ade80;font-size:12px;font-family:sans-serif;\">Copied!<\/span>';\n      setTimeout(() => { btn.innerHTML = orig; }, 1800);\n    });\n  }\n\n  function downloadBirdConfig() {\n    const text = document.getElementById('bird-code').innerText;\n    const blob = new Blob([text], { type: 'text\/plain;charset=utf-8' });\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = 'bird.conf';\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a);\n    URL.revokeObjectURL(url);\n  }\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">Addressing &amp; Subnetting Architecture for a <code>\/48<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An IPv6 <code>\/48<\/code> prefix provides a <strong>16-bit subnet field<\/strong>, granting exactly <strong>65,536 distinct <code>\/64<\/code> subnets<\/strong>. Because standard IPv6 end-user segments, VLANs, and VPN pools should always use a <code>\/64<\/code> to maintain compatibility with RFC specs, neighbor discovery, and hardware offloading, a <code>\/48<\/code> provides enormous headroom for structured hierarchical design:<\/p>\n\n\n\n<div class=\"code-block-card\">\n  <div class=\"code-header\">\n    <span class=\"code-lang\">Plaintext<\/span>\n    <div class=\"code-actions\">\n      <!-- \u4e0b\u8f7d\u6309\u94ae -->\n      <button type=\"button\" class=\"btn-icon\" title=\"\u4e0b\u8f7d\u6587\u672c\" onclick=\"downloadSubnetLayout()\">\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n          <polyline points=\"8 12 12 16 16 12\"><\/polyline>\n          <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"><\/line>\n        <\/svg>\n      <\/button>\n      <!-- \u590d\u5236\u6309\u94ae -->\n      <button type=\"button\" class=\"btn-icon\" id=\"copy-subnet-btn\" title=\"\u590d\u5236\u4ee3\u7801\" onclick=\"copySubnetLayout()\">\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"><\/rect>\n          <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"><\/path>\n        <\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n  <pre><code id=\"subnet-layout-code\">  Global Prefix (48 bits)         Subnet ID (16 bits)     Interface ID (64 bits)\n[ 2a0f : xxxx : xxxx ] : [     Site \/ VLAN \/ Pod     ] : [ Host \/ EUI-64 \/ SLAAC ]<\/code><\/pre>\n<\/div>\n\n<style>\n  .code-block-card {\n    background-color: #121212;\n    border-radius: 26px;\n    padding: 22px 28px 24px 28px;\n    margin: 20px 0;\n    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n    box-sizing: border-box;\n  }\n  .code-block-card .code-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 18px;\n  }\n  .code-block-card .code-lang {\n    font-size: 14.5px;\n    font-weight: 700;\n    color: #ffffff;\n    letter-spacing: 0.2px;\n  }\n  .code-block-card .code-actions {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n  }\n  .code-block-card .btn-icon {\n    background: transparent;\n    border: none;\n    cursor: pointer;\n    color: #cbd5e1;\n    padding: 2px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 4px;\n    transition: color 0.15s ease, opacity 0.15s ease;\n  }\n  .code-block-card .btn-icon:hover {\n    color: #ffffff;\n    opacity: 0.8;\n  }\n  .code-block-card pre {\n    margin: 0;\n    padding: 0;\n    font-size: 14.5px;\n    line-height: 1.6;\n    overflow-x: auto;\n    white-space: pre;\n    color: #ffffff;\n    background: transparent;\n    border: none;\n  }\n  .code-block-card code {\n    font-family: inherit;\n    color: inherit;\n    background: transparent;\n    padding: 0;\n  }\n<\/style>\n\n<script>\n  function copySubnetLayout() {\n    const text = document.getElementById('subnet-layout-code').innerText;\n    const btn = document.getElementById('copy-subnet-btn');\n    navigator.clipboard.writeText(text).then(() => {\n      const orig = btn.innerHTML;\n      btn.innerHTML = '<span style=\"color:#4ade80;font-size:12px;font-family:sans-serif;\">Copied!<\/span>';\n      setTimeout(() => { btn.innerHTML = orig; }, 1800);\n    });\n  }\n\n  function downloadSubnetLayout() {\n    const text = document.getElementById('subnet-layout-code').innerText;\n    const blob = new Blob([text], { type: 'text\/plain;charset=utf-8' });\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = 'ipv6-subnet-layout.txt';\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a);\n    URL.revokeObjectURL(url);\n  }\n<\/script>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>0000<\/code>\u2013<code>00FF<\/code> (First 256 subnets):<\/strong> Core infrastructure, point-to-point router links, and loopbacks.<\/li>\n\n\n\n<li><strong><code>0100<\/code>\u2013<code>0FFF<\/code>:<\/strong> Internal corporate LANs, administrative segments, server VLANs.<\/li>\n\n\n\n<li><strong><code>1000<\/code>\u2013<code>7FFF<\/code>:<\/strong> Public-facing production clusters, ingress controllers, anycast services.<\/li>\n\n\n\n<li><strong><code>8000<\/code>\u2013<code>FFFF<\/code>:<\/strong> Remote site tunnels, branch locations, and dynamic wireguard\/IPsec overlays.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Common Pitfalls &amp; Compliance Reminders<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Failure to Maintain Sponsor Relations:<\/strong> If your Sponsoring LIR ceases operations or you fail to pay the annual maintenance fee, RIPE NCC initiates an un-sponsorship grace period. You must transfer the assignment to a new sponsor within the specified timeframe (typically 30\u201360 days), or the assignment will be revoked and returned to the free pool.<\/li>\n\n\n\n<li><strong>Advertising Lengths Longer Than <code>\/48<\/code>:<\/strong> Attempting to de-aggregate your <code>\/48<\/code> into two <code>\/49<\/code>s or four <code>\/50<\/code>s for traffic engineering across the global Internet will fail; almost all Tier-1 and Tier-2 transit carriers actively filter IPv6 announcements smaller than <code>\/48<\/code>.<\/li>\n\n\n\n<li><strong>Overlooking Reverse DNS Delegations:<\/strong> Omitting the PTR record setup in <code>ip6.arpa<\/code> can cause outbound mail delivery failures, authentication rejections, and connectivity timeouts from enterprise security tools enforcing forward-confirmed reverse DNS (FCrDNS).<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>In contemporary network architecture, relying on upstream Internet Service Providers (ISPs) for dynamically assigned or non-portable IPv6 space creates vendor lock-in, complicates disaster recovery, and hinders carrier-neutral multi-homing. An IPv6 \/48 is widely recognized across global transit networks and Internet Exchange Points (IXPs) as the minimum allocation boundary for public BGP routing. While IPv6 addressing [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1153,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"How to Get an IPv6 \/48 Allocation from RIPE NCC: Complete Guide","_seopress_titles_desc":"Learn how to obtain an independent IPv6 \/48 prefix from RIPE NCC. Compare Direct vs. Sponsoring LIR, meet prerequisites, and configure BGP, RPKI, and reverse DNS.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-1149","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-article"],"_links":{"self":[{"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/posts\/1149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/comments?post=1149"}],"version-history":[{"count":3,"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/posts\/1149\/revisions"}],"predecessor-version":[{"id":1155,"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/posts\/1149\/revisions\/1155"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/media\/1153"}],"wp:attachment":[{"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/media?parent=1149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/categories?post=1149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/junglelabs.uk\/fr\/wp-json\/wp\/v2\/tags?post=1149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}