Files
infix/dev/ip/index.html

3425 lines
74 KiB
HTML

<!DOCTYPE html><html lang="en" class="no-js"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Infix Documentation">
<link rel="canonical" href="https://kernelkit.github.io/infix/dev/ip/">
<link rel="prev" href="../vlan/">
<link rel="next" href="../routing/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
<title>IP Addressing - User's Guide</title>
<link rel="stylesheet" href="../assets/stylesheets/main.ec1eaa64.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="stylesheet" href="../extra.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<link href="../assets/stylesheets/glightbox.min.css" rel="stylesheet"><script src="../assets/javascripts/glightbox.min.js"></script><style id="glightbox-style">
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: black; }
.glightbox-clean .gslide-media { -webkit-box-shadow: none; box-shadow: none; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color); }
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color); }
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color); }
</style></head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="orange">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#ip-address-configuration" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<div data-md-color-scheme="default" data-md-component="outdated" hidden="">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="https://www.kernelkit.org/" title="User's Guide" class="md-header__button md-logo" aria-label="User's Guide" data-md-component="logo">
<img src="../logo-plain.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
User's Guide
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
IP Addressing
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="orange" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden="">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"></path></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="orange" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden="">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required="">
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard="" data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"></path></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/kernelkit/infix/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
</div>
<div class="md-source__repository">
kernelkit/infix
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="https://www.kernelkit.org/" title="User's Guide" class="md-nav__button md-logo" aria-label="User's Guide" data-md-component="logo">
<img src="../logo-plain.png" alt="logo">
</a>
User's Guide
</label>
<div class="md-nav__source">
<a href="https://github.com/kernelkit/infix/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
</div>
<div class="md-source__repository">
kernelkit/infix
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2">
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
CLI
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
CLI
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../cli/introduction/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/configure/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/keybindings/" class="md-nav__link">
<span class="md-ellipsis">
Keybindings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/netcalc/" class="md-nav__link">
<span class="md-ellipsis">
Network Calculator
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/tcpdump/" class="md-nav__link">
<span class="md-ellipsis">
Network Monitoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/quick/" class="md-nav__link">
<span class="md-ellipsis">
Quickstart Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/text-editor/" class="md-nav__link">
<span class="md-ellipsis">
Text Editor
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/upgrade/" class="md-nav__link">
<span class="md-ellipsis">
Upgrading
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../container/" class="md-nav__link">
<span class="md-ellipsis">
Docker Containers
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked="">
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Networking
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Networking
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../networking/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../iface/" class="md-nav__link">
<span class="md-ellipsis">
Common Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../bridging/" class="md-nav__link">
<span class="md-ellipsis">
Bridging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lag/" class="md-nav__link">
<span class="md-ellipsis">
Link Aggregation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ethernet/" class="md-nav__link">
<span class="md-ellipsis">
Ethernet Interfaces
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../vlan/" class="md-nav__link">
<span class="md-ellipsis">
VLAN Interfaces
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
IP Addressing
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
IP Addressing
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a href="#ipv4-address-assignment" class="md-nav__link">
<span class="md-ellipsis">
IPv4 Address Assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ipv6-address-assignment" class="md-nav__link">
<span class="md-ellipsis">
IPv6 Address Assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
<nav class="md-nav" aria-label="Examples">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#static-and-link-local-ipv4-addresses" class="md-nav__link">
<span class="md-ellipsis">
Static and link-local IPv4 addresses
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#use-of-dhcp-for-ipv4-address-assignment" class="md-nav__link">
<span class="md-ellipsis">
Use of DHCP for IPv4 address assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#use-of-dhcpv6-for-ipv6-address-assignment" class="md-nav__link">
<span class="md-ellipsis">
Use of DHCPv6 for IPv6 address assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#disabling-ipv6-link-local-addresses" class="md-nav__link">
<span class="md-ellipsis">
Disabling IPv6 link-local address(es)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-ipv6-address" class="md-nav__link">
<span class="md-ellipsis">
Static IPv6 address
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#stateless-auto-configuration-of-global-ipv6-address" class="md-nav__link">
<span class="md-ellipsis">
Stateless Auto-configuration of Global IPv6 Address
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#random-link-identifiers-for-ipv6-stateless-autoconfiguration" class="md-nav__link">
<span class="md-ellipsis">
Random Link Identifiers for IPv6 Stateless Autoconfiguration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ipv4-forwarding" class="md-nav__link">
<span class="md-ellipsis">
IPv4 forwarding
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ipv6-forwarding" class="md-nav__link">
<span class="md-ellipsis">
IPv6 forwarding
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#arp-and-neighbor-cache" class="md-nav__link">
<span class="md-ellipsis">
ARP and Neighbor Cache
</span>
</a>
<nav class="md-nav" aria-label="ARP and Neighbor Cache">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#static-ipv4-arp-entry" class="md-nav__link">
<span class="md-ellipsis">
Static IPv4 ARP Entry
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-ipv6-neighbor-entry" class="md-nav__link">
<span class="md-ellipsis">
Static IPv6 Neighbor Entry
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../routing/" class="md-nav__link">
<span class="md-ellipsis">
Routing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../firewall/" class="md-nav__link">
<span class="md-ellipsis">
Firewall Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../qos/" class="md-nav__link">
<span class="md-ellipsis">
Quality of Service
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../eth-counters/" class="md-nav__link">
<span class="md-ellipsis">
RMON Counters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../tunnels/" class="md-nav__link">
<span class="md-ellipsis">
Tunneling (L2/L3)
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_13">
<label class="md-nav__link" for="__nav_4_13" id="__nav_4_13_label" tabindex="0">
<span class="md-ellipsis">
VPN Tunnels
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_13">
<span class="md-nav__icon md-icon"></span>
VPN Tunnels
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../vpn/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../vpn-wireguard/" class="md-nav__link">
<span class="md-ellipsis">
WireGuard
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../wifi/" class="md-nav__link">
<span class="md-ellipsis">
Wireless LAN (WiFi)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5">
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Services
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Services
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../discovery/" class="md-nav__link">
<span class="md-ellipsis">
Device Discovery
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dhcp/" class="md-nav__link">
<span class="md-ellipsis">
DHCP Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ntp/" class="md-nav__link">
<span class="md-ellipsis">
NTP Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ptp/" class="md-nav__link">
<span class="md-ellipsis">
PTP (IEEE 1588/802.1AS)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6">
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
System
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
System
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../boot/" class="md-nav__link">
<span class="md-ellipsis">
Boot Procedure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../system/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nacm/" class="md-nav__link">
<span class="md-ellipsis">
Access Control (NACM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware/" class="md-nav__link">
<span class="md-ellipsis">
Hardware Info &amp; Status
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../management/" class="md-nav__link">
<span class="md-ellipsis">
Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../keystore/" class="md-nav__link">
<span class="md-ellipsis">
Keystore
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../syslog/" class="md-nav__link">
<span class="md-ellipsis">
Syslog Support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../support/" class="md-nav__link">
<span class="md-ellipsis">
Support Data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../upgrade/" class="md-nav__link">
<span class="md-ellipsis">
Upgrade
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7">
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Scripting
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Scripting
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../scripting/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-sysrepocfg/" class="md-nav__link">
<span class="md-ellipsis">
Legacy Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-netconf/" class="md-nav__link">
<span class="md-ellipsis">
NETCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-restconf/" class="md-nav__link">
<span class="md-ellipsis">
RESTCONF Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scripting-prod/" class="md-nav__link">
<span class="md-ellipsis">
Production Testing
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8">
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Developer's Corner
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Developer's Corner
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../branding/" class="md-nav__link">
<span class="md-ellipsis">
Branding &amp; Releases
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../developers-guide/" class="md-nav__link">
<span class="md-ellipsis">
Developer's Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../override-package/" class="md-nav__link">
<span class="md-ellipsis">
Developing with Buildroot
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../netboot/" class="md-nav__link">
<span class="md-ellipsis">
Netboot HowTo
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../testing/" class="md-nav__link">
<span class="md-ellipsis">
Regression Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../test-arch/" class="md-nav__link">
<span class="md-ellipsis">
Test System Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../virtual/" class="md-nav__link">
<span class="md-ellipsis">
Virtual Environments
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../vpd/" class="md-nav__link">
<span class="md-ellipsis">
Vital Product Data (VPD)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../license/" class="md-nav__link">
<span class="md-ellipsis">
Origin &amp; Licensing
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a href="#ipv4-address-assignment" class="md-nav__link">
<span class="md-ellipsis">
IPv4 Address Assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ipv6-address-assignment" class="md-nav__link">
<span class="md-ellipsis">
IPv6 Address Assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
<nav class="md-nav" aria-label="Examples">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#static-and-link-local-ipv4-addresses" class="md-nav__link">
<span class="md-ellipsis">
Static and link-local IPv4 addresses
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#use-of-dhcp-for-ipv4-address-assignment" class="md-nav__link">
<span class="md-ellipsis">
Use of DHCP for IPv4 address assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#use-of-dhcpv6-for-ipv6-address-assignment" class="md-nav__link">
<span class="md-ellipsis">
Use of DHCPv6 for IPv6 address assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#disabling-ipv6-link-local-addresses" class="md-nav__link">
<span class="md-ellipsis">
Disabling IPv6 link-local address(es)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-ipv6-address" class="md-nav__link">
<span class="md-ellipsis">
Static IPv6 address
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#stateless-auto-configuration-of-global-ipv6-address" class="md-nav__link">
<span class="md-ellipsis">
Stateless Auto-configuration of Global IPv6 Address
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#random-link-identifiers-for-ipv6-stateless-autoconfiguration" class="md-nav__link">
<span class="md-ellipsis">
Random Link Identifiers for IPv6 Stateless Autoconfiguration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ipv4-forwarding" class="md-nav__link">
<span class="md-ellipsis">
IPv4 forwarding
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ipv6-forwarding" class="md-nav__link">
<span class="md-ellipsis">
IPv6 forwarding
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#arp-and-neighbor-cache" class="md-nav__link">
<span class="md-ellipsis">
ARP and Neighbor Cache
</span>
</a>
<nav class="md-nav" aria-label="ARP and Neighbor Cache">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#static-ipv4-arp-entry" class="md-nav__link">
<span class="md-ellipsis">
Static IPv4 ARP Entry
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-ipv6-neighbor-entry" class="md-nav__link">
<span class="md-ellipsis">
Static IPv6 Neighbor Entry
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<nav class="md-path" aria-label="Navigation">
<ol class="md-path__list">
<li class="md-path__item">
<a href=".." class="md-path__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-path__item">
<a href="../networking/" class="md-path__link">
<span class="md-ellipsis">
Networking
</span>
</a>
</li>
</ol>
</nav>
<article class="md-content__inner md-typeset">
<h1 id="ip-address-configuration">IP Address Configuration<a class="headerlink" href="#ip-address-configuration" title="Permanent link"></a></h1>
<p>This section details IP Addresses And Other Per-Interface IP settings.</p>
<p>Infix support several network interface types, each can be assigned one
or more IP addresses, both IPv4 and IPv6 are supported. (There is no
concept of a "primary" address.)</p>
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-iface-examples.svg" data-desc-position="bottom"><img alt="IP on top of network interface examples" src="../img/ip-iface-examples.svg"></a></p>
<h2 id="ipv4-address-assignment">IPv4 Address Assignment<a class="headerlink" href="#ipv4-address-assignment" title="Permanent link"></a></h2>
<p>Multiple address assignment methods are available:</p>
<table>
<thead>
<tr>
<th style="text-align: left;"><strong>Type</strong></th>
<th style="text-align: left;"><strong>Yang Model</strong></th>
<th style="text-align: left;"><strong>Description</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">static</td>
<td style="text-align: left;">ietf-ip</td>
<td style="text-align: left;">Static assignment of IPv4 address, e.g., <em>10.0.1.1/24</em></td>
</tr>
<tr>
<td style="text-align: left;">link-local</td>
<td style="text-align: left;">infix-ip</td>
<td style="text-align: left;">Auto-assignment of IPv4 address in 169.254.x.x/16 range</td>
</tr>
<tr>
<td style="text-align: left;">dhcp</td>
<td style="text-align: left;">infix-dhcp-client</td>
<td style="text-align: left;">Assignment of IPv4 address by DHCP server, e.g., <em>10.0.1.1/24</em></td>
</tr>
</tbody>
</table>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The DHCP address method is only available for <em>LAN</em> interfaces
(Ethernet, virtual Ethernet (veth), bridge, link aggregates, etc.)</p>
</div>
<p>Supported DHCP (request) options, configurability (Cfg) and defaults,
are listed below. Configurable options can be disabled on a per client
interface basis, some options, like <code>clientid</code> and option 81, are
possible to set the value of as well.</p>
<table>
<thead>
<tr>
<th><strong>Opt</strong></th>
<th><strong>Name</strong></th>
<th><strong>Cfg</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td><code>netmask</code></td>
<td>No</td>
<td>Request IP address and netmask</td>
</tr>
<tr>
<td>3</td>
<td><code>router</code></td>
<td>Yes</td>
<td>Default route(s), see also option 121 and 249</td>
</tr>
<tr>
<td>6</td>
<td><code>dns-server</code></td>
<td>Yes</td>
<td>DNS server(s), static ones take precedence</td>
</tr>
<tr>
<td>12</td>
<td><code>hostname</code></td>
<td>Yes</td>
<td>DHCP cannot set hostname, only for informing server</td>
</tr>
<tr>
<td>15</td>
<td><code>domain</code></td>
<td>Yes</td>
<td>Default domain name, for name resolution</td>
</tr>
<tr>
<td>28</td>
<td><code>broadcast</code></td>
<td>Yes</td>
<td>Broadcast address, calculated if disabled</td>
</tr>
<tr>
<td>42</td>
<td><code>ntp-server</code></td>
<td>Yes</td>
<td>NTP server(s), static ones take precedence</td>
</tr>
<tr>
<td>50</td>
<td><code>address</code></td>
<td>Yes</td>
<td>Request (previously cached) address</td>
</tr>
<tr>
<td>61</td>
<td><code>client-id</code></td>
<td>Yes</td>
<td>Default MAC address (and option 12)</td>
</tr>
<tr>
<td>81</td>
<td><code>fqdn</code></td>
<td>Yes</td>
<td>Similar to option 12, request FQDN update in DNS</td>
</tr>
<tr>
<td>119</td>
<td><code>search</code></td>
<td>Yes</td>
<td>Request domain search list</td>
</tr>
<tr>
<td>121</td>
<td><code>classless-static-route</code></td>
<td>Yes</td>
<td>Classless static routes</td>
</tr>
<tr>
<td>249</td>
<td><code>ms-classless-static-route</code></td>
<td>Yes</td>
<td>Microsoft static route, same as option 121</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>Default:</strong> <code>router</code>, <code>dns-server</code>, <code>domain</code>, <code>broadcast</code>, <code>ntp-server</code>, <code>search</code>,
<code>address</code>, <code>classless-static-route</code>, <code>ms-classless-static-route</code></p>
<p>When configuring a DHCP client, ensure that the NTP client is enabled
for the <code>ntp-server</code> DHCP option to be processed correctly. If the NTP
client is not enabled, any NTP servers provided by the DHCP server will
be ignored. For details on how to enable the NTP client, see the <a href="../system/#ntp-client-configuration">NTP
Client Configuration</a> section.</p>
<div class="admonition tip">
<p class="admonition-title">Important</p>
<p>Per <a href="https://www.rfc-editor.org/rfc/rfc3442">RFC3442</a>, if the DHCP server returns both a Classless Static
Routes option (121) and Router option (3), the DHCP client <em>must</em>
ignore the latter.</p>
</div>
<h2 id="ipv6-address-assignment">IPv6 Address Assignment<a class="headerlink" href="#ipv6-address-assignment" title="Permanent link"></a></h2>
<p>Multiple address assignment methods are available:</p>
<table>
<thead>
<tr>
<th style="text-align: left;"><strong>Type</strong></th>
<th style="text-align: left;"><strong>Yang Model</strong></th>
<th style="text-align: left;"><strong>Description</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">static</td>
<td style="text-align: left;">ietf-ip</td>
<td style="text-align: left;">Static assignment of IPv6 address, e.g., <em>2001:db8:0:1::1/64</em></td>
</tr>
<tr>
<td style="text-align: left;">link-local</td>
<td style="text-align: left;">ietf-ip<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></td>
<td style="text-align: left;">(RFC4862) Auto-configured link-local IPv6 address (<em>fe80::0</em> prefix + interface identifier, e.g., <em>fe80::ccd2:82ff:fe52:728b/64</em>)</td>
</tr>
<tr>
<td style="text-align: left;">global auto-conf</td>
<td style="text-align: left;">ietf-ip</td>
<td style="text-align: left;">(RFC4862) Auto-configured (stateless) global IPv6 address (prefix from router + interface identifier, e.g., <em>2001:db8:0:1:ccd2:82ff:fe52:728b/64</em></td>
</tr>
<tr>
<td style="text-align: left;">dhcp</td>
<td style="text-align: left;">infix-dhcpv6-client</td>
<td style="text-align: left;">Assignment of IPv6 address by DHCPv6 server, e.g., <em>2001:db8::42/128</em></td>
</tr>
</tbody>
</table>
<p>Both for <em>link-local</em> and <em>global auto-configuration</em>, it is possible
to auto-configure using a random suffix instead of the interface
identifier.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The DHCPv6 address method is only available for <em>LAN</em> interfaces
(Ethernet, virtual Ethernet (veth), bridge, link aggregates, etc.)</p>
</div>
<p>Supported DHCPv6 (request) options, configurability (Cfg) and defaults,
are listed below. Configurable options can be disabled on a per client
interface basis, some options, like <code>client-id</code> and <code>client-fqdn</code>, are
possible to set the value of as well.</p>
<table>
<thead>
<tr>
<th><strong>Opt</strong></th>
<th><strong>Name</strong></th>
<th><strong>Cfg</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td><code>client-id</code></td>
<td>Yes</td>
<td>Client identifier (DUID), auto-generated by default</td>
</tr>
<tr>
<td>2</td>
<td><code>server-id</code></td>
<td>Yes</td>
<td>Server identifier (DUID)</td>
</tr>
<tr>
<td>23</td>
<td><code>dns-server</code></td>
<td>Yes</td>
<td>DNS recursive name servers, static ones take precedence</td>
</tr>
<tr>
<td>24</td>
<td><code>domain-search</code></td>
<td>Yes</td>
<td>Domain search list</td>
</tr>
<tr>
<td>25</td>
<td><code>ia-pd</code></td>
<td>Yes</td>
<td>Prefix delegation for downstream networks</td>
</tr>
<tr>
<td>31</td>
<td><code>sntp-server</code></td>
<td>Yes</td>
<td>Simple Network Time Protocol servers</td>
</tr>
<tr>
<td>32</td>
<td><code>information-refresh-time</code></td>
<td>Yes</td>
<td>Refresh time for stateless DHCPv6</td>
</tr>
<tr>
<td>39</td>
<td><code>client-fqdn</code></td>
<td>Yes</td>
<td>Client FQDN, request DNS update from server</td>
</tr>
<tr>
<td>56</td>
<td><code>ntp-server</code></td>
<td>Yes</td>
<td>NTP time servers, static ones take precedence</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>Default:</strong> <code>dns-server</code>, <code>domain-search</code>, <code>ntp-server</code></p>
<p>DHCPv6 supports both <strong>stateful</strong> (address assignment) and <strong>stateless</strong>
(information-only) modes:</p>
<ul>
<li><strong>Stateful DHCPv6</strong>: The server assigns IPv6 addresses to clients. This is
the default mode when enabling the DHCPv6 client.</li>
<li><strong>Stateless DHCPv6</strong>: Used with SLAAC (Stateless Address Autoconfiguration)
when only configuration information (DNS, NTP, etc.) is needed. Enable with
the <code>information-only</code> setting.</li>
</ul>
<p>When configuring a DHCPv6 client, ensure that the NTP client is enabled
for the <code>ntp-server</code> DHCPv6 option to be processed correctly. If the
NTP client is not enabled, any NTP servers provided by the DHCPv6 server
will be ignored. For details on how to enable the NTP client, see the
<a href="../system/#ntp-client-configuration">NTP Client Configuration</a> section.</p>
<h2 id="examples">Examples<a class="headerlink" href="#examples" title="Permanent link"></a></h2>
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-switch.svg" data-desc-position="bottom"><img alt="Switch example (eth0 and lo)" src="../img/ip-address-example-switch.svg"></a></p>
<pre class="cli"><code>admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
ipv6 fe80::ff:fe00:0/64 (link-layer)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<p>To illustrate IP address configuration, the examples below uses a
switch with a single Ethernet interface (eth0) and a loopback
interface (lo). As shown above, these examples assume <em>eth0</em> has an
IPv6 link-local address and <em>lo</em> has static IPv4 and IPv6 addresses by
default.</p>
<h3 id="static-and-link-local-ipv4-addresses">Static and link-local IPv4 addresses<a class="headerlink" href="#static-and-link-local-ipv4-addresses" title="Permanent link"></a></h3>
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv4-static.svg" data-desc-position="bottom"><img alt="Setting static IPv4 (and link-local IPv4)" src="../img/ip-address-example-ipv4-static.svg"></a></p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv4</b>
admin@example:/config/interface/eth0/ipv4/&gt; <b>set address 10.0.1.1 prefix-length 24</b>
admin@example:/config/interface/eth0/ipv4/&gt; <b>set autoconf</b>
admin@example:/config/interface/eth0/ipv4/&gt; <b>diff</b>
+interfaces {
+ interface eth0 {
+ ipv4 {
+ address 10.0.1.1 {
+ prefix-length 24;
+ }
+ autoconf;
+ }
+ }
+}
admin@example:/config/interface/eth0/ipv4/&gt; <b>leave</b>
admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
ipv4 169.254.1.3/16 (random)
ipv4 10.0.1.1/24 (static)
ipv6 fe80::ff:fe00:0/64 (link-layer)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<p>As shown, the link-local IPv4 address is configured with <code>set autoconf</code>.
The presence of the <code>autoconf</code> container enables IPv4 link-local address
assignment. The resulting address (169.254.1.3/16) is of type <em>random</em>
(<a href="https://www.rfc-editor.org/rfc/rfc8344">ietf-ip.yang</a>).</p>
<p>The IPv4LL client also supports a <code>request-address</code> setting which can be
used to "seed" the client's starting address. If the address is free it
will be used, otherwise it falls back to the default algorithm.</p>
<pre class="cli"><code>admin@example:/config/interface/eth0/ipv4/&gt; <b>edit autoconf</b>
admin@example:/config/interface/eth0/ipv4/autoconf/&gt; <b>set request-address 169.254.1.2</b>
admin@example:/config/interface/eth0/ipv4/autoconf/&gt; <b>leave</b>
</code></pre>
<h3 id="use-of-dhcp-for-ipv4-address-assignment">Use of DHCP for IPv4 address assignment<a class="headerlink" href="#use-of-dhcp-for-ipv4-address-assignment" title="Permanent link"></a></h3>
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv4-dhcp.svg" data-desc-position="bottom"><img alt="Using DHCP for IPv4 address assignment" src="../img/ip-address-example-ipv4-dhcp.svg"></a></p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv4</b>
admin@example:/config/interface/eth0/ipv4/&gt; <b>set dhcp</b>
admin@example:/config/interface/eth0/ipv4/&gt; <b>leave</b>
admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
ipv4 10.1.2.100/24 (dhcp)
ipv6 fe80::ff:fe00:0/64 (link-layer)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<p>The resulting address (10.1.2.100/24) is of type <em>dhcp</em>.</p>
<p>To configure DHCP client options, such as sending a specific hostname to the
server, you can specify options with values:</p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv4 dhcp</b>
admin@example:/config/interface/eth0/ipv4/dhcp/&gt; <b>set option hostname value myhost</b>
admin@example:/config/interface/eth0/ipv4/dhcp/&gt; <b>show</b>
option hostname {
value myhost;
}
admin@example:/config/interface/eth0/ipv4/dhcp/&gt; <b>leave</b>
admin@example:/&gt;
</code></pre>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>The special value <code>auto</code> can be used with the hostname option to
automatically use the configured system hostname.</p>
</div>
<p>Other useful DHCP options include:</p>
<ul>
<li><code>client-id</code> - Send a specific client identifier to the server</li>
<li><code>route-preference</code> - Set the administrative distance for DHCP-learned routes (default: 5)</li>
</ul>
<p>For advanced usage with vendor-specific options, see the YANG model.</p>
<h3 id="use-of-dhcpv6-for-ipv6-address-assignment">Use of DHCPv6 for IPv6 address assignment<a class="headerlink" href="#use-of-dhcpv6-for-ipv6-address-assignment" title="Permanent link"></a></h3>
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv6-dhcp.svg" data-desc-position="bottom"><img alt="Using DHCPv6 for IPv6 address assignment" src="../img/ip-address-example-ipv6-dhcp.svg"></a></p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv6</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>set dhcp</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>leave</b>
admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
ipv6 2001:db8::42/128 (dhcp)
ipv6 fe80::ff:fe00:0/64 (link-layer)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<p>The resulting address (2001:db8::42/128) is of type <em>dhcp</em>.</p>
<p>To configure DHCPv6 client options, such as requesting prefix delegation
for downstream networks, you can specify options:</p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv6 dhcp</b>
admin@example:/config/interface/eth0/ipv6/dhcp/&gt; <b>set option ia-pd</b>
admin@example:/config/interface/eth0/ipv6/dhcp/&gt; <b>set option dns-server</b>
admin@example:/config/interface/eth0/ipv6/dhcp/&gt; <b>show</b>
option dns-server;
option ia-pd;
admin@example:/config/interface/eth0/ipv6/dhcp/&gt; <b>leave</b>
admin@example:/&gt;
</code></pre>
<p>For stateless DHCPv6 (used with SLAAC to get only configuration information):</p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv6 dhcp</b>
admin@example:/config/interface/eth0/ipv6/dhcp/&gt; <b>set information-only true</b>
admin@example:/config/interface/eth0/ipv6/dhcp/&gt; <b>show</b>
information-only true;
option dns-server;
option domain-search;
admin@example:/config/interface/eth0/ipv6/dhcp/&gt; <b>leave</b>
admin@example:/&gt;
</code></pre>
<p>Other useful DHCPv6 options include:</p>
<ul>
<li><code>duid</code> - Set a specific DHCPv6 Unique Identifier (auto-generated by default)</li>
<li><code>client-fqdn</code> - Request the server to update DNS records with client's FQDN</li>
<li><code>route-preference</code> - Set the administrative distance for DHCPv6-learned routes (default: 5)</li>
</ul>
<p>For advanced usage with vendor-specific options, see the YANG model.</p>
<h3 id="disabling-ipv6-link-local-addresses">Disabling IPv6 link-local address(es)<a class="headerlink" href="#disabling-ipv6-link-local-addresses" title="Permanent link"></a></h3>
<p>The (only) way to disable IPv6 link-local addresses is by disabling IPv6
on the interface.</p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv6</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>set enabled false</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>leave</b>
admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<h3 id="static-ipv6-address">Static IPv6 address<a class="headerlink" href="#static-ipv6-address" title="Permanent link"></a></h3>
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv6-static.svg" data-desc-position="bottom"><img alt="Setting static IPv6" src="../img/ip-address-example-ipv6-static.svg"></a></p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv6</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>set address 2001:db8::1 prefix-length 64</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>leave</b>
admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
ipv6 2001:db8::1/64 (static)
ipv6 fe80::ff:fe00:0/64 (link-layer)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<h3 id="stateless-auto-configuration-of-global-ipv6-address">Stateless Auto-configuration of Global IPv6 Address<a class="headerlink" href="#stateless-auto-configuration-of-global-ipv6-address" title="Permanent link"></a></h3>
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv6-auto-global.svg" data-desc-position="bottom"><img alt="Auto-configuration of global IPv6" src="../img/ip-address-example-ipv6-auto-global.svg"></a></p>
<p>Stateless address auto-configuration of global addresses is enabled by
default. The address is formed by concatenating the network prefix
advertised by the router (here 2001:db8:0:1::0/64) and the interface
identifier. The resulting address is of type <em>link-layer</em>, as it is
formed based on the interface identifier (<a href="https://www.rfc-editor.org/rfc/rfc8344">ietf-ip.yang</a>).</p>
<pre class="cli"><code>admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
ipv6 2001:db8:0:1:0:ff:fe00:0/64 (link-layer)
ipv6 fe80::ff:fe00:0/64 (link-layer)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<p>Disabling auto-configuration of global IPv6 addresses can be done as shown
below.</p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv6</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>set autoconf create-global-addresses false</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>leave</b>
admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
ipv6 fe80::ff:fe00:0/64 (link-layer)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<h3 id="random-link-identifiers-for-ipv6-stateless-autoconfiguration">Random Link Identifiers for IPv6 Stateless Autoconfiguration<a class="headerlink" href="#random-link-identifiers-for-ipv6-stateless-autoconfiguration" title="Permanent link"></a></h3>
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../img/ip-address-example-ipv6-auto-global.svg" data-desc-position="bottom"><img alt="Auto-configuration of global IPv6" src="../img/ip-address-example-ipv6-auto-global.svg"></a></p>
<p>By default, the auto-configured link-local and global IPv6 addresses
are formed from a link-identifier based on the MAC address.</p>
<pre class="cli"><code>admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
ipv6 2001:db8:0:1:0:ff:fe00:0/64 (link-layer)
ipv6 fe80::ff:fe00:0/64 (link-layer)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<p>To avoid revealing identity information in the IPv6 address, it is
possible to specify use of a random identifier (<a href="https://www.rfc-editor.org/rfc/rfc8344">ietf-ip.yang</a> and
<a href="https://www.rfc-editor.org/rfc/rfc8981">RFC8981</a>).</p>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv6</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>set autoconf create-temporary-addresses true</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>leave</b>
admin@example:/&gt; <b>show interface</b>
<span class="header">INTERFACE PROTOCOL STATE DATA </span>
eth0 ethernet UP 02:00:00:00:00:00
ipv6 2001:db8:0:1:b705:8374:638e:74a8/64 (random)
ipv6 fe80::ad3d:b274:885a:9ffb/64 (random)
lo ethernet UP 00:00:00:00:00:00
ipv4 127.0.0.1/8 (static)
ipv6 ::1/128 (static)
admin@example:/&gt;
</code></pre>
<p>Both the link-local address (fe80::) and the global address (2001:)
have changed type to <em>random</em>.</p>
<h2 id="ipv4-forwarding">IPv4 forwarding<a class="headerlink" href="#ipv4-forwarding" title="Permanent link"></a></h2>
<p>To be able to route (static or dynamic) on the interface it is
required to enable forwarding. This setting controls if packets
received on this interface can be forwarded.</p>
<pre class="cli"><code>admin@example:/config/&gt; <b>edit interface eth0</b>
admin@example:/config/interface/eth0/&gt; <b>set ipv4 forwarding</b>
admin@example:/config/interface/eth0/&gt; <b>leave</b>
admin@example:/&gt;
</code></pre>
<h2 id="ipv6-forwarding">IPv6 forwarding<a class="headerlink" href="#ipv6-forwarding" title="Permanent link"></a></h2>
<p>Forwarding must be enabled on an interface for it to route IPv6
traffic (static or dynamic). The setting is per-interface and works
the same way as IPv4 forwarding.</p>
<p>The following table shows the IPv6 features that the <code>forwarding</code>
setting controls when it is <em>Enabled</em> or <em>Disabled</em>:</p>
<table>
<thead>
<tr>
<th style="text-align: left;"><strong>IPv6 Feature</strong></th>
<th style="text-align: left;"><strong>Enabled</strong></th>
<th style="text-align: left;"><strong>Disabled</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">IsRouter set in Neighbour Advertisements</td>
<td style="text-align: left;">Yes</td>
<td style="text-align: left;">No</td>
</tr>
<tr>
<td style="text-align: left;">Transmit Router Solicitations</td>
<td style="text-align: left;">No</td>
<td style="text-align: left;">Yes</td>
</tr>
<tr>
<td style="text-align: left;">Router Advertisements are ignored</td>
<td style="text-align: left;">Yes</td>
<td style="text-align: left;">Yes</td>
</tr>
<tr>
<td style="text-align: left;">Accept Redirects</td>
<td style="text-align: left;">No</td>
<td style="text-align: left;">Yes</td>
</tr>
</tbody>
</table>
<pre class="cli"><code>admin@example:/config/&gt; <b>edit interface eth0</b>
admin@example:/config/interface/eth0/&gt; <b>set ipv6 forwarding</b>
admin@example:/config/interface/eth0/&gt; <b>leave</b>
admin@example:/&gt;
</code></pre>
<h2 id="arp-and-neighbor-cache">ARP and Neighbor Cache<a class="headerlink" href="#arp-and-neighbor-cache" title="Permanent link"></a></h2>
<p>Static ARP entries (IPv4) and neighbor cache entries (IPv6) can be
configured per interface. The most common reasons to do so are:</p>
<ul>
<li><strong>Security</strong> — prevent ARP/NDP spoofing by locking critical hosts
(e.g., a default gateway) to their known MAC addresses</li>
<li><strong>Reliability</strong> — ensure reachability of a host even when ARP/NDP
traffic is suppressed or filtered (e.g., across a strict firewall)</li>
</ul>
<p>Dynamic entries are learned automatically by the kernel using ARP and
Neighbor Discovery Protocol (NDP), and are visible as read-only
operational state alongside the static ones.</p>
<h3 id="static-ipv4-arp-entry">Static IPv4 ARP Entry<a class="headerlink" href="#static-ipv4-arp-entry" title="Permanent link"></a></h3>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv4</b>
admin@example:/config/interface/eth0/ipv4/&gt; <b>set neighbor 192.168.1.100 link-layer-address 00:11:22:33:44:55</b>
admin@example:/config/interface/eth0/ipv4/&gt; <b>diff</b>
+interfaces {
+ interface eth0 {
+ ipv4 {
+ neighbor 192.168.1.100 {
+ link-layer-address 00:11:22:33:44:55;
+ }
+ }
+ }
+}
admin@example:/config/interface/eth0/ipv4/&gt; <b>leave</b>
admin@example:/&gt;
</code></pre>
<h3 id="static-ipv6-neighbor-entry">Static IPv6 Neighbor Entry<a class="headerlink" href="#static-ipv6-neighbor-entry" title="Permanent link"></a></h3>
<pre class="cli"><code>admin@example:/&gt; <b>configure</b>
admin@example:/config/&gt; <b>edit interface eth0 ipv6</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>set neighbor 2001:db8::100 link-layer-address 00:11:22:33:44:55</b>
admin@example:/config/interface/eth0/ipv6/&gt; <b>diff</b>
+interfaces {
+ interface eth0 {
+ ipv6 {
+ neighbor 2001:db8::100 {
+ link-layer-address 00:11:22:33:44:55;
+ }
+ }
+ }
+}
admin@example:/config/interface/eth0/ipv6/&gt; <b>leave</b>
admin@example:/&gt;
</code></pre>
<p>The full neighbor table — including dynamically learned entries (origin:
<em>dynamic</em>) — is available as operational state via NETCONF or RESTCONF.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Static neighbor entries take effect immediately on <code>leave</code> (commit).
They are installed as <em>permanent</em> entries in the kernel neighbor table,
which means they are never evicted by the normal ARP/NDP aging process.</p>
</div>
<div class="footnote">
<hr>
<ol>
<li id="fn:1">
<p>Link-local IPv6 addresses are implicitly enabled when enabling
IPv6. IPv6 can be enabled/disabled per interface in the
<a href="https://www.rfc-editor.org/rfc/rfc8344">ietf-ip</a> YANG model.&nbsp;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text"></a></p>
</li>
</ol>
</div>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright © 2022-2026 The KernelKit Team
</div>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["toc.follow", "navigation.path", "navigation.instant", "navigation.instant.progress", "navigation.tracking", "navigation.indexes", "search.highlight", "search.share", "content.code.copy", "content.code.annotate", "content.footnote.tooltips"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
<script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(()=>{ lightbox.reload(); });
</script></body></html>