Files
infix/dev/cli/configure/index.html
T

2807 lines
63 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/cli/configure/">
<link rel="prev" href="../introduction/">
<link rel="next" href="../keybindings/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
<title>Configuration - 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="#cli-configure-context" 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">
Configuration
</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--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked="">
<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="true">
<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="../introduction/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</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">
Configuration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Configuration
</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="#set-ip-address-on-an-interface" class="md-nav__link">
<span class="md-ellipsis">
Set IP Address on an Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#saving-changes" class="md-nav__link">
<span class="md-ellipsis">
Saving Changes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#changing-hostname" class="md-nav__link">
<span class="md-ellipsis">
Changing Hostname
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#changing-password" class="md-nav__link">
<span class="md-ellipsis">
Changing Password
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ssh-authorized-key" class="md-nav__link">
<span class="md-ellipsis">
SSH Authorized Key
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#creating-a-veth-pair" class="md-nav__link">
<span class="md-ellipsis">
Creating a VETH Pair
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#creating-a-bridge" class="md-nav__link">
<span class="md-ellipsis">
Creating a Bridge
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../keybindings/" class="md-nav__link">
<span class="md-ellipsis">
Keybindings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../netcalc/" class="md-nav__link">
<span class="md-ellipsis">
Network Calculator
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../tcpdump/" class="md-nav__link">
<span class="md-ellipsis">
Network Monitoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../quick/" class="md-nav__link">
<span class="md-ellipsis">
Quickstart Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../text-editor/" class="md-nav__link">
<span class="md-ellipsis">
Text Editor
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../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--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
<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="false">
<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">
<a href="../../ip/" class="md-nav__link">
<span class="md-ellipsis">
IP Addressing
</span>
</a>
</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="#set-ip-address-on-an-interface" class="md-nav__link">
<span class="md-ellipsis">
Set IP Address on an Interface
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#saving-changes" class="md-nav__link">
<span class="md-ellipsis">
Saving Changes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#changing-hostname" class="md-nav__link">
<span class="md-ellipsis">
Changing Hostname
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#changing-password" class="md-nav__link">
<span class="md-ellipsis">
Changing Password
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ssh-authorized-key" class="md-nav__link">
<span class="md-ellipsis">
SSH Authorized Key
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#creating-a-veth-pair" class="md-nav__link">
<span class="md-ellipsis">
Creating a VETH Pair
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#creating-a-bridge" class="md-nav__link">
<span class="md-ellipsis">
Creating a Bridge
</span>
</a>
</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="../introduction/" class="md-path__link">
<span class="md-ellipsis">
CLI
</span>
</a>
</li>
</ol>
</nav>
<article class="md-content__inner md-typeset">
<h1 id="cli-configure-context">CLI Configure Context<a class="headerlink" href="#cli-configure-context" title="Permanent link"></a></h1>
<p>Enter the configure context from admin-exec by typing <code>configure</code>
followed by Enter. Available commands, press <code>?</code> at the prompt:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>admin@host:/&gt; configure
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>admin@host:/config/&gt;
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> abort Abandon candidate
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> change Interactively change setting, e.g. password
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> check Validate candidate
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> commit Commit current candidate to running-config
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> delete Delete configuration setting(s)
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> diff Summarize uncommitted changes
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> do Execute operational mode command
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> edit Descend to the specified configuration node
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> end Alias to up, leave this subsection/node
<a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a> exit Ascend to the parent configuration node, or abort (from top)
<a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a> leave Finalize candidate and apply to running-config
<a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a> no Alias for delete
<a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a> rollback Restore candidate to running-config
<a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a> set Set configuration setting
<a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a> show Show configuration
<a id="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a> text-editor Modify binary content in a text editor
<a id="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a> top Ascend to the configuration root
<a id="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a> up Ascend to the parent configuration node
</code></pre></div>
<p>The <code>edit</code> command lets you change to a sub-configure context, e.g.:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>admin@host:/config/&gt; edit interface eth0
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>admin@host:/config/interface/eth0/&gt;
</code></pre></div>
<p>Use <code>up</code> to go up one level.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>admin@host:/config/interface/eth0/&gt; up
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>admin@host:/config/&gt;
</code></pre></div>
<blockquote>
<p><strong>Note</strong></p>
<p>Commands in configure context are automatically generated from the
system's YANG models, hence different products likely have a different
set of commands. However, both the <code>ietf-interfaces.yang</code> and
<code>ietf-ip.yang</code> models, for instance, that provide the networking
support are common to all systems.</p>
</blockquote>
<h2 id="set-ip-address-on-an-interface">Set IP Address on an Interface<a class="headerlink" href="#set-ip-address-on-an-interface" title="Permanent link"></a></h2>
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>admin@host:/config/&gt; edit interface eth0
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>admin@host:/config/interface/eth0/&gt;
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>admin@host:/config/interface/eth0/&gt; set ipv4 address 192.168.2.200 prefix-length 24
</code></pre></div>
<p>From anywhere in configure context you can see the changes you have
made by typing <code>diff</code>:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>admin@host:/config/interface/eth0/&gt; diff
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>interfaces {
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a> interface eth0 {
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a>+ ipv4 {
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a>+ address 192.168.2.200 {
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a>+ prefix-length 24;
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a>+ }
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a>+ }
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> }
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a>}
</code></pre></div>
<h2 id="saving-changes">Saving Changes<a class="headerlink" href="#saving-changes" title="Permanent link"></a></h2>
<p>Apply the changes (from candidate to <code>running-config</code>):</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>admin@host:/config/interface/eth0/&gt; leave
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>admin@host:/&gt; show running-config
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>...
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a>interfaces {
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a> interface eth0 {
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a> type ethernetCsmacd;
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a> ipv4 {
<a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a> address 192.168.2.200 {
<a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a> prefix-length 24;
<a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a> }
<a id="__codelineno-5-11" name="__codelineno-5-11" href="#__codelineno-5-11"></a> }
<a id="__codelineno-5-12" name="__codelineno-5-12" href="#__codelineno-5-12"></a> }
<a id="__codelineno-5-13" name="__codelineno-5-13" href="#__codelineno-5-13"></a>...
</code></pre></div>
<p>Since we did not get any warnings we can save the running (RAM only)
configuration to startup, so the changes are made persistent across
reboots:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>admin@host:/&gt; copy running-config startup-config
</code></pre></div>
<p>The <code>startup-config</code> can also be inspected with the <code>show</code> command to
verify the changes are saved.</p>
<blockquote>
<p><strong>Important</strong></p>
<p>All commands need to be spelled out, no short forms are allowed in the
CLI. Use the <code>TAB</code> key to make your life easier.</p>
</blockquote>
<h2 id="changing-hostname">Changing Hostname<a class="headerlink" href="#changing-hostname" title="Permanent link"></a></h2>
<p>Settings like hostname are located in the <code>ietf-system.yang</code> model.
Here is how it can be set.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>admin@host:/config/&gt; edit system
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>admin@host:/config/system/&gt; set hostname example
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a>admin@host:/config/system/&gt; leave
<a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a>admin@example:/&gt;
</code></pre></div>
<p>Notice how the hostname in the prompt does not change until the change
is committed.</p>
<blockquote>
<p><strong>Note</strong></p>
<p>Critical services like syslog, mDNS, LLDP, and similar that advertise
the hostname, are restarted when the hostname is changed.</p>
</blockquote>
<h2 id="changing-password">Changing Password<a class="headerlink" href="#changing-password" title="Permanent link"></a></h2>
<p>User management, including passwords, is also a part of <code>ietf-system</code>.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>admin@host:/config/&gt; edit system authentication user admin
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>admin@host:/config/system/authentication/user/admin/&gt; change password
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>New password:
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a>Retype password:
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a>admin@host:/config/system/authentication/user/admin/&gt; leave
</code></pre></div>
<p>The <code>change password</code> command starts an interactive dialogue that asks
for the new password, with a confirmation, and then salts and encrypts
the password with sha512crypt.</p>
<p>It is also possible to use the <code>set password ...</code> command. This allows
setting an already hashed password. To manually hash a password, use
the <code>do password encrypt</code> command. This launches the admin-exec command
to hash, and optionally salt, your password. This encrypted string can
then be used with <code>set password ...</code>.</p>
<blockquote>
<p><strong>Tip</strong></p>
<p>If you are having trouble thinking of a password, there is also <code>do
password generate</code>, which generates random but readable strings using
the UNIX command <code>pwgen</code>.</p>
</blockquote>
<h2 id="ssh-authorized-key">SSH Authorized Key<a class="headerlink" href="#ssh-authorized-key" title="Permanent link"></a></h2>
<p>Logging in remotely with SSH is possible by adding a <em>public key</em> to a
user. Here we add the authorized key to the admin user, multiple keys
are supported.</p>
<p>With SSH keys in place it is possible to disable password login, just
remember to verify SSH login and network connectivity before doing so.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>admin@host:/config/&gt; edit system authentication user admin
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>admin@host:/config/system/authentication/user/admin/&gt; edit authorized-key example@host
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a>admin@host:/config/system/authentication/user/admin/authorized-key/example@host/&gt; set algorithm ssh-rsa
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a>admin@host:/config/system/authentication/user/admin/authorized-key/example@host/&gt; set key-data AAAAB3NzaC1yc2EAAAADAQABAAABgQC8iBL42yeMBioFay7lty1C4ZDTHcHyo739gc91rTTH8SKvAE4g8Rr97KOz/8PFtOObBrE9G21K7d6UBuPqmd0RUF2CkXXN/eN2PBSHJ50YprRFt/z/304bsBYkDdflKlPDjuSmZ/+OMp4pTsq0R0eNFlX9wcwxEzooIb7VPEdvWE7AYoBRUdf41u3KBHuvjGd1M6QYJtbFLQMMTiVe5IUfyVSZ1RCxEyAB9fR9CBhtVheTVsY3iG0fZc9eCEo89ErDgtGUTJK4Hxt5yCNwI88YaVmkE85cNtw8YwubWQL3/tGZHfbbQ0fynfB4kWNloyRHFr7E1kDxuX5+pbv26EqRdcOVGucNn7hnGU6C1+ejLWdBD7vgsoilFrEaBWF41elJEPKDzpszEijQ9gTrrWeYOQ+x++lvmOdssDu4KvGmj2K/MQTL2jJYrMJ7GDzsUu3XikChRL7zNfS2jYYQLzovboUCgqfPUsVba9hqeX3U67GsJo+hy5MG9RSry4+ucHs=
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a>admin@host:/config/system/authentication/user/admin/authorized-key/example@host/&gt; show
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a>algorithm ssh-rsa;
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a>key-data AAAAB3NzaC1yc2EAAAADAQABAAABgQC8iBL42yeMBioFay7lty1C4ZDTHcHyo739gc91rTTH8SKvAE4g8Rr97KOz/8PFtOObBrE9G21K7d6UBuPqmd0RUF2CkXXN/eN2PBSHJ50YprRFt/z/304bsBYkDdflKlPDjuSmZ/+OMp4pTsq0R0eNFlX9wcwxEzooIb7VPEdvWE7AYoBRUdf41u3KBHuvjGd1M6QYJtbFLQMMTiVe5IUfyVSZ1RCxEyAB9fR9CBhtVheTVsY3iG0fZc9eCEo89ErDgtGUTJK4Hxt5yCNwI88YaVmkE85cNtw8YwubWQL3/tGZHfbbQ0fynfB4kWNloyRHFr7E1kDxuX5+pbv26EqRdcOVGucNn7hnGU6C1+ejLWdBD7vgsoilFrEaBWF41elJEPKDzpszEijQ9gTrrWeYOQ+x++lvmOdssDu4KvGmj2K/MQTL2jJYrMJ7GDzsUu3XikChRL7zNfS2jYYQLzovboUCgqfPUsVba9hqeX3U67GsJo+hy5MG9RSry4+ucHs=;
<a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a>admin@host:/config/system/authentication/user/admin/authorized-key/example@host/&gt; leave
</code></pre></div>
<blockquote>
<p><strong>Note</strong></p>
<p>The <code>ssh-keygen</code> program already base64 encodes the public key data,
so there is no need to use the <code>text-editor</code> command, <code>set</code> does the
job.</p>
</blockquote>
<hr>
<h2 id="creating-a-veth-pair">Creating a VETH Pair<a class="headerlink" href="#creating-a-veth-pair" title="Permanent link"></a></h2>
<p>The following example creates a <code>veth0a &lt;--&gt; veth0b</code> virtual Ethernet
pair which is useful for connecting, e.g., a container to the physical
world. Here we also add an IPv4 address to one end of the pair.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>admin@host:/config/&gt; edit interface veth0a
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a>admin@host:/config/interface/veth0a/&gt; set veth peer veth0b
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a>admin@host:/config/interface/veth0a/&gt; set ipv4 address 192.168.0.1 prefix-length 24
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a>admin@host:/config/interface/veth0a/&gt; up
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a>admin@host:/config/&gt; diff
<a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a>interfaces {
<a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a>+ interface veth0a {
<a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a>+ type veth;
<a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a>+ ipv4 {
<a id="__codelineno-10-10" name="__codelineno-10-10" href="#__codelineno-10-10"></a>+ address 192.168.0.1 {
<a id="__codelineno-10-11" name="__codelineno-10-11" href="#__codelineno-10-11"></a>+ prefix-length 24;
<a id="__codelineno-10-12" name="__codelineno-10-12" href="#__codelineno-10-12"></a>+ }
<a id="__codelineno-10-13" name="__codelineno-10-13" href="#__codelineno-10-13"></a>+ }
<a id="__codelineno-10-14" name="__codelineno-10-14" href="#__codelineno-10-14"></a>+ veth {
<a id="__codelineno-10-15" name="__codelineno-10-15" href="#__codelineno-10-15"></a>+ peer veth0b;
<a id="__codelineno-10-16" name="__codelineno-10-16" href="#__codelineno-10-16"></a>+ }
<a id="__codelineno-10-17" name="__codelineno-10-17" href="#__codelineno-10-17"></a>+ }
<a id="__codelineno-10-18" name="__codelineno-10-18" href="#__codelineno-10-18"></a>+ interface veth0b {
<a id="__codelineno-10-19" name="__codelineno-10-19" href="#__codelineno-10-19"></a>+ type veth;
<a id="__codelineno-10-20" name="__codelineno-10-20" href="#__codelineno-10-20"></a>+ veth {
<a id="__codelineno-10-21" name="__codelineno-10-21" href="#__codelineno-10-21"></a>+ peer veth0a;
<a id="__codelineno-10-22" name="__codelineno-10-22" href="#__codelineno-10-22"></a>+ }
<a id="__codelineno-10-23" name="__codelineno-10-23" href="#__codelineno-10-23"></a>+ }
<a id="__codelineno-10-24" name="__codelineno-10-24" href="#__codelineno-10-24"></a>}
<a id="__codelineno-10-25" name="__codelineno-10-25" href="#__codelineno-10-25"></a>admin@host:/config/&gt; leave
</code></pre></div>
<p>See the bridging example below for more.</p>
<blockquote>
<p><strong>Tip</strong></p>
<p>In the CLI you do not have to create the <code>veth0b</code> interface. The
system <em>infers</em> this for you. This does not apply when setting up a
VETH pair using NETCONF or RESTCONF, then you must submit a complete
configuration.</p>
</blockquote>
<h2 id="creating-a-bridge">Creating a Bridge<a class="headerlink" href="#creating-a-bridge" title="Permanent link"></a></h2>
<p>Building on the previous example, we now create a non-VLAN filtering
bridge (<code>br0</code>) that forwards any, normally link-local, LLDP traffic
between both its bridge ports: <code>eth0</code> and <code>vet0b</code>.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>admin@host:/&gt; configure
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a>admin@host:/config/&gt; edit interface br0
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a>admin@host:/config/interface/br0/&gt; set bridge ieee-group-forward lldp
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a>admin@host:/config/interface/br0/&gt; up
<a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a>admin@host:/config/&gt; set interface eth0 bridge-port bridge br0
<a id="__codelineno-11-6" name="__codelineno-11-6" href="#__codelineno-11-6"></a>admin@host:/config/&gt; set interface veth0b bridge-port bridge br0
<a id="__codelineno-11-7" name="__codelineno-11-7" href="#__codelineno-11-7"></a>admin@host:/config/&gt; diff
<a id="__codelineno-11-8" name="__codelineno-11-8" href="#__codelineno-11-8"></a>interfaces {
<a id="__codelineno-11-9" name="__codelineno-11-9" href="#__codelineno-11-9"></a>+ interface br0 {
<a id="__codelineno-11-10" name="__codelineno-11-10" href="#__codelineno-11-10"></a>+ type bridge;
<a id="__codelineno-11-11" name="__codelineno-11-11" href="#__codelineno-11-11"></a>+ bridge {
<a id="__codelineno-11-12" name="__codelineno-11-12" href="#__codelineno-11-12"></a>+ ieee-group-forward lldp;
<a id="__codelineno-11-13" name="__codelineno-11-13" href="#__codelineno-11-13"></a>+ }
<a id="__codelineno-11-14" name="__codelineno-11-14" href="#__codelineno-11-14"></a>+ }
<a id="__codelineno-11-15" name="__codelineno-11-15" href="#__codelineno-11-15"></a> interface eth0 {
<a id="__codelineno-11-16" name="__codelineno-11-16" href="#__codelineno-11-16"></a>+ bridge-port {
<a id="__codelineno-11-17" name="__codelineno-11-17" href="#__codelineno-11-17"></a>+ bridge br0;
<a id="__codelineno-11-18" name="__codelineno-11-18" href="#__codelineno-11-18"></a>+ }
<a id="__codelineno-11-19" name="__codelineno-11-19" href="#__codelineno-11-19"></a> }
<a id="__codelineno-11-20" name="__codelineno-11-20" href="#__codelineno-11-20"></a>+ interface veth0a {
<a id="__codelineno-11-21" name="__codelineno-11-21" href="#__codelineno-11-21"></a>+ type veth;
<a id="__codelineno-11-22" name="__codelineno-11-22" href="#__codelineno-11-22"></a>+ ipv4 {
<a id="__codelineno-11-23" name="__codelineno-11-23" href="#__codelineno-11-23"></a>+ address 192.168.0.1 {
<a id="__codelineno-11-24" name="__codelineno-11-24" href="#__codelineno-11-24"></a>+ prefix-length 24;
<a id="__codelineno-11-25" name="__codelineno-11-25" href="#__codelineno-11-25"></a>+ }
<a id="__codelineno-11-26" name="__codelineno-11-26" href="#__codelineno-11-26"></a>+ }
<a id="__codelineno-11-27" name="__codelineno-11-27" href="#__codelineno-11-27"></a>+ veth {
<a id="__codelineno-11-28" name="__codelineno-11-28" href="#__codelineno-11-28"></a>+ peer veth0b;
<a id="__codelineno-11-29" name="__codelineno-11-29" href="#__codelineno-11-29"></a>+ }
<a id="__codelineno-11-30" name="__codelineno-11-30" href="#__codelineno-11-30"></a>+ }
<a id="__codelineno-11-31" name="__codelineno-11-31" href="#__codelineno-11-31"></a>+ interface veth0b {
<a id="__codelineno-11-32" name="__codelineno-11-32" href="#__codelineno-11-32"></a>+ type veth;
<a id="__codelineno-11-33" name="__codelineno-11-33" href="#__codelineno-11-33"></a>+ veth {
<a id="__codelineno-11-34" name="__codelineno-11-34" href="#__codelineno-11-34"></a>+ peer veth0a;
<a id="__codelineno-11-35" name="__codelineno-11-35" href="#__codelineno-11-35"></a>+ }
<a id="__codelineno-11-36" name="__codelineno-11-36" href="#__codelineno-11-36"></a>+ bridge-port {
<a id="__codelineno-11-37" name="__codelineno-11-37" href="#__codelineno-11-37"></a>+ bridge br0;
<a id="__codelineno-11-38" name="__codelineno-11-38" href="#__codelineno-11-38"></a>+ }
<a id="__codelineno-11-39" name="__codelineno-11-39" href="#__codelineno-11-39"></a>+ }
<a id="__codelineno-11-40" name="__codelineno-11-40" href="#__codelineno-11-40"></a>}
</code></pre></div>
<p>Both a physical port <code>eth0</code> and a virtual port <code>veth0b</code> (bridge side of
the VETH pair from the previous example) are now bridged. Any traffic
ingressing one port will egress the other. Only reserved IEEE multicast
is filtered, except LLDP frames as shown above.</p>
<blockquote>
<p><strong>Important</strong></p>
<p>The bridge can be named anything, provided the interface name is not
already taken. However, for any name outside the pattern <code>br[0-9]+</code>,
you have to set the interface type manually to <code>bridge</code>.</p>
</blockquote>
</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>