<!DOCTYPE html>
<html dir="ltr" lang="en-US" class="no-js">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<link rel="profile" href="https://gmpg.org/xfn/11">
	<link rel="pingback" href="https://ipnet.xyz/xmlrpc.php">
	<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
<title>IP Networks | Tech Blog</title>
	<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
	
		<!-- All in One SEO 4.7.8 - aioseo.com -->
	<meta name="description" content="Network Architect blog about Routing, Switching, Virtualization, Linux, Security technologies as well as Cisco and Juniper professional certifications." />
	<meta name="robots" content="max-image-preview:large" />
	<link rel="canonical" href="https://ipnet.xyz/" />
	<link rel="next" href="https://ipnet.xyz/page/2/" />
	<meta name="generator" content="All in One SEO (AIOSEO) 4.7.8" />
		<script type="application/ld+json" class="aioseo-schema">
			{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/ipnet.xyz\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/ipnet.xyz\/#listItem","position":1,"name":"Home"}]},{"@type":"CollectionPage","@id":"https:\/\/ipnet.xyz\/#collectionpage","url":"https:\/\/ipnet.xyz\/","name":"IP Networks | Tech Blog","description":"Network Architect blog about Routing, Switching, Virtualization, Linux, Security technologies as well as Cisco and Juniper professional certifications.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/ipnet.xyz\/#website"},"breadcrumb":{"@id":"https:\/\/ipnet.xyz\/#breadcrumblist"},"about":{"@id":"https:\/\/ipnet.xyz\/#organization"}},{"@type":"Organization","@id":"https:\/\/ipnet.xyz\/#organization","name":"IPNET","description":"Tech Blog","url":"https:\/\/ipnet.xyz\/","logo":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/ipnet.xyz\/wp-content\/uploads\/2018\/07\/ipnet_logo_248.png?fit=248%2C106&ssl=1","@id":"https:\/\/ipnet.xyz\/#organizationLogo","width":248,"height":106},"image":{"@id":"https:\/\/ipnet.xyz\/#organizationLogo"}},{"@type":"WebSite","@id":"https:\/\/ipnet.xyz\/#website","url":"https:\/\/ipnet.xyz\/","name":"IPNET","description":"Tech Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/ipnet.xyz\/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ipnet.xyz\/?s={search_term_string}"},"query-input":"required name=search_term_string"}}]}
		</script>
		<!-- All in One SEO -->

<!-- Jetpack Site Verification Tags -->
<meta name="google-site-verification" content="Nx4NEgvzmngfP0dUmGMwwoEZNbD-ImlmVDGAN1WA5zU" />
<meta name="msvalidate.01" content="61AE67611A18AB760031F1488857172C" />
<meta name="yandex-verification" content="8aa613c5261b0da0" />
<link rel='dns-prefetch' href='//secure.gravatar.com' />
<link rel='dns-prefetch' href='//stats.wp.com' />
<link rel='dns-prefetch' href='//v0.wordpress.com' />
<link rel='dns-prefetch' href='//jetpack.wordpress.com' />
<link rel='dns-prefetch' href='//s0.wp.com' />
<link rel='dns-prefetch' href='//public-api.wordpress.com' />
<link rel='dns-prefetch' href='//0.gravatar.com' />
<link rel='dns-prefetch' href='//1.gravatar.com' />
<link rel='dns-prefetch' href='//2.gravatar.com' />
<link rel='preconnect' href='//i0.wp.com' />
<link rel='preconnect' href='//c0.wp.com' />
<link rel="alternate" type="application/rss+xml" title="IPNET &raquo; Feed" href="https://ipnet.xyz/feed/" />
<link rel="alternate" type="application/rss+xml" title="IPNET &raquo; Comments Feed" href="https://ipnet.xyz/comments/feed/" />
<script id="wpp-js" src="https://ipnet.xyz/wp-content/plugins/wordpress-popular-posts/assets/js/wpp.min.js?ver=7.2.0" data-sampling="0" data-sampling-rate="100" data-api-url="https://ipnet.xyz/wp-json/wordpress-popular-posts" data-post-id="0" data-token="331252d69e" data-lang="0" data-debug="0"></script>
<script>
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/ipnet.xyz\/wp-includes\/js\/wp-emoji-release.min.js?ver=5383"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
</script>
<link rel='stylesheet' id='twentyfifteen-jetpack-css' href='https://c0.wp.com/p/jetpack/14.2.1/modules/theme-tools/compat/twentyfifteen.css' media='all' />
<link rel='stylesheet' id='the-neverending-homepage-css' href='https://c0.wp.com/p/jetpack/14.2.1/modules/infinite-scroll/infinity.css' media='all' />
<style id='wp-emoji-styles-inline-css'>

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
</style>
<link rel='stylesheet' id='wp-block-library-css' href='https://ipnet.xyz/wp-includes/css/dist/block-library/style.min.css?ver=5383' media='all' />
<style id='wp-block-library-theme-inline-css'>
.wp-block-audio :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio :where(figcaption){color:#ffffffa6}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed :where(figcaption){color:#ffffffa6}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:#ffffffa6}:root :where(.wp-block-image figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme :root :where(.wp-block-image figcaption){color:#ffffffa6}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote:where(.has-text-align-right){border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote:where(.has-text-align-center){border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote:where(.is-style-plain){border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table :where(figcaption){color:#ffffffa6}.wp-block-video :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video :where(figcaption){color:#ffffffa6}.wp-block-video{margin:0 0 1em}:root :where(.wp-block-template-part.has-background){margin-bottom:0;margin-top:0;padding:1.25em 2.375em}
</style>
<link rel='stylesheet' id='mediaelement-css' href='https://ipnet.xyz/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css?ver=4.2.17' media='all' />
<link rel='stylesheet' id='wp-mediaelement-css' href='https://ipnet.xyz/wp-includes/js/mediaelement/wp-mediaelement.min.css?ver=5383' media='all' />
<style id='jetpack-sharing-buttons-style-inline-css'>
.jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em}
</style>
<style id='classic-theme-styles-inline-css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css'>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--dark-gray: #111;--wp--preset--color--light-gray: #f1f1f1;--wp--preset--color--yellow: #f4ca16;--wp--preset--color--dark-brown: #352712;--wp--preset--color--medium-pink: #e53b51;--wp--preset--color--light-pink: #ffe5d1;--wp--preset--color--dark-purple: #2e2256;--wp--preset--color--purple: #674970;--wp--preset--color--blue-gray: #22313f;--wp--preset--color--bright-blue: #55c3dc;--wp--preset--color--light-blue: #e9f2f9;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--gradient--dark-gray-gradient-gradient: linear-gradient(90deg, rgba(17,17,17,1) 0%, rgba(42,42,42,1) 100%);--wp--preset--gradient--light-gray-gradient: linear-gradient(90deg, rgba(241,241,241,1) 0%, rgba(215,215,215,1) 100%);--wp--preset--gradient--white-gradient: linear-gradient(90deg, rgba(255,255,255,1) 0%, rgba(230,230,230,1) 100%);--wp--preset--gradient--yellow-gradient: linear-gradient(90deg, rgba(244,202,22,1) 0%, rgba(205,168,10,1) 100%);--wp--preset--gradient--dark-brown-gradient: linear-gradient(90deg, rgba(53,39,18,1) 0%, rgba(91,67,31,1) 100%);--wp--preset--gradient--medium-pink-gradient: linear-gradient(90deg, rgba(229,59,81,1) 0%, rgba(209,28,51,1) 100%);--wp--preset--gradient--light-pink-gradient: linear-gradient(90deg, rgba(255,229,209,1) 0%, rgba(255,200,158,1) 100%);--wp--preset--gradient--dark-purple-gradient: linear-gradient(90deg, rgba(46,34,86,1) 0%, rgba(66,48,123,1) 100%);--wp--preset--gradient--purple-gradient: linear-gradient(90deg, rgba(103,73,112,1) 0%, rgba(131,93,143,1) 100%);--wp--preset--gradient--blue-gray-gradient: linear-gradient(90deg, rgba(34,49,63,1) 0%, rgba(52,75,96,1) 100%);--wp--preset--gradient--bright-blue-gradient: linear-gradient(90deg, rgba(85,195,220,1) 0%, rgba(43,180,211,1) 100%);--wp--preset--gradient--light-blue-gradient: linear-gradient(90deg, rgba(233,242,249,1) 0%, rgba(193,218,238,1) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='CbCss-css' href='https://ipnet.xyz/wp-content/plugins/responsive-cookie-banner/css/rcb.css?ver=5383' media='all' />
<link rel='stylesheet' id='wordpress-popular-posts-css-css' href='https://ipnet.xyz/wp-content/plugins/wordpress-popular-posts/assets/css/wpp.css?ver=7.2.0' media='all' />
<link rel='stylesheet' id='wp-syntax-css-css' href='https://ipnet.xyz/wp-content/plugins/wp-syntax/css/wp-syntax.css?ver=1.2' media='all' />
<link rel='stylesheet' id='twentyfifteen-fonts-css' href='https://ipnet.xyz/wp-content/themes/twentyfifteen/assets/fonts/noto-sans-plus-noto-serif-plus-inconsolata.css?ver=20230328' media='all' />
<link rel='stylesheet' id='genericons-css' href='https://c0.wp.com/p/jetpack/14.2.1/_inc/genericons/genericons/genericons.css' media='all' />
<link rel='stylesheet' id='twentyfifteen-style-css' href='https://ipnet.xyz/wp-content/themes/twentyfifteen/style.css?ver=20241112' media='all' />
<link rel='stylesheet' id='twentyfifteen-block-style-css' href='https://ipnet.xyz/wp-content/themes/twentyfifteen/css/blocks.css?ver=20240715' media='all' />
<link rel='stylesheet' id='tiled-gallery-css' href='https://c0.wp.com/p/jetpack/14.2.1/modules/tiled-gallery/tiled-gallery/tiled-gallery.css' media='all' />
<link rel='stylesheet' id='jetpack-subscriptions-css' href='https://c0.wp.com/p/jetpack/14.2.1/modules/subscriptions/subscriptions.css' media='all' />
<link rel='stylesheet' id='slb_core-css' href='https://ipnet.xyz/wp-content/plugins/simple-lightbox/client/css/app.css?ver=2.9.3' media='all' />
<link rel='stylesheet' id='infinity-twentyfifteen-css' href='https://c0.wp.com/p/jetpack/14.2.1/modules/infinite-scroll/themes/twentyfifteen.css' media='all' />
<link rel='stylesheet' id='enlighterjs-css' href='https://ipnet.xyz/wp-content/plugins/enlighter/cache/enlighterjs.min.css?ver=5vMd9mVcnP3MgP5' media='all' />
<script src="https://ipnet.xyz/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script src="https://ipnet.xyz/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<script src="https://ipnet.xyz/wp-content/plugins/responsive-cookie-banner/js/jquery.rcb.js?ver=5383" id="CbJs-js"></script>
<script id="twentyfifteen-script-js-extra">
var screenReaderText = {"expand":"<span class=\"screen-reader-text\">expand child menu<\/span>","collapse":"<span class=\"screen-reader-text\">collapse child menu<\/span>"};
</script>
<script src="https://ipnet.xyz/wp-content/themes/twentyfifteen/js/functions.js?ver=20221101" id="twentyfifteen-script-js" defer data-wp-strategy="defer"></script>
<link rel="https://api.w.org/" href="https://ipnet.xyz/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://ipnet.xyz/xmlrpc.php?rsd" />
<link rel='shortlink' href='https://wp.me/rPGQ' />
	<style>img#wpstats{display:none}</style>
		            <style id="wpp-loading-animation-styles">@-webkit-keyframes bgslide{from{background-position-x:0}to{background-position-x:-200%}}@keyframes bgslide{from{background-position-x:0}to{background-position-x:-200%}}.wpp-widget-block-placeholder,.wpp-shortcode-placeholder{margin:0 auto;width:60px;height:3px;background:#dd3737;background:linear-gradient(90deg,#dd3737 0%,#571313 10%,#dd3737 100%);background-size:200% auto;border-radius:3px;-webkit-animation:bgslide 1s infinite linear;animation:bgslide 1s infinite linear}</style>
            <style>.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>		<style type="text/css" id="twentyfifteen-header-css">
				.site-header {
			padding-top: 14px;
			padding-bottom: 14px;
		}

		.site-branding {
			min-height: 42px;
		}

		@media screen and (min-width: 46.25em) {
			.site-header {
				padding-top: 21px;
				padding-bottom: 21px;
			}
			.site-branding {
				min-height: 56px;
			}
		}
		@media screen and (min-width: 55em) {
			.site-header {
				padding-top: 25px;
				padding-bottom: 25px;
			}
			.site-branding {
				min-height: 62px;
			}
		}
		@media screen and (min-width: 59.6875em) {
			.site-header {
				padding-top: 0;
				padding-bottom: 0;
			}
			.site-branding {
				min-height: 0;
			}
		}
					.site-title,
		.site-description {
			clip: rect(1px, 1px, 1px, 1px);
			position: absolute;
		}
		</style>
		<link rel="icon" href="https://i0.wp.com/ipnet.xyz/wp-content/uploads/2018/07/cropped-favicon.png?fit=32%2C32&#038;ssl=1" sizes="32x32" />
<link rel="icon" href="https://i0.wp.com/ipnet.xyz/wp-content/uploads/2018/07/cropped-favicon.png?fit=192%2C192&#038;ssl=1" sizes="192x192" />
<link rel="apple-touch-icon" href="https://i0.wp.com/ipnet.xyz/wp-content/uploads/2018/07/cropped-favicon.png?fit=180%2C180&#038;ssl=1" />
<meta name="msapplication-TileImage" content="https://i0.wp.com/ipnet.xyz/wp-content/uploads/2018/07/cropped-favicon.png?fit=270%2C270&#038;ssl=1" />
		<style id="wp-custom-css">
			.main-navigation li {
    border-top: 0px solid rgba(51,51, 51, 0.1);
}
.main-navigation ul {
    border-top: 0px solid rgba(51, 51, 51, 0.1);
    border-bottom: 0px solid rgba(51, 51, 51, 0.1);
}
.site-header {
    margin: 10% 0;
    margin-bottom: 3%;
}
.widget {
    margin: 0 0 10%;
    padding: 0 20%;
}
.main-navigation {
    margin: 0 20% 10%;
}
.hentry {
    padding-top: 3.3333%;
}
.site-main {
    padding: 3.3333% 0;
}
		</style>
		</head>

<body class="home blog wp-custom-logo wp-embed-responsive">
<div id="page" class="hfeed site">
	<a class="skip-link screen-reader-text" href="#content">
		Skip to content	</a>

	<div id="sidebar" class="sidebar">
		<header id="masthead" class="site-header">
			<div class="site-branding">
				<a href="https://ipnet.xyz/" class="custom-logo-link" rel="home" aria-current="page"><img width="248" height="106" src="https://i0.wp.com/ipnet.xyz/wp-content/uploads/2018/07/ipnet_logo_248.png?fit=248%2C106&amp;ssl=1" class="custom-logo" alt="IPNET" decoding="async" /></a>						<h1 class="site-title"><a href="https://ipnet.xyz/" rel="home">IPNET</a></h1>
											<p class="site-description">Tech Blog</p>
										<button class="secondary-toggle">Menu and widgets</button>
			</div><!-- .site-branding -->
		</header><!-- .site-header -->

			<div id="secondary" class="secondary">

					<nav id="site-navigation" class="main-navigation">
				<div class="menu-2018simplifiedmenu-container"><ul id="menu-2018simplifiedmenu" class="nav-menu"><li id="menu-item-5093" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-5093"><a href="https://ipnet.xyz/category/certification-2/">Certification</a></li>
<li id="menu-item-5254" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-5254"><a href="https://ipnet.xyz/category/networking/">Network Technologies</a></li>
<li id="menu-item-5255" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-5255"><a href="https://ipnet.xyz/category/virtualization-technology/">Virtualization</a></li>
<li id="menu-item-5258" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-5258"><a href="https://ipnet.xyz/category/security/">Security</a></li>
<li id="menu-item-5610" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-5610"><a href="https://ipnet.xyz/category/linux-2/">Linux</a></li>
<li id="menu-item-5256" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-5256"><a href="https://ipnet.xyz/category/useful-tools/">Tools</a></li>
<li id="menu-item-5257" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-5257"><a href="https://ipnet.xyz/category/media-info-communication/">News digest</a></li>
</ul></div>			</nav><!-- .main-navigation -->
		
		
					<div id="widget-area" class="widget-area" role="complementary">
				<aside id="search-4" class="widget widget_search"><form role="search" method="get" class="search-form" action="https://ipnet.xyz/">
				<label>
					<span class="screen-reader-text">Search for:</span>
					<input type="search" class="search-field" placeholder="Search &hellip;" value="" name="s" />
				</label>
				<input type="submit" class="search-submit screen-reader-text" value="Search" />
			</form></aside><aside id="lsi_widget-3" class="widget widget_lsi_widget"><h2 class="widget-title">Get to know me</h2><ul class="lsi-social-icons icon-set-lsi_widget-3" style="text-align: left"><li class="lsi-social-twitter"><a class="tooltip" rel="nofollow noopener noreferrer" title="Twitter" aria-label="Twitter" href="https://twitter.com/yotis" target="_blank"><i class="lsicon lsicon-twitter"></i></a></li><li class="lsi-social-linkedin"><a class="tooltip" rel="nofollow noopener noreferrer" title="LinkedIn" aria-label="LinkedIn" href="https://www.linkedin.com/in/calinchiorean" target="_blank"><i class="lsicon lsicon-linkedin"></i></a></li><li class="lsi-social-instagram"><a class="tooltip" rel="nofollow noopener noreferrer" title="Instagram" aria-label="Instagram" href="https://www.instagram.com/yotis/" target="_blank"><i class="lsicon lsicon-instagram"></i></a></li><li class="lsi-social-reddit"><a class="tooltip" rel="nofollow noopener noreferrer" title="Reddit" aria-label="Reddit" href="https://www.reddit.com/user/yotis/" target="_blank"><i class="lsicon lsicon-reddit"></i></a></li><li class="lsi-social-fivehundredpx"><a class="tooltip" rel="nofollow noopener noreferrer" title="500px" aria-label="500px" href="https://500px.com/yotis" target="_blank"><i class="lsicon lsicon-fivehundredpx"></i></a></li></ul></aside><aside id="blog_subscription-7" class="widget widget_blog_subscription jetpack_subscription_widget"><h2 class="widget-title">Subscribe to Blog via Email</h2>
			<div class="wp-block-jetpack-subscriptions__container">
			<form action="#" method="post" accept-charset="utf-8" id="subscribe-blog-blog_subscription-7"
				data-blog="6633556"
				data-post_access_level="everybody" >
									<p id="subscribe-email">
						<label id="jetpack-subscribe-label"
							class="screen-reader-text"
							for="subscribe-field-blog_subscription-7">
							Email Address						</label>
						<input type="email" name="email" required="required"
																					value=""
							id="subscribe-field-blog_subscription-7"
							placeholder="Email Address"
						/>
					</p>

					<p id="subscribe-submit"
											>
						<input type="hidden" name="action" value="subscribe"/>
						<input type="hidden" name="source" value="https://ipnet.xyz/"/>
						<input type="hidden" name="sub-type" value="widget"/>
						<input type="hidden" name="redirect_fragment" value="subscribe-blog-blog_subscription-7"/>
						<input type="hidden" id="_wpnonce" name="_wpnonce" value="068b52cb18" /><input type="hidden" name="_wp_http_referer" value="/" />						<button type="submit"
															class="wp-block-button__link"
																					name="jetpack_subscriptions_widget"
						>
							Subscribe						</button>
					</p>
							</form>
							<div class="wp-block-jetpack-subscriptions__subscount">
					Join 161 other subscribers				</div>
						</div>
			
</aside><aside id="top-posts-4" class="widget widget_top-posts"><h2 class="widget-title">Trending</h2><ul><li><a href="https://ipnet.xyz/2018/06/ines-ccie-rs-v5-topology-for-eve-ng/" class="bump-view" data-bump-view="tp">INE&#039;s CCIE R&amp;S v5 topology for EVE-NG</a></li><li><a href="https://ipnet.xyz/2022/10/cisco-wlap-and-wlc-failed-to-create-capwap-connection/" class="bump-view" data-bump-view="tp">Cisco WLAP and WLC fail to create CAPWAP connection</a></li><li><a href="https://ipnet.xyz/2022/11/ubuntu-20-04-image-for-eve-ng-python-for-network-engineers/" class="bump-view" data-bump-view="tp">Ubuntu 20.04 image for EVE-NG - Python for Network Engineers</a></li><li><a href="https://ipnet.xyz/2018/06/ubuntu-image-for-eve-ng-python-for-network-engineers/" class="bump-view" data-bump-view="tp">Ubuntu image for EVE-NG - Python for network engineers</a></li><li><a href="https://ipnet.xyz/2009/05/wiresharks-most-useful-display-filters/" class="bump-view" data-bump-view="tp">Wireshark&#039;s most useful display filters</a></li><li><a href="https://ipnet.xyz/2025/01/phpipam-in-docker-with-nginx-reverse-proxy/" class="bump-view" data-bump-view="tp">phpIPAM in Docker with Nginx reverse-proxy</a></li></ul></aside><aside id="pages-5" class="widget widget_pages"><h2 class="widget-title">Pages</h2><nav aria-label="Pages">
			<ul>
				<li class="page_item page-item-516"><a href="https://ipnet.xyz/contact-me/">Contact</a></li>
<li class="page_item page-item-5299"><a href="https://ipnet.xyz/privacy-policy/">Privacy Policy</a></li>
			</ul>

			</nav></aside>			</div><!-- .widget-area -->
		
	</div><!-- .secondary -->

	</div><!-- .sidebar -->

	<div id="content" class="site-content">

	<div id="primary" class="content-area">
		<main id="main" class="site-main">

		
			
			
<article id="post-27492" class="post-27492 post type-post status-publish format-standard has-post-thumbnail hentry category-virtualization-technology tag-all-in-one-elk-cluster tag-deploy-elk-9-0-2 tag-docker-compose-elk tag-elasticsearch tag-elk-cluster-on-docker tag-filebeat tag-how-to-deploy-elk-cluster tag-logstash tag-simple-way-to-deploy-elk">
	
	<a class="post-thumbnail" href="https://ipnet.xyz/2025/06/deploying-elk-stack-with-docker-compose-2025-edition/" aria-hidden="true">
		<img width="825" height="510" src="https://i0.wp.com/ipnet.xyz/wp-content/uploads/2025/06/image.png?resize=825%2C510&amp;ssl=1" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Deploying ELK Stack with Docker Compose (2025 Edition)" decoding="async" fetchpriority="high" />	</a>

		
	<header class="entry-header">
		<h2 class="entry-title"><a href="https://ipnet.xyz/2025/06/deploying-elk-stack-with-docker-compose-2025-edition/" rel="bookmark">Deploying ELK Stack with Docker Compose (2025 Edition)</a></h2>	</header><!-- .entry-header -->

	<div class="entry-content">
		
<h2 class="wp-block-heading"></h2>



<p>This guide walks you through installing and configuring the <strong><a href="https://www.elastic.co/elastic-stack/" target="_blank" rel="noopener" title="">ELK Stack</a> (<a href="https://www.elastic.co/elasticsearch" target="_blank" rel="noopener" title="">Elasticsearch</a>, <a href="https://www.elastic.co/logstash" target="_blank" rel="noopener" title="">Logstash</a>, <a href="https://www.elastic.co/kibana" target="_blank" rel="noopener" title="">Kibana</a>, </strong>and<strong> <a href="https://www.elastic.co/beats/filebeat" target="_blank" rel="noopener" title="">Filebeat</a>)</strong> using Docker Compose. It is fully updated for <strong>Elasticsearch 9.0.2</strong> and explains the necessary changes for versions <strong>8+ and above</strong>, including the required security setup and user permissions.</p>



<h2 class="wp-block-heading">Prerequisites</h2>



<p>Ensure you have the following installed on your system:</p>



<ul class="wp-block-list">
<li><strong>Docker</strong>: Install Docker Engine or Docker Desktop.</li>



<li><strong>Docker Compose</strong>: Typically included with Docker Desktop; otherwise, install it separately</li>
</ul>



<p>The folder structure for is as follows:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">elk-lab/
|-- .env
|-- docker-compose.yml
|-- logstash/
|   |-- pipeline/
|       |-- logstash.conf
|-- filebeat
|   |-- filebeat.yml
</pre>



<p>Start by creating your root folder structure</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">mkdir elk-docker &amp;&amp; cd elk-docker
mkdir -p logstash/pipeline
mkdir filebeat</pre>



<h3 class="wp-block-heading">Step 1: Prepare Your <code>.env</code> File</h3>



<p>Create a <code>.env</code> file in the root of your project directory:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">ELASTIC_USER=myadmin
ELASTIC_PASSWORD=mypassw0rd!</pre>



<p>For simplicity in this lab setup, all components share the same password. <strong>Do not use this setup in production.</strong></p>



<h3 class="wp-block-heading">Step 2: <code>docker-compose.yml</code></h3>



<p>Create a <code>docker-compose.yml</code> file:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="yaml" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:9.0.2
    container_name: elasticsearch
    environment:
      - node.name=elasticsearch
      - discovery.type=single-node
      - xpack.security.enabled=true
      - ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
    ports:
      - "9200:9200"
    volumes:
      - esdata:/usr/share/elasticsearch/data
    networks:
      - elk

  kibana:
    image: docker.elastic.co/kibana/kibana:9.0.2
    container_name: kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - ELASTICSEARCH_USERNAME=${ELASTIC_USER}
      - ELASTICSEARCH_PASSWORD=${ELASTIC_PASSWORD}
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    networks:
      - elk

  logstash:
    image: docker.elastic.co/logstash/logstash:9.0.2
    container_name: logstash
    environment:
      - xpack.monitoring.enabled=true
      - ELASTIC_USERNAME=${ELASTIC_USER}
      - ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
    ports:
      - "5044:5044"
    volumes:
      - ./logstash/pipeline:/usr/share/logstash/pipeline
    depends_on:
      - elasticsearch
    networks:
      - elk

  filebeat:
    image: docker.elastic.co/beats/filebeat:9.0.2
    container_name: filebeat
    user: root
    environment:
      - ELASTICSEARCH_USERNAME=${ELASTIC_USER}
      - ELASTICSEARCH_PASSWORD=${ELASTIC_PASSWORD}
    volumes:
      - /var/lib/docker/containers:/var/lib/docker/containers:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
    depends_on:
      - logstash
    networks:
      - elk
    command: ["--strict.perms=false"]

volumes:
  esdata:

networks:
  elk:</pre>



<h3 class="wp-block-heading">Step 3: Logstash Pipeline</h3>



<p>Create the Logstash pipeline file at <code>./logstash/pipeline/logstash.conf</code>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    user => "myadmin"
    password => "mypassw0rd!"
    index => "logstash-%{+YYYY.MM.dd}"
  }
}</pre>



<h3 class="wp-block-heading">Step 4: Filebeat Config</h3>



<p>Create the Filebeat config at <code>./filebeat/filebeat.yml</code> with this content:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">filebeat.inputs:
  - type: filestream
    id: my-container-logs
    enabled: true
    paths:
      - /var/lib/docker/containers/*/*.log
    parser:
      - docker

output.logstash:
  hosts: ["logstash:5044"]
  username: "${ELASTIC_USER}"
  password: "${FILEBEAT_PASSWORD}"

setup.kibana:
  host: "kibana:5601"
  username: "${ELASTIC_USER}"
  password: "${FILEBEAT_PASSWORD}"

# Optional for debugging
logging.level: info
logging.to_files: false</pre>



<p>Just a note: In this setup the Filebeat output to Logstash (not Elasticsearch) because in general I use ELK with netflow so I can work with more complex logs parsing. </p>



<p>If you chose to send Filebeat to Elasticsearch just adapt the fiebeat.yml file becasue the docker-compose.yml is already ready.</p>



<h3 class="wp-block-heading">Step 5: Start Elasticsearch Container Before Creating Users and Roles (Temporary Step)</h3>



<p>Before creating the custom user and roles, you <strong>must start at least the Elasticsearch container</strong> once to enable the security APIs.</p>



<p>Run this command in your project directory:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">docker compose up -d elasticsearch</pre>



<p>If this is the first time starting the container, Docker will first download the elasticsearch image.</p>



<p>Wait a minute for Elasticsearch to fully start and be ready to accept API calls. You can check logs with:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">docker logs -f elasticsearch</pre>



<p>Only after Elasticsearch is up and running, proceed with creating roles and users in the next step.</p>



<h3 class="wp-block-heading">Step 6: Create the Custom User and Roles</h3>



<p>As of version 8+, Kibana no longer allows login with the <code>elastic</code> user for Fleet and integrations. Instead, you must create a new superuser with additional privileges.</p>



<ol class="wp-block-list">
<li>Create a new role that allows access to restricted indices:</li>
</ol>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl -X POST http://localhost:9200/_security/role/kibana_system_access \
  -u elastic:mypassw0rd! \
  -H "Content-Type: application/json" \
  -d '{
    "cluster": ["all"],
    "indices": [
      {
        "names": [".kibana*", ".apm*"],
        "privileges": ["all"],
        "allow_restricted_indices": true
      }
    ]
  }'
</pre>



<p>2. Create a new superuser <code>myadmin</code>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">curl -X POST http://localhost:9200/_security/user/myadmin \
  -u elastic:mypassw0rd! \
  -H "Content-Type: application/json" \
  -d '{
    "password": "mypassw0rd!",
    "roles": ["superuser", "kibana_system_access"],
    "full_name": "Lab Admin"
  }'
</pre>



<p>After both commands usually there is an output which contains <code>{"created":true}</code> among other details. This is an indication that the role and user were created successfully.</p>



<h3 class="wp-block-heading">Step 7: Launch the Full Stack</h3>



<p>Now that the users and roles are created, start all services:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">docker compose up -d</pre>



<p>Access Kibana at:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">http://localhost:5601
</pre>



<p>For lab topics, use the IP address of your Docker host:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">http://docker_host_ip:5601
</pre>



<p>Use credentials:</p>



<ul class="wp-block-list">
<li><strong>Username:</strong> <code>myadmin</code></li>



<li><strong>Password:</strong> <code>mypasw00rd!</code></li>
</ul>



<h3 class="wp-block-heading">Notes</h3>



<ul class="wp-block-list">
<li><strong>Why not use the <code>elastic</code> user?</strong> Since v8+, the <code>elastic</code> user is intended for initial setup and API use only — <strong>not for logging into Kibana</strong>.</li>



<li><strong>Why grant access to restricted indices?</strong> Kibana uses internal system indices like <code>.kibana_*</code> and <code>.apm_*</code> that are restricted by default. Your user must explicitly have permissions to manage these indices.</li>



<li><strong>Why is security mandatory?</strong> Features such as <strong>Fleet</strong>, <strong>Integrations</strong>, and <strong>Kibana dashboards</strong> require security to be enabled, meaning all services must use authenticated users.</li>
</ul>



<p></p>
	</div><!-- .entry-content -->

	
	<footer class="entry-footer">
		<span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://ipnet.xyz/2025/06/deploying-elk-stack-with-docker-compose-2025-edition/" rel="bookmark"><time class="entry-date published" datetime="2025-06-08T10:29:20-07:00">June 8, 2025</time><time class="updated" datetime="2025-06-08T10:29:23-07:00">June 8, 2025</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://ipnet.xyz/category/virtualization-technology/" rel="category tag">Virtualization</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://ipnet.xyz/tag/all-in-one-elk-cluster/" rel="tag">all-in-one elk cluster</a>, <a href="https://ipnet.xyz/tag/deploy-elk-9-0-2/" rel="tag">deploy elk 9.0.2</a>, <a href="https://ipnet.xyz/tag/docker-compose-elk/" rel="tag">docker compose elk</a>, <a href="https://ipnet.xyz/tag/elasticsearch/" rel="tag">elasticsearch</a>, <a href="https://ipnet.xyz/tag/elk-cluster-on-docker/" rel="tag">elk cluster on docker</a>, <a href="https://ipnet.xyz/tag/filebeat/" rel="tag">filebeat</a>, <a href="https://ipnet.xyz/tag/how-to-deploy-elk-cluster/" rel="tag">how-to deploy elk cluster</a>, <a href="https://ipnet.xyz/tag/logstash/" rel="tag">logstash</a>, <a href="https://ipnet.xyz/tag/simple-way-to-deploy-elk/" rel="tag">simple way to deploy elk</a></span><span class="comments-link"><a href="https://ipnet.xyz/2025/06/deploying-elk-stack-with-docker-compose-2025-edition/#respond">Leave a comment<span class="screen-reader-text"> on Deploying ELK Stack with Docker Compose (2025 Edition)</span></a></span>			</footer><!-- .entry-footer -->

</article><!-- #post-27492 -->

<article id="post-26067" class="post-26067 post type-post status-publish format-standard hentry category-virtualization-technology tag-cointainer tag-docker tag-ipam tag-nginx tag-phpipam tag-reverse-proxy">
	
	<header class="entry-header">
		<h2 class="entry-title"><a href="https://ipnet.xyz/2025/01/phpipam-in-docker-with-nginx-reverse-proxy/" rel="bookmark">phpIPAM in Docker with Nginx reverse-proxy</a></h2>	</header><!-- .entry-header -->

	<div class="entry-content">
		
<p>I have a bit of a problem with this setup serving <a href="https://phpipam.net" target="_blank" rel="noopener" title="">phpIPAM</a> via <a href="https://nginx.org/" target="_blank" rel="noopener" title="">Nginx</a> reverse proxy, so I said to share the solution which works for me here maybe will help somebody out there.</p>



<p>I installed phpIPAM as <a href="https://www.docker.com" target="_blank" rel="noopener" title="">Docker</a> container following the instructions here: <a href="https://github.com/phpipam-docker/phpipam-docker" target="_blank" rel="noopener" title="">https://github.com/phpipam-docker/phpipam-docker</a>. </p>



<p>Using it via plain http was working OK, but I want to use https for a various of reasons. Security is important, but this being a type of home.lab deployment, I wasn&#8217;t that concern about somebody &#8220;sniffing&#8221; on my plain http traffic. The annoying part that I use a Chromium based browser which insist to upgrade the http to https protocol, even when I type the URL with &#8220;http://ipam&#8230;&#8221;</p>



<p>I&#8217;ve installed Nginx (on a different machine) did a basic reverse proxy configuration using some self signed certificates. And here the problem started. I will not bore you with all the details, but the redirection was not working well, either it failed all together or the page appear broken with CSS not render correctly and other issues.</p>



<p>Here is what I had to do for a working solution.</p>



<p>On the Docker part (I assume you followed the phpIPAM Docker installation above or you&#8217;re familiar with the containerization solution) I had to add the following in the .env file:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""> - IPAM_DATABASE_HOST=phpipam-mariadb
 - IPAM_DATABASE_PASS=my_secret_phpipam_pass
 - IPAM_DATABASE_WEBHOST=%
 - TZ=yourtimezone
 - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 - IPAM_TRUST_X_FORWARD=yes
 - IPAM_DISABLE_INSTALLER=1</pre>



<p>Not every line above is relevant for solving the reverse proxy issue, but I chose to share all what I have there. The IPAM_TRUST_X_FORWARD is important for this topic.</p>



<p>Below is what I have in the Nginx config file:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">server {
    listen 9443 ssl; # Change to whatever port you're using here
    server_name ipam.home.lab; # replace with your domain

    ssl_certificate /etc/ssl/private/ipam.home.lab.crt;
    ssl_certificate_key /etc/ssl/private/ipam.home.lab.key;

    location / {
        proxy_pass http://phpipam-host.home.lab:81; # Replace with your IP / FQDN and port
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;

        # Add WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # Optionally, you can add additional configurations like error pages or logging here
}</pre>



<p>I haven&#8217;t notice yet any issue using the setup / configuration illustrated above. Let me know if you find this information useful.</p>
	</div><!-- .entry-content -->

	
	<footer class="entry-footer">
		<span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://ipnet.xyz/2025/01/phpipam-in-docker-with-nginx-reverse-proxy/" rel="bookmark"><time class="entry-date published" datetime="2025-01-18T21:30:18-08:00">January 18, 2025</time><time class="updated" datetime="2025-01-18T21:30:22-08:00">January 18, 2025</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://ipnet.xyz/category/virtualization-technology/" rel="category tag">Virtualization</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://ipnet.xyz/tag/cointainer/" rel="tag">cointainer</a>, <a href="https://ipnet.xyz/tag/docker/" rel="tag">docker</a>, <a href="https://ipnet.xyz/tag/ipam/" rel="tag">ipam</a>, <a href="https://ipnet.xyz/tag/nginx/" rel="tag">nginx</a>, <a href="https://ipnet.xyz/tag/phpipam/" rel="tag">phpipam</a>, <a href="https://ipnet.xyz/tag/reverse-proxy/" rel="tag">reverse proxy</a></span><span class="comments-link"><a href="https://ipnet.xyz/2025/01/phpipam-in-docker-with-nginx-reverse-proxy/#respond">Leave a comment<span class="screen-reader-text"> on phpIPAM in Docker with Nginx reverse-proxy</span></a></span>			</footer><!-- .entry-footer -->

</article><!-- #post-26067 -->

<article id="post-26003" class="post-26003 post type-post status-publish format-standard has-post-thumbnail hentry category-utilities tag-how-to tag-kerberos tag-kinit tag-klist tag-mac tag-mac-os tag-tickets">
	
	<a class="post-thumbnail" href="https://ipnet.xyz/2025/01/kerberos-tickets-on-mac-os/" aria-hidden="true">
		<img width="825" height="510" src="https://i0.wp.com/ipnet.xyz/wp-content/uploads/2025/01/image.png?resize=825%2C510&amp;ssl=1" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Kerberos tickets on Mac OS" decoding="async" />	</a>

		
	<header class="entry-header">
		<h2 class="entry-title"><a href="https://ipnet.xyz/2025/01/kerberos-tickets-on-mac-os/" rel="bookmark">Kerberos tickets on Mac OS</a></h2>	</header><!-- .entry-header -->

	<div class="entry-content">
		
<p>I&#8217;m using Mac at work and I found out that Kerberos needs sometimes a &#8220;kick&#8221; for the SSO to work properly. Sometimes after being offline the renewal of Kerberos ticket fails (especially when remote and connected via ZTA or VPN), even though everything looks alright in the &#8220;Ticket Viewer&#8221; app.</p>



<p>Here is we where the CLI came in handy, so I said to document the few steps here maybe somebody else needs them. Terminal app is your friend to go for the next lines.</p>



<p>To view the current Kerberos tickets:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">klist -v</pre>



<p>If there are no tickets, which I expect when I have a problem, there is an empty return</p>



<p>To request a ticket:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">kinit -V -p <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ca8b8e95bfb9afb8a4aba7af8a8f928b879a868fe4898587">[email&#160;protected]</a></pre>



<p>The return will request you to enter your password and announce that your ticket request is placed:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3170756e444254435f505c54717469707c617d741f727e7c">[email&#160;protected]</a>'s password:
Placing tickets for '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1e5f5a416b6d7b6c707f737b5e5b465f534e525b305d5153">[email&#160;protected]</a>' in cache 'API:AAAAAAAA-BBBB-CCCC-DDDD-CCCCCCCCCCCC'</pre>



<p>Sometimes you may need to use a specific AD Domain Controller server and while the output is the same like above, the command line needs to change (below I use the FQDN, but IP will work as well):</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">kinit --kdc-hostname=AD-DC-SERVER.EXAMPLE.COM -V -p <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3475706b414751465a55595174716c75796478711a777b79">[email&#160;protected]</a></pre>



<p>Now you should see a ticket issued:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">klist -v
Credentials cache: API:AAAAAAAA-BBBB-CCCC-DDDD-CCCCCCCCCCCC
        Principal: <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cc8d8893b9bfa9bea2ada1a98c89948d819c8089e28f8381">[email&#160;protected]</a>
    Cache version: 0

Server: krbtgt/<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="25607d64687569600b666a6865607d64687569600b666a68">[email&#160;protected]</a>
Client: <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0544415a707660776b64686045405d44485549402b464a48">[email&#160;protected]</a>
Ticket etype: aes256-cts-hmac-sha1-96, kvno 15
Ticket length: 4992
Auth time:  Jan 14 06:42:56 2025
End time:   Jan 14 16:42:50 2025
Ticket flags: enc-pa-rep, pre-authent, initial, proxiable, forwardable
Addresses: addressless</pre>



<p>I hope you&#8217;ll find this useful if in need.</p>
	</div><!-- .entry-content -->

	
	<footer class="entry-footer">
		<span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://ipnet.xyz/2025/01/kerberos-tickets-on-mac-os/" rel="bookmark"><time class="entry-date published" datetime="2025-01-14T16:50:34-08:00">January 14, 2025</time><time class="updated" datetime="2025-01-14T16:50:38-08:00">January 14, 2025</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://ipnet.xyz/category/useful-tools/utilities/" rel="category tag">Utilities</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://ipnet.xyz/tag/how-to/" rel="tag">how-to</a>, <a href="https://ipnet.xyz/tag/kerberos/" rel="tag">Kerberos</a>, <a href="https://ipnet.xyz/tag/kinit/" rel="tag">kinit</a>, <a href="https://ipnet.xyz/tag/klist/" rel="tag">klist</a>, <a href="https://ipnet.xyz/tag/mac/" rel="tag">mac</a>, <a href="https://ipnet.xyz/tag/mac-os/" rel="tag">Mac OS</a>, <a href="https://ipnet.xyz/tag/tickets/" rel="tag">tickets</a></span><span class="comments-link"><a href="https://ipnet.xyz/2025/01/kerberos-tickets-on-mac-os/#respond">Leave a comment<span class="screen-reader-text"> on Kerberos tickets on Mac OS</span></a></span>			</footer><!-- .entry-footer -->

</article><!-- #post-26003 -->

<article id="post-22539" class="post-22539 post type-post status-publish format-standard hentry category-certification-2 category-linux-2 category-virtualization-technology tag-github tag-gns3 tag-gns3-appliance tag-learn-and-play tag-lfne tag-linux-for-network-engineers tag-network-engineers-skills">
	
	<header class="entry-header">
		<h2 class="entry-title"><a href="https://ipnet.xyz/2023/11/lfne-gns3-appliances/" rel="bookmark">LFNE GNS3 Appliances</a></h2>	</header><!-- .entry-header -->

	<div class="entry-content">
		
<p>This post will be a very short one, more like a note :)</p>



<p>Based on the LFNE Docker images (explained here <a href="https://ipnet.xyz/2023/11/lfne-linux-for-network-engineers" target="_blank" rel="noopener" title="">https://ipnet.xyz/2023/11/lfne-linux-for-network-engineers</a>) I&#8217;ve created the GNS3 Appliances for easy import into GNS3.</p>



<p>The GNS3 Appliances can be downloaded here <a href="https://github.com/yotis1982/lfne" target="_blank" rel="noopener" title="">https://github.com/yotis1982/lfne</a> and imported into GNS3.</p>



<p>Have fun!</p>
	</div><!-- .entry-content -->

	
	<footer class="entry-footer">
		<span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://ipnet.xyz/2023/11/lfne-gns3-appliances/" rel="bookmark"><time class="entry-date published" datetime="2023-11-23T09:03:18-08:00">November 23, 2023</time><time class="updated" datetime="2023-11-23T09:03:20-08:00">November 23, 2023</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://ipnet.xyz/category/certification-2/" rel="category tag">Certification</a>, <a href="https://ipnet.xyz/category/linux-2/" rel="category tag">Linux</a>, <a href="https://ipnet.xyz/category/virtualization-technology/" rel="category tag">Virtualization</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://ipnet.xyz/tag/github/" rel="tag">Github</a>, <a href="https://ipnet.xyz/tag/gns3/" rel="tag">GNS3</a>, <a href="https://ipnet.xyz/tag/gns3-appliance/" rel="tag">GNS3 Appliance</a>, <a href="https://ipnet.xyz/tag/learn-and-play/" rel="tag">learn and play</a>, <a href="https://ipnet.xyz/tag/lfne/" rel="tag">lfne</a>, <a href="https://ipnet.xyz/tag/linux-for-network-engineers/" rel="tag">linux for network engineers</a>, <a href="https://ipnet.xyz/tag/network-engineers-skills/" rel="tag">network engineers skills</a></span><span class="comments-link"><a href="https://ipnet.xyz/2023/11/lfne-gns3-appliances/#respond">Leave a comment<span class="screen-reader-text"> on LFNE GNS3 Appliances</span></a></span>			</footer><!-- .entry-footer -->

</article><!-- #post-22539 -->

<article id="post-22510" class="post-22510 post type-post status-publish format-standard hentry category-linux-2 category-virtualization-technology tag-iproute2 tag-lfne tag-linux-for-network-engineers tag-linux-tools tag-lnfe tag-napalm-installation tag-network-engineers-tools tag-paramiko-install">
	
	<header class="entry-header">
		<h2 class="entry-title"><a href="https://ipnet.xyz/2023/11/lfne-linux-for-network-engineers/" rel="bookmark">LFNE &#8211; Linux For Network Engineers</a></h2>	</header><!-- .entry-header -->

	<div class="entry-content">
		
<p>Formerly known as PFNE &#8211; Python For Network Engineer, the images developed to be more than just for Python learning. My choice was to call the new one more generic and pick the Linux For Network Engineers (LFNE)</p>



<p>Linux images build with all tools need by network engineers to perform various tasks ranging from simple python script to automation and testing.<br />Below is the list of installed applications on LFNE images. Pull one and start experimenting.</p>



<p>I’m using two main distributions to build these images &#8211; Ubuntu and AlmaLinux &#8211; pick your favorite flavor. I picked AlmaLinux as is the closest distribution to now (almost) defunct Centos.</p>



<p><strong>LFNE based on Ubuntu 22.04</strong></p>



<p>Pull the image:<br /><code data-enlighter-language="raw" class="EnlighterJSRAW">docker pull yotis/lfne:ubuntu-22.04</code><br />Use the image:<br /><code data-enlighter-language="raw" class="EnlighterJSRAW">docker run -i -t yotis/lfne:ubuntu-22.04 /bin/bash</code><br />If used with Portainer don’t forget to activate the option for Console : Interactive &amp; TTY</p>



<p><strong>LFNE based on AlmaLinux 9.2</strong></p>



<p>Pull the image:<br /><code data-enlighter-language="raw" class="EnlighterJSRAW">docker pull yotis/lfne:almalinux-9.2</code><br />Use the image:<br /><code data-enlighter-language="raw" class="EnlighterJSRAW">docker run -i -t yotis/lfne:almalinux-9.2 /bin/bash</code> <br />If used with Portainer don’t forget to activate the option for Console : Interactive &amp; TTY</p>



<p>Some of the installed packages:</p>



<p><em>Openssl</em><br /><em>Net-tools (ifconfig…)</em><br /><em>IPutils (ping, arping, traceroute…)</em><br /><em>Socat</em><br /><em>Host (DNS lookup tool)</em><br /><em>Mtr (traceroute tool)</em><br /><em>Telnet / SSH client</em><br /><em>IProute2</em><br /><em>IPerf (traffic generator)</em><br /><em>TCPDump</em><br /><em>Nmap</em><br /><em>Python 2 (only on Ubuntu variant)</em><br /><em>Python 3</em><br /><em>Paramiko</em><br /><em>Netmiko</em><br /><em>Ansible</em><br /><em>Pyntc</em><br /><em>Napalm</em><br /><em>Openssh Server</em></p>



<p>To use remote ssh connection to container</p>



<ul class="wp-block-list">
<li>Enable it with “service ssh start”</li>



<li>Expose the desired port for the container (tcp/22 default)</li>
</ul>
	</div><!-- .entry-content -->

	
	<footer class="entry-footer">
		<span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://ipnet.xyz/2023/11/lfne-linux-for-network-engineers/" rel="bookmark"><time class="entry-date published" datetime="2023-11-22T23:05:58-08:00">November 22, 2023</time><time class="updated" datetime="2023-11-23T08:57:45-08:00">November 23, 2023</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://ipnet.xyz/category/linux-2/" rel="category tag">Linux</a>, <a href="https://ipnet.xyz/category/virtualization-technology/" rel="category tag">Virtualization</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://ipnet.xyz/tag/iproute2/" rel="tag">iproute2</a>, <a href="https://ipnet.xyz/tag/lfne/" rel="tag">lfne</a>, <a href="https://ipnet.xyz/tag/linux-for-network-engineers/" rel="tag">linux for network engineers</a>, <a href="https://ipnet.xyz/tag/linux-tools/" rel="tag">linux tools</a>, <a href="https://ipnet.xyz/tag/lnfe/" rel="tag">LNFE</a>, <a href="https://ipnet.xyz/tag/napalm-installation/" rel="tag">napalm installation</a>, <a href="https://ipnet.xyz/tag/network-engineers-tools/" rel="tag">network engineers tools</a>, <a href="https://ipnet.xyz/tag/paramiko-install/" rel="tag">paramiko install</a></span><span class="comments-link"><a href="https://ipnet.xyz/2023/11/lfne-linux-for-network-engineers/#respond">Leave a comment<span class="screen-reader-text"> on LFNE &#8211; Linux For Network Engineers</span></a></span>			</footer><!-- .entry-footer -->

</article><!-- #post-22510 -->

	<nav class="navigation pagination" aria-label="Posts pagination">
		<h2 class="screen-reader-text">Posts pagination</h2>
		<div class="nav-links"><span aria-current="page" class="page-numbers current"><span class="meta-nav screen-reader-text">Page </span>1</span>
<a class="page-numbers" href="https://ipnet.xyz/page/2/"><span class="meta-nav screen-reader-text">Page </span>2</a>
<span class="page-numbers dots">&hellip;</span>
<a class="page-numbers" href="https://ipnet.xyz/page/66/"><span class="meta-nav screen-reader-text">Page </span>66</a>
<a class="next page-numbers" href="https://ipnet.xyz/page/2/">Next page</a></div>
	</nav>
		</main><!-- .site-main -->
	</div><!-- .content-area -->


	</div><!-- .site-content -->

	<footer id="colophon" class="site-footer">
		<div class="site-info">
						<a class="privacy-policy-link" href="https://ipnet.xyz/privacy-policy/" rel="privacy-policy">Privacy Policy</a><span role="separator" aria-hidden="true"></span>			<a href="https://wordpress.org/" class="imprint">
				Proudly powered by WordPress			</a>
		</div><!-- .site-info -->
	</footer><!-- .site-footer -->

</div><!-- .site -->

		<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script type="text/javascript">
		var infiniteScroll = {"settings":{"id":"main","ajaxurl":"https:\/\/ipnet.xyz\/?infinity=scrolling","type":"scroll","wrapper":true,"wrapper_class":"infinite-wrap","footer":"page","click_handle":"1","text":"Older posts","totop":"Scroll back to top","currentday":"22.11.23","order":"DESC","scripts":[],"styles":[],"google_analytics":false,"offset":1,"history":{"host":"ipnet.xyz","path":"\/page\/%d\/","use_trailing_slashes":true,"parameters":""},"query_args":{"error":"","m":"","p":0,"post_parent":"","subpost":"","subpost_id":"","attachment":"","attachment_id":0,"name":"","pagename":"","page_id":0,"second":"","minute":"","hour":"","day":0,"monthnum":0,"year":0,"w":0,"category_name":"","tag":"","cat":"","tag_id":"","author":"","author_name":"","feed":"","tb":"","paged":0,"meta_key":"","meta_value":"","preview":"","s":"","sentence":"","title":"","fields":"","menu_order":"","embed":"","category__in":[],"category__not_in":[],"category__and":[],"post__in":[],"post__not_in":[],"post_name__in":[],"tag__in":[],"tag__not_in":[],"tag__and":[],"tag_slug__in":[],"tag_slug__and":[],"post_parent__in":[],"post_parent__not_in":[],"author__in":[],"author__not_in":[],"search_columns":[],"posts_per_page":5,"ignore_sticky_posts":false,"suppress_filters":false,"cache_results":true,"update_post_term_cache":true,"update_menu_item_cache":false,"lazy_load_term_meta":true,"update_post_meta_cache":true,"post_type":"","nopaging":false,"comments_per_page":"50","no_found_rows":false,"order":"DESC"},"query_before":"2025-07-11 14:06:47","last_post_date":"2023-11-22 23:05:58","body_class":"infinite-scroll neverending","loading_text":"Loading new page","stats":"blog=6633556&host=ipnet.xyz&v=ext&j=1:14.2.1&x_pagetype=infinite-jetpack"}};
		</script>
		
<div id="cookie-banner">
	<div id="cookie-banner-container">

		<div class="left">
				My blog uses cookies. By using this blog and agreeing to this policy, you consent to use of cookies.		</div>

		<div class="right">

				<a class="accept" href="#">ACCEPT</a>

				<a class="more-info" href="http://www.cookielaw.org/the-cookie-law/"
					
					target="blank"
					>

					MORE INFO				</a>
		</div>

	</div>
</div>

		<div id="infinite-footer">
			<div class="container">
				<div class="blog-info">
					<a id="infinity-blog-title" href="https://ipnet.xyz/" rel="home">
						IPNET					</a>
				</div>
				<div class="blog-credits">
					<a class="privacy-policy-link" href="https://ipnet.xyz/privacy-policy/" rel="privacy-policy">Privacy Policy</a><span role="separator" aria-hidden="true"> / </span><a href="https://wordpress.org/" rel="noopener noreferrer" target="_blank" rel="generator">Proudly powered by WordPress</a> Theme: Twenty Fifteen.				</div>
			</div>
		</div><!-- #infinite-footer -->
		<link rel='stylesheet' id='lsi-style-css' href='https://ipnet.xyz/wp-content/plugins/lightweight-social-icons/css/style-min.css?ver=1.1' media='all' />
<style id='lsi-style-inline-css'>
.icon-set-lsi_widget-3 a,
			.icon-set-lsi_widget-3 a:visited,
			.icon-set-lsi_widget-3 a:focus {
				border-radius: 2px;
				background: #333333 !important;
				color: #FFFFFF !important;
				font-size: 20px !important;
			}

			.icon-set-lsi_widget-3 a:hover {
				background: #777777 !important;
				color: #FFFFFF !important;
			}
</style>
<link rel='stylesheet' id='jetpack-top-posts-widget-css' href='https://c0.wp.com/p/jetpack/14.2.1/modules/widgets/top-posts/style.css' media='all' />
<script src="https://c0.wp.com/p/jetpack/14.2.1/_inc/build/infinite-scroll/infinity.min.js" id="the-neverending-homepage-js"></script>
<script src="https://ipnet.xyz/wp-content/plugins/wp-syntax/js/wp-syntax.js?ver=1.2" id="wp-syntax-js-js"></script>
<script src="https://c0.wp.com/p/jetpack/14.2.1/_inc/build/tiled-gallery/tiled-gallery/tiled-gallery.min.js" id="tiled-gallery-js" defer data-wp-strategy="defer"></script>
<script src="https://ipnet.xyz/wp-content/plugins/enlighter/cache/enlighterjs.min.js?ver=5vMd9mVcnP3MgP5" id="enlighterjs-js"></script>
<script id="enlighterjs-js-after">
!function(e,n){if("undefined"!=typeof EnlighterJS){var o={"selectors":{"block":"pre.EnlighterJSRAW","inline":"code.EnlighterJSRAW"},"options":{"indent":2,"ampersandCleanup":true,"linehover":true,"rawcodeDbclick":false,"textOverflow":"break","linenumbers":false,"theme":"atomic","language":"raw","retainCssClasses":false,"collapse":false,"toolbarOuter":"","toolbarTop":"{BTN_RAW}{BTN_COPY}{BTN_WINDOW}{BTN_WEBSITE}","toolbarBottom":""}};(e.EnlighterJSINIT=function(){EnlighterJS.init(o.selectors.block,o.selectors.inline,o.options)})()}else{(n&&(n.error||n.log)||function(){})("Error: EnlighterJS resources not loaded yet!")}}(window,console);
!function(n){"undefined"!=typeof jQuery&&jQuery(document.body).on("post-load",function(){"undefined"!=typeof EnlighterJSINIT&&n.setTimeout(function(){EnlighterJSINIT.apply(n)},180)})}(window);
</script>
<script src="https://stats.wp.com/e-202528.js" id="jetpack-stats-js" data-wp-strategy="defer"></script>
<script id="jetpack-stats-js-after">
_stq = window._stq || [];
_stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"6633556\",\"post\":\"0\",\"tz\":\"-7\",\"srv\":\"ipnet.xyz\",\"j\":\"1:14.2.1\"}") ]);
_stq.push([ "clickTrackerInit", "6633556", "0" ]);
</script>
<script src="https://ipnet.xyz/wp-content/plugins/lightweight-social-icons/js/jquery.tooltipster.min.js?ver=1.1" id="lsi-tooltipster-js"></script>
		<script type="text/javascript">
			(function() {
				var extend = function(out) {
					out = out || {};

					for (var i = 1; i < arguments.length; i++) {
						if (!arguments[i])
						continue;

						for (var key in arguments[i]) {
						if (arguments[i].hasOwnProperty(key))
							out[key] = arguments[i][key];
						}
					}

					return out;
				};
				extend( window.infiniteScroll.settings.scripts, ["jquery-core","jquery-migrate","jquery","CbJs","twentyfifteen-script","the-neverending-homepage","wp-syntax-js","tiled-gallery","enlighterjs","jetpack-stats","lsi-tooltipster"] );
				extend( window.infiniteScroll.settings.styles, ["twentyfifteen-jetpack","the-neverending-homepage","wp-emoji-styles","wp-block-library","wp-block-library-theme","videopress-video-style","mediaelement","wp-mediaelement","jetpack-sharing-buttons-style","classic-theme-styles","global-styles","CbCss","wordpress-popular-posts-css","wp-syntax-css","twentyfifteen-fonts","genericons","twentyfifteen-style","twentyfifteen-block-style","tiled-gallery","jetpack-subscriptions","slb_core","infinity-twentyfifteen","enlighterjs","lsi-style","jetpack-top-posts-widget","core-block-supports-duotone"] );
			})();
		</script>
				<span id="infinite-aria" aria-live="polite"></span>
		<script type="text/javascript" id="slb_context">/* <![CDATA[ */if ( !!window.jQuery ) {(function($){$(document).ready(function(){if ( !!window.SLB ) { {$.extend(SLB, {"context":["public","user_guest"]});} }})})(jQuery);}/* ]]> */</script>

</body>
</html>
