Files
cunicu/docs/features/autocfg.html
github-actions[bot] f55632842f deploy: 3f0fe9e883
2024-12-02 05:02:27 +00:00

73 lines
40 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-features/autocfg" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.4.0">
<title data-rh="true">Auto-configuration | cunīcu</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://cunicu.li/docs/features/autocfg"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="go, golang, iot, networking, nat-traversal, vpn, vpn-manager, mesh, ice, multi-agent-systems, wireguard, edge-cloud, wireguard-vpn"><meta data-rh="true" name="twitter:creator" content="@stv0g"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Auto-configuration | cunīcu"><meta data-rh="true" name="description" content="The auto-configuration feature assigns link-local IP addresses to WireGuard interfaces as well as configures several other common settings such as MTU, IP addresses or DNS settings."><meta data-rh="true" property="og:description" content="The auto-configuration feature assigns link-local IP addresses to WireGuard interfaces as well as configures several other common settings such as MTU, IP addresses or DNS settings."><link data-rh="true" rel="icon" href="/img/favicon.png"><link data-rh="true" rel="canonical" href="https://cunicu.li/docs/features/autocfg"><link data-rh="true" rel="alternate" href="https://cunicu.li/docs/features/autocfg" hreflang="en"><link data-rh="true" rel="alternate" href="https://cunicu.li/docs/features/autocfg" hreflang="x-default"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="cunīcu RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="cunīcu Atom Feed">
<link rel="preconnect" href="https://matomo.0l.de/piwik.js">
<noscript>
var img = document.createElement('img');
img.src = "https://matomo.0l.de/piwik.php?idsite=5&rec=1&url=https://cunicu.li" + location.pathname;
img.style = "border:0";
img.alt = "tracker";
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(img,s);
</noscript>
<script>window.dev=void 0,(!0===window.dev||"1"!==navigator.doNotTrack&&"1"!==window.doNotTrack)&&(window._paq=window._paq||[],window._paq.push(["setTrackerUrl","https://matomo.0l.de/piwik.php"]),window._paq.push(["setSiteId","5"]),window._paq.push(["enableHeartBeatTimer"]),window.start=new Date,function(){var e=document,t=e.createElement("script"),o=e.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.defer=!0,t.src="https://matomo.0l.de/piwik.js",o.parentNode.insertBefore(t,o)}(),!0===window.dev&&(console.debug("[Matomo] Tracking initialized"),console.debug("[Matomo] matomoUrl: https://matomo.0l.de, siteId: 5")))</script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css" integrity="sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.5ec7fe54.css">
<script src="/assets/js/runtime~main.ba68092a.js" defer="defer"></script>
<script src="/assets/js/main.242e5a7e.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/cunicu_icon.svg" alt="cunīcu logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">cunīcu</b></a><a class="navbar__item navbar__link" href="/blog">📰 Blog</a><a href="https://discuss.cunicu.li" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">👋 Community</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs">📚 Documentation</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/cunicu" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><a href="https://codeberg.org/cunicu" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-codeberg-link" aria-label="Codeberg repository"></a><div class="navbarSearchContainer_Bca1"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input id="search_input_react" type="search" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs">Welcome</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/install">Installation</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/features">Features</a><button aria-label="Collapse sidebar category &#x27;Features&#x27;" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/features/autocfg">Auto-configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/features/cfgsync">Config Synchronization</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/features/epdisc">Endpoint Discovery</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/features/hooks">Hooks</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/features/hsync">Hosts-file Synchronization</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/features/pdisc">Peer Discovery</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/features/pske">Pre-shared Key Establishment</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/features/rtsync">Route Synchronization</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/usage">Usage</a><button aria-label="Expand sidebar category &#x27;Usage&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/config">Configuration</a><button aria-label="Expand sidebar category &#x27;Configuration&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/design">Design</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/dev">Development</a><button aria-label="Expand sidebar category &#x27;Development&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/comparison">Comparison</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/funding">Funding</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/license">Licence</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/legal">Legal</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/contact">Contact</a></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/features"><span itemprop="name">Features</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Auto-configuration</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><h1>Auto-configuration</h1>
<p>The auto-configuration feature assigns link-local IP addresses to WireGuard interfaces as well as configures several other common settings such as MTU, IP addresses or DNS settings.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="link-local-ip-addresses">Link local IP-addresses<a class="hash-link" aria-label="Direct link to Link local IP-addresses" title="Direct link to Link local IP-addresses" href="/docs/features/autocfg#link-local-ip-addresses"></a></h2>
<p>This feature automatically assigns each interface link-local IPv4 and IPv6 addresses derived from the interface&#x27;s public key.</p>
<p>This enables peer-to-peer communication when no site-local or global addresses are assigned yet.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="address-calculation">Address calculation<a class="hash-link" aria-label="Direct link to Address calculation" title="Direct link to Address calculation" href="/docs/features/autocfg#address-calculation"></a></h3>
<p>Addresses are generated by concatenating a well-known network prefix (<code>fe80::/64</code>, <code>169.254.0.0/16</code>) with an host part derived from the public key <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>K</mi></mrow><annotation encoding="application/x-tex">PK</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6833em"></span><span class="mord mathnormal" style="margin-right:0.13889em">P</span><span class="mord mathnormal" style="margin-right:0.07153em">K</span></span></span></span> of the peer/interface using the 64-bit <a href="https://en.wikipedia.org/wiki/SipHash" target="_blank" rel="noopener noreferrer"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">S</mi><mi mathvariant="normal">i</mi><mi mathvariant="normal">p</mi><mi mathvariant="normal">H</mi><mi mathvariant="normal">a</mi><mi mathvariant="normal">s</mi><mi mathvariant="normal">h</mi></mrow><mn>64</mn></msub></mrow><annotation encoding="application/x-tex">\mathrm{SipHash}_{64}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.9386em;vertical-align:-0.2441em"></span><span class="mord"><span class="mord"><span class="mord mathrm">SipHash</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.207em"><span style="top:-2.4559em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">64</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.2441em"><span></span></span></span></span></span></span></span></span></span></a> hashing function:</p>
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd class="mtr-glue"></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi>H</mi><mtext> </mtext><mo>=</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mtext> </mtext><msub><mrow><mi mathvariant="normal">S</mi><mi mathvariant="normal">i</mi><mi mathvariant="normal">p</mi><mi mathvariant="normal">H</mi><mi mathvariant="normal">a</mi><mi mathvariant="normal">s</mi><mi mathvariant="normal">h</mi></mrow><mn>64</mn></msub><mo stretchy="false">(</mo><mi>P</mi><mi>K</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd class="mtr-glue"></mtd><mtd class="mml-eqn-num"></mtd></mtr><mtr><mtd class="mtr-glue"></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><msub><mi>H</mi><mrow><mi>f</mi><mi>o</mi><mi>l</mi><mi>d</mi></mrow></msub><mtext> </mtext><mo>=</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mtext> </mtext><mo stretchy="false">(</mo><mi>H</mi><mo></mo><mrow><mn>0</mn><mi mathvariant="normal">x</mi><mi mathvariant="normal">F</mi><mi mathvariant="normal">F</mi><mi mathvariant="normal">F</mi><mi mathvariant="normal">F</mi></mrow><mo stretchy="false">)</mo><mo></mo><mo stretchy="false">(</mo><mi>H</mi><mo></mo><mn>16</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd class="mtr-glue"></mtd><mtd class="mml-eqn-num"></mtd></mtr><mtr><mtd class="mtr-glue"></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><msub><mrow><mi mathvariant="normal">I</mi><mi mathvariant="normal">P</mi><mi mathvariant="normal">v</mi><mn>6</mn></mrow><mrow><mi>l</mi><mi>i</mi><mi>n</mi><mi>k</mi><mo></mo><mi>l</mi><mi>o</mi><mi>c</mi><mi>a</mi><mi>l</mi></mrow></msub><mtext> </mtext><mo>=</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mtext> </mtext><mo stretchy="false">{</mo><mrow><mi mathvariant="normal">f</mi><mi mathvariant="normal">e</mi><mn>80</mn><mo>:</mo></mrow><mtext> </mtext><mi mathvariant="normal"></mi><mi mathvariant="normal"></mi><mtext> </mtext><mi>H</mi><mtext> </mtext><mo stretchy="false">}</mo><mi mathvariant="normal">/</mi><mn>64</mn></mrow></mstyle></mtd><mtd class="mtr-glue"></mtd><mtd class="mml-eqn-num"></mtd></mtr><mtr><mtd class="mtr-glue"></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><msub><mrow><mi mathvariant="normal">I</mi><mi mathvariant="normal">P</mi><mi mathvariant="normal">v</mi><mn>4</mn></mrow><mrow><mi>l</mi><mi>i</mi><mi>n</mi><mi>k</mi><mo></mo><mi>l</mi><mi>o</mi><mi>c</mi><mi>a</mi><mi>l</mi></mrow></msub><mtext> </mtext><mo>=</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mtext> </mtext><mo stretchy="false">{</mo><mn>169.254.</mn><mtext> </mtext><mi mathvariant="normal"></mi><mi mathvariant="normal"></mi><mtext> </mtext><msub><mi>H</mi><mrow><mi>f</mi><mi>o</mi><mi>l</mi><mi>d</mi></mrow></msub><mtext> </mtext><mo stretchy="false">}</mo><mi mathvariant="normal">/</mi><mn>16</mn></mrow></mstyle></mtd><mtd class="mtr-glue"></mtd><mtd class="mml-eqn-num"></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align}
H~=&amp;~\mathrm{SipHash}_{64}(PK) \\
H_{fold}~=&amp;~(H \land \mathrm{0xFFFF}) \barwedge (H \gg 16) \\
\mathrm{IPv6}_{link-local}~=&amp;~\{ \mathrm{fe80:}~||~H~\} /64 \\
\mathrm{IPv4}_{link-local}~=&amp;~\{ \mathrm{169.254.}~||~H_{fold}~\}/16 \\
\end{align}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:6em;vertical-align:-2.75em"></span><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.25em"><span style="top:-5.41em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.08125em">H</span><span class="mspace nobreak"> </span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span></span></span><span style="top:-3.91em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.08125em">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em"><span style="top:-2.55em;margin-left:-0.0813em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.10764em">f</span><span class="mord mathnormal mtight">o</span><span class="mord mathnormal mtight" style="margin-right:0.01968em">l</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.2861em"><span></span></span></span></span></span></span><span class="mspace nobreak"> </span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span></span></span><span style="top:-2.41em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord"><span class="mord"><span class="mord mathrm">IPv6</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em"><span style="top:-2.55em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.01968em">l</span><span class="mord mathnormal mtight" style="margin-right:0.03148em">ink</span><span class="mbin mtight"></span><span class="mord mathnormal mtight" style="margin-right:0.01968em">l</span><span class="mord mathnormal mtight">oc</span><span class="mord mathnormal mtight">a</span><span class="mord mathnormal mtight" style="margin-right:0.01968em">l</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.2083em"><span></span></span></span></span></span></span><span class="mspace nobreak"> </span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span></span></span><span style="top:-0.91em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord"><span class="mord"><span class="mord mathrm">IPv4</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em"><span style="top:-2.55em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.01968em">l</span><span class="mord mathnormal mtight" style="margin-right:0.03148em">ink</span><span class="mbin mtight"></span><span class="mord mathnormal mtight" style="margin-right:0.01968em">l</span><span class="mord mathnormal mtight">oc</span><span class="mord mathnormal mtight">a</span><span class="mord mathnormal mtight" style="margin-right:0.01968em">l</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.2083em"><span></span></span></span></span></span></span><span class="mspace nobreak"> </span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:2.75em"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.25em"><span style="top:-5.41em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord"></span><span class="mspace nobreak"> </span><span class="mord"><span class="mord"><span class="mord mathrm">SipHash</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.207em"><span style="top:-2.4559em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">64</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.2441em"><span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.13889em">P</span><span class="mord mathnormal" style="margin-right:0.07153em">K</span><span class="mclose">)</span></span></span><span style="top:-3.91em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord"></span><span class="mspace nobreak"> </span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.08125em">H</span><span class="mspace" style="margin-right:0.2222em"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em"></span><span class="mord"><span class="mord mathrm">0xFFFF</span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em"></span><span class="mbin amsrm"></span><span class="mspace" style="margin-right:0.2222em"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.08125em">H</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel"></span><span class="mspace" style="margin-right:0.2778em"></span><span class="mord">16</span><span class="mclose">)</span></span></span><span style="top:-2.41em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord"></span><span class="mspace nobreak"> </span><span class="mopen">{</span><span class="mord"><span class="mord mathrm">fe80</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">:</span></span><span class="mspace nobreak"> </span><span class="mord"></span><span class="mspace nobreak"> </span><span class="mord mathnormal" style="margin-right:0.08125em">H</span><span class="mspace nobreak"> </span><span class="mclose">}</span><span class="mord">/64</span></span></span><span style="top:-0.91em"><span class="pstrut" style="height:3em"></span><span class="mord"><span class="mord"></span><span class="mspace nobreak"> </span><span class="mopen">{</span><span class="mord"><span class="mord mathrm">169.254.</span></span><span class="mspace nobreak"> </span><span class="mord"></span><span class="mspace nobreak"> </span><span class="mord"><span class="mord mathnormal" style="margin-right:0.08125em">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em"><span style="top:-2.55em;margin-left:-0.0813em;margin-right:0.05em"><span class="pstrut" style="height:2.7em"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.10764em">f</span><span class="mord mathnormal mtight">o</span><span class="mord mathnormal mtight" style="margin-right:0.01968em">l</span><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.2861em"><span></span></span></span></span></span></span><span class="mspace nobreak"> </span><span class="mclose">}</span><span class="mord">/16</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:2.75em"><span></span></span></span></span></span></span></span><span class="tag"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.25em"><span style="top:-5.25em"><span class="pstrut" style="height:2.84em"></span><span class="eqn-num"></span></span><span style="top:-3.75em"><span class="pstrut" style="height:2.84em"></span><span class="eqn-num"></span></span><span style="top:-2.25em"><span class="pstrut" style="height:2.84em"></span><span class="eqn-num"></span></span><span style="top:-0.75em"><span class="pstrut" style="height:2.84em"></span><span class="eqn-num"></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:2.75em"><span></span></span></span></span></span></span></span></span>
<p>This addresses calculation can be performed with the <a href="/docs/usage/man/addresses"><code>cunicu addresses</code></a> sub-command.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="missing-settings">Missing settings<a class="hash-link" aria-label="Direct link to Missing settings" title="Direct link to Missing settings" href="/docs/features/autocfg#missing-settings"></a></h2>
<p>The following settings are automatically assigned if they have not been set before:</p>
<ul>
<li><strong>Private Key:</strong> a new random private key will be generated.</li>
<li><strong>Listen port:</strong> the next free port in the configured listen port range is used (see <code>wireguard.listen_port_range</code> setting).</li>
<li><strong>MTU:</strong> is automatically determined from the endpoint addresses or the system default route.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration" href="/docs/features/autocfg#configuration"></a></h2>
<p>The following settings can be used in the main section of the <a href="/docs/config">configuration file</a> or with-in the <code>interfaces</code> section to customize settings of an individual interface.</p>
<!-- -->
<div class="redocusaurus redocusaurus-schema hide-example"><div class="sc-eCstZk eGHUfI"><div class="sc-iBPTVF iKpLUv"><div class="sc-hKgKIp kwuQOC"><table class="sc-hHftZz gwKXaW"><tbody><tr><td kind="field" title="mtu" class="sc-hBEZvw sc-fFubCH buyQWa dNjbQz"><span class="sc-idOjMB imcswj"></span><span class="property-name">mtu</span></td><td class="sc-bkzXAi hgmEWl"><div><div><span class="sc-gTgyBf sc-laRQQM bDVBYe GbFxg"></span><span class="sc-gTgyBf sc-iNqNmV bDVBYe lbENXf">number</span><span class="sc-gTgyBf sc-jeGSXX bDVBYe cgiATn"> (<!-- -->MTU<!-- -->) </span></div> <div><div html="&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Maximum_transmission_unit&quot;&gt;Maximum Transmission Unit (MTU)&lt;/a&gt; of the WireGuard interface.
If not specified, the MTU is automatically determined from the endpoint addresses or the system default route, which is usually a sane choice.
However, to manually specify an MTU to override this automatic discovery, this value may be specified explicitly.&lt;/p&gt;
" class="sc-iJuWdM sc-cBNeRQ czxMmN iNyBBQ"><p>The <a href="https://en.wikipedia.org/wiki/Maximum_transmission_unit">Maximum Transmission Unit (MTU)</a> of the WireGuard interface.
If not specified, the MTU is automatically determined from the endpoint addresses or the system default route, which is usually a sane choice.
However, to manually specify an MTU to override this automatic discovery, this value may be specified explicitly.</p>
</div></div></div></td></tr><tr><td kind="field" title="addresses" class="sc-hBEZvw sc-fFubCH buyQWa dNjbQz"><span class="sc-idOjMB imcswj"></span><span class="property-name">addresses</span></td><td class="sc-bkzXAi hgmEWl"><div><div><span class="sc-gTgyBf sc-laRQQM bDVBYe GbFxg">Array of </span><span class="sc-gTgyBf sc-iNqNmV bDVBYe lbENXf">strings</span><span class="sc-gTgyBf sc-jeGSXX bDVBYe cgiATn"> (<!-- -->Addresses<!-- -->) </span></div> <div><div html="&lt;p&gt;A list of IP (v4 or v6) addresses (optionally with CIDR masks) to be assigned to the interface.&lt;/p&gt;
" class="sc-iJuWdM sc-cBNeRQ czxMmN iNyBBQ"><p>A list of IP (v4 or v6) addresses (optionally with CIDR masks) to be assigned to the interface.</p>
</div></div></div></td></tr><tr><td kind="field" title="prefixes" class="sc-hBEZvw sc-fFubCH buyQWa dNjbQz"><span class="sc-idOjMB imcswj"></span><span class="property-name">prefixes</span></td><td class="sc-bkzXAi hgmEWl"><div><div><span class="sc-gTgyBf sc-laRQQM bDVBYe GbFxg">Array of </span><span class="sc-gTgyBf sc-iNqNmV bDVBYe lbENXf">strings</span><span class="sc-gTgyBf sc-jeGSXX bDVBYe cgiATn"> (<!-- -->Prefixes<!-- -->) </span></div> <div><div html="&lt;p&gt;A list of prefixes which cunīcu uses to derive local addresses from the interfaces public key.&lt;/p&gt;
" class="sc-iJuWdM sc-cBNeRQ czxMmN iNyBBQ"><p>A list of prefixes which cunīcu uses to derive local addresses from the interfaces public key.</p>
</div></div></div></td></tr><tr class="last"><td kind="field" title="dns" class="sc-hBEZvw sc-fFubCH sc-jgHCeW buyQWa dNjbQz kwTKKU"><span class="sc-idOjMB imcswj"></span><button aria-label="expand dns"><span class="property-name">dns</span><svg class="sc-dQpIV creuKE" version="1.1" viewBox="0 0 24 24" x="0" xmlns="http://www.w3.org/2000/svg" y="0" aria-hidden="true"><polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "></polygon></svg></button></td><td class="sc-bkzXAi hgmEWl"><div><div><span class="sc-gTgyBf sc-laRQQM bDVBYe GbFxg">Array of </span><span class="sc-gTgyBf sc-iNqNmV bDVBYe lbENXf">IP Address (any) or IP Address (any)</span><span class="sc-gTgyBf sc-jeGSXX bDVBYe cgiATn"> (<!-- -->DNS Servers<!-- -->) </span></div> <div><div html="&lt;p&gt;A list of IP (v4 or v6) addresses to be set as the interface&amp;#39;s DNS servers, or non-IP hostnames to be set as the interface&amp;#39;s DNS search domains.
Upon bringing the interface up, this runs &lt;code&gt;resolvconf -a tun.INTERFACE -m 0 -x&lt;/code&gt; and upon bringing it down, this runs &lt;code&gt;resolvconf -d tun.INTERFACE&lt;/code&gt;.
If these particular invocations of &lt;a href=&quot;https://manpages.debian.org/stretch/resolvconf/resolvconf.8.en.html&quot;&gt;resolvconf(8)&lt;/a&gt; are undesirable, custom hooks can be used instead.&lt;/p&gt;
" class="sc-iJuWdM sc-cBNeRQ czxMmN iNyBBQ"><p>A list of IP (v4 or v6) addresses to be set as the interface&#39;s DNS servers, or non-IP hostnames to be set as the interface&#39;s DNS search domains.
Upon bringing the interface up, this runs <code>resolvconf -a tun.INTERFACE -m 0 -x</code> and upon bringing it down, this runs <code>resolvconf -d tun.INTERFACE</code>.
If these particular invocations of <a href="https://manpages.debian.org/stretch/resolvconf/resolvconf.8.en.html">resolvconf(8)</a> are undesirable, custom hooks can be used instead.</p>
</div></div></div></td></tr></tbody></table></div><div class="sc-jSguLX sc-gKsecS cRCTYQ jcMixq"><div class="sc-jONmMj cycZBR"><div class="sc-hTZhMB kTaCsY"><div class="sc-cTkyaV ebyfmT"><div class="sc-giInvV cIuwxG"><button><div class="sc-jcVcfa iVrxDL">Copy</div></button><button> Expand all </button><button> Collapse all </button></div><div class="sc-iJuWdM czxMmN sc-jNMdxs elJqcE"><div class="redoc-json"><code><button class="collapser" aria-label="collapse"></button><span class="token punctuation">{</span><span class="ellipsis"></span><ul class="obj collapsible"><li><div class="hoverable"><span class="property token string">"mtu"</span>: <span class="token number">1420</span><span class="token punctuation">,</span></div></li><li><div class="hoverable"><span class="property token string">"addresses"</span>: <button class="collapser" aria-label="collapse"></button><span class="token punctuation">[</span><span class="ellipsis"></span><ul class="array collapsible"><li><div class="hoverable collapsed"><span class="token string">&quot;fc2f:9a4d::/32&quot;</span></div></li></ul><span class="token punctuation">]</span><span class="token punctuation">,</span></div></li><li><div class="hoverable"><span class="property token string">"prefixes"</span>: <button class="collapser" aria-label="collapse"></button><span class="token punctuation">[</span><span class="ellipsis"></span><ul class="array collapsible"><li><div class="hoverable collapsed"><span class="token string">&quot;fc2f:9a4d::/32&quot;</span></div></li></ul><span class="token punctuation">]</span><span class="token punctuation">,</span></div></li><li><div class="hoverable"><span class="property token string">"dns"</span>: <button class="collapser" aria-label="collapse"></button><span class="token punctuation">[</span><span class="ellipsis"></span><ul class="array collapsible"><li><div class="hoverable collapsed"><span class="token punctuation">{ }</span></div></li></ul><span class="token punctuation">]</span></div></li></ul><span class="token punctuation">}</span></code></div></div></div></div></div></div></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/cunicu/cunicu/edit/main/docs/features/autocfg.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/features"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Features</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/features/cfgsync"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Config Synchronization</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a class="table-of-contents__link toc-highlight" href="/docs/features/autocfg#link-local-ip-addresses">Link local IP-addresses</a><ul><li><a class="table-of-contents__link toc-highlight" href="/docs/features/autocfg#address-calculation">Address calculation</a></li></ul></li><li><a class="table-of-contents__link toc-highlight" href="/docs/features/autocfg#missing-settings">Missing settings</a></li><li><a class="table-of-contents__link toc-highlight" href="/docs/features/autocfg#configuration">Configuration</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Documentation</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs">Tutorial</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/legal">Legal</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://discuss.cunicu.li" target="_blank" rel="noopener noreferrer" class="footer__link-item">Forum<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://fosstodon.org/@cunicu" target="_blank" rel="noopener noreferrer" class="footer__link-item">Fediverse<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/contact">Contact</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2024 Steffen Vogel.</div></div></div></footer></div>
</body>
</html>