<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ampr.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KI5QKX</id>
	<title>44Net Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ampr.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KI5QKX"/>
	<link rel="alternate" type="text/html" href="https://wiki.ampr.org/wiki/Special:Contributions/KI5QKX"/>
	<updated>2026-10-21T14:17:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Provisioning_Methods&amp;diff=3147</id>
		<title>Provisioning Methods</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Provisioning_Methods&amp;diff=3147"/>
		<updated>2026-10-19T15:29:45Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Provisioning Methods}}&lt;br /&gt;
&lt;br /&gt;
44Net provides address resources and ways to connect amateur radio projects. You can use a service that supplies connectivity, participate in a community network, or request address space for a network whose connectivity you arrange.&lt;br /&gt;
&lt;br /&gt;
This page helps you choose what your project needs and where to start. New here? See [[GetStarted|Getting started]] for account setup.&lt;br /&gt;
&lt;br /&gt;
== IP networks and connectivity ==&lt;br /&gt;
&lt;br /&gt;
=== 44Net Connect ===&lt;br /&gt;
&lt;br /&gt;
[[44Net Connect]] gives your device or network public IP addresses through a WireGuard tunnel over your existing Internet connection. ARDC operates the Connect endpoints; you maintain your device or gateway, its routing, and its firewall.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Includes:&#039;&#039;&#039; Addresses and a WireGuard tunnel, with routed subnets available through the Connect dashboard. You do not need to request address space separately in the Portal before creating a tunnel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; Internet access and a device or router that supports WireGuard. Connect works behind NAT and CGNAT, provided your connection allows WireGuard traffic to reach the endpoint.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Start here:&#039;&#039;&#039; [[44Net Connect|Choose a single-device or routed-subnet setup]], then sign in to the [https://connect.44net.cloud/ Connect dashboard] with your Portal account.&lt;br /&gt;
&lt;br /&gt;
=== IPIP Mesh ===&lt;br /&gt;
&lt;br /&gt;
The [[IPIP Mesh]] connects participating amateur radio networks through IP-in-IP tunnels. You can operate your own gateway or ask an existing participating network about connecting through its infrastructure. ARDC supports the Mesh and operates a shared Internet gateway; participants operate their own gateways and networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Includes:&#039;&#039;&#039; An address assignment for Mesh use. For your own gateway, you register its endpoint and subnet in the Portal and configure tunnels and routes to other Mesh networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; An IPIP-capable gateway, a reachable public IPv4 endpoint, and an Internet connection that permits IPIP (IP protocol 4). NAT and CGNAT are not supported. The Mesh does not provide general-purpose Internet access; see its overview for the limits of the shared Internet gateway.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Start here:&#039;&#039;&#039; [[IPIP Mesh|Check the requirements and choose how to participate]]. For your own gateway, [[Portal/Request Address Space|request a Mesh address assignment]] in the Portal.&lt;br /&gt;
&lt;br /&gt;
== Address space and registration ==&lt;br /&gt;
&lt;br /&gt;
=== Connectivity you arrange ===&lt;br /&gt;
&lt;br /&gt;
If you are building a network with your own connectivity, you can request 44Net address space for it. ARDC maintains the assignment and provides routing authorization where applicable. You and your network or upstream provider arrange how traffic reaches the addresses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Includes:&#039;&#039;&#039; An IP address assignment, a Letter of Authorization (LOA) for BGP announcements where applicable, and optional reverse DNS delegation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039; A network plan and your own connectivity. For a BGP-announced subnet, you need an upstream or routing arrangement that can announce it. Your provider may announce on your behalf, or you may operate BGP yourself, depending on that arrangement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Start here:&#039;&#039;&#039; [[Portal/Request Address Space|Request address space in the Portal]]. For Internet routing through a provider, read the [[BGP|BGP overview]] and [[BGP/Quick Start|BGP Quick Start]] before requesting service from an upstream. You may also want to review the [[Guide for ISPs|Guide for ISPs]].&lt;br /&gt;
&lt;br /&gt;
For these independently connected assignments, ARDC provides address resources and authorization. You and your provider are responsible for connectivity, routing, and transit.&lt;br /&gt;
&lt;br /&gt;
If you are joining an existing network, ask its operators how addresses and routing are arranged before requesting a separate assignment.&lt;br /&gt;
&lt;br /&gt;
== Supporting services ==&lt;br /&gt;
&lt;br /&gt;
=== DNS ===&lt;br /&gt;
&lt;br /&gt;
[[DNS]] gives names to your devices and services. You can request an ampr.org subdomain for your callsign, or a club or organization subdomain subject to review, and manage records beneath it.&lt;br /&gt;
&lt;br /&gt;
DNS can support projects using Connect, the Mesh, or independently arranged connectivity. A and AAAA records can point to addresses outside 44Net as well as to 44Net addresses.&lt;br /&gt;
&lt;br /&gt;
Reverse DNS for an address assignment is a separate facility from a callsign subdomain. Reverse DNS for 44Net Connect is not currently available.&lt;br /&gt;
&lt;br /&gt;
Reverse DNS delegation for eligible BGP subnets is available by request; [[DNS/Portal/Delegations#Reverse DNS (rDNS)|check the delegation requirements]] and open a support ticket in the Portal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Start here:&#039;&#039;&#039; [[DNS/Portal/Subdomains|Request and manage a subdomain in the Portal]].&lt;br /&gt;
&lt;br /&gt;
== Joining an existing project ==&lt;br /&gt;
&lt;br /&gt;
You may be able to participate through an independently operated network or project. Its operators determine how you join, what connectivity they provide, and what equipment or resources you need. Ask them whether you should request your own address assignment before applying for one.&lt;br /&gt;
&lt;br /&gt;
Independently operated networks such as HAMNET and HAMGATE use 44Net resources. Networks built with AREDN can also use 44Net addresses; ask the local operators what their network supports.&lt;br /&gt;
&lt;br /&gt;
== Choosing for your project ==&lt;br /&gt;
&lt;br /&gt;
=== If you want… ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A public address for a device or small network over an existing Internet connection:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Start with [[44Net Connect]]. It can work behind NAT and CGNAT.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Communication with networks on the IPIP Mesh:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check the [[IPIP Mesh|Mesh requirements]], or ask a participating network about joining through it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addresses for a network whose connectivity you arrange:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Portal/Request Address Space|Request address space]]. If an upstream will announce it to the Internet, follow the [[BGP/Quick Start|BGP guide]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Names for your devices or services:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use [[DNS]] alongside the connection you choose.&lt;br /&gt;
&lt;br /&gt;
These choices describe what your project needs, not a sequence of upgrades. A project may use more than one. Using 44Net addresses does not automatically make systems reachable from every other 44Net network; reachability depends on routing, service arrangements, and firewall rules.&lt;br /&gt;
&lt;br /&gt;
== Learn more ==&lt;br /&gt;
&lt;br /&gt;
* [[Portal/Introduction|Managing resources in the Portal]]&lt;br /&gt;
* [[Routing|Routing and connectivity]]&lt;br /&gt;
* [[Internet Requirements|Internet connection requirements]]&lt;br /&gt;
* [[Get Help|Getting help]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=MediaWiki:Common.css&amp;diff=3118</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=MediaWiki:Common.css&amp;diff=3118"/>
		<updated>2026-10-06T03:12:03Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Allow Vector header to fit mobile screen widths&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Let the Vector header fit mobile screens below its 500px minimum. */&lt;br /&gt;
@media screen and (max-width: 999px) {&lt;br /&gt;
  .skin-vector-2022.skin--responsive .vector-header-container .mw-header {&lt;br /&gt;
    min-width: 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Keep images from escaping their enclosures */&lt;br /&gt;
img {&lt;br /&gt;
  max-width: 100%;&lt;br /&gt;
  height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main page overrides */&lt;br /&gt;
body.page-Main_Page main header.mw-body-header,&lt;br /&gt;
body.page-Main_Page div.vector-page-toolbar {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Legacy landing page styles (keep as-is until you retire it) --- */&lt;br /&gt;
&lt;br /&gt;
.landing-page .section span.button a {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.5em 1.5em;&lt;br /&gt;
  background-color: rgb(177, 224, 223);&lt;br /&gt;
  color: black;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
  border-radius: 5px;&lt;br /&gt;
  font-size: 1rem;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.landing-page .section h1,&lt;br /&gt;
.landing-page .section h2 {&lt;br /&gt;
  font-family: Arial, Helvetica, sans-serif !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  border: 0;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .section h1 { margin: 0; }&lt;br /&gt;
.landing-page .section h2 { margin: 0 0 0.55em 0; }&lt;br /&gt;
&lt;br /&gt;
/* Section box base */&lt;br /&gt;
.landing-page .section {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
  margin: 8em 0;&lt;br /&gt;
  padding-right: 3em;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .section &amp;gt; div { padding: 2em 0; }&lt;br /&gt;
.landing-page .section .left  { flex: 3; min-width: 350px; }&lt;br /&gt;
.landing-page .section .right { flex: 2; min-width: 350px; }&lt;br /&gt;
.landing-page .section p { font-size: 1.2rem; }&lt;br /&gt;
&lt;br /&gt;
/* Hero box overrides */&lt;br /&gt;
.landing-page .hero-box { padding-right: 0; }&lt;br /&gt;
.landing-page .hero-box h1 {&lt;br /&gt;
  font-size: 4rem;&lt;br /&gt;
  line-height: 1.0;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .hero-box .tagline {&lt;br /&gt;
  font-size: 1.2rem;&lt;br /&gt;
  line-height: 1.8;&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
  color: rgba(50, 60, 60, 0.8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Landing page intro box */&lt;br /&gt;
.landing-page .intro {&lt;br /&gt;
  padding: 2em;&lt;br /&gt;
  border: 2px solid rgb(177, 224, 223);&lt;br /&gt;
}&lt;br /&gt;
.landing-page .intro .label {&lt;br /&gt;
  font-family: Arial, Helvetica, sans-serif !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  font-size: 1.2rem;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .intro p { font-size: 1.6rem; }&lt;br /&gt;
&lt;br /&gt;
/* Button strip */&lt;br /&gt;
.landing-page .button-strip {&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .button-strip ul {&lt;br /&gt;
  list-style: none;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  gap: 1em;&lt;br /&gt;
  clear: both;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .button-strip li {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0 1em;&lt;br /&gt;
  margin: 0.5em 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .button-strip li .mw-parser-output a.external {&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section alts */&lt;br /&gt;
.landing-page .alt-1 {&lt;br /&gt;
  clear: both;&lt;br /&gt;
  margin: 2em 0;&lt;br /&gt;
  background-color: rgba(40, 60, 60, 0.05);&lt;br /&gt;
  padding: 3em;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .alt-1 p {&lt;br /&gt;
  border-bottom: 2px solid rgb(230, 230, 230);&lt;br /&gt;
  padding-bottom: 1em;&lt;br /&gt;
  margin-bottom: 2em;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .alt-2 { padding: 3em; }&lt;br /&gt;
.landing-page .section .alt-3 .left  { flex: 2; min-width: 350px; }&lt;br /&gt;
.landing-page .section .alt-3 .right { flex: 3; min-width: 350px; }&lt;br /&gt;
&lt;br /&gt;
/* --- 2026+ shared components --- */&lt;br /&gt;
&lt;br /&gt;
.mw-page-lead {&lt;br /&gt;
  font-size: 3em;&lt;br /&gt;
  font-weight: 100;&lt;br /&gt;
  line-height: 1.55;&lt;br /&gt;
  color: #444;&lt;br /&gt;
  margin: 0 0 0.8em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-deck {&lt;br /&gt;
  font-size: 1.8em;&lt;br /&gt;
  font-weight: 100;&lt;br /&gt;
  line-height: 1.55;&lt;br /&gt;
  color: #444;&lt;br /&gt;
  margin: 0 0 0.8em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section wrapper */&lt;br /&gt;
.mw-section {&lt;br /&gt;
  margin: 1.25rem 0;&lt;br /&gt;
  clear: both;&lt;br /&gt;
  display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
.mw-section::after {&lt;br /&gt;
  content: &amp;quot;&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section + hr {&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--primary {&lt;br /&gt;
  background: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--secondary {&lt;br /&gt;
  background: rgba(0, 0, 0, 0.06);&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--brief {&lt;br /&gt;
  margin-bottom: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--quickpaths-strip {&lt;br /&gt;
  margin: 0.35rem 0 0.85rem 0;&lt;br /&gt;
  font-size: 0.96em;&lt;br /&gt;
  line-height: 1.35;&lt;br /&gt;
  color: rgba(0, 0, 0, 0.75);&lt;br /&gt;
}&lt;br /&gt;
.mw-section--quickpaths-strip p {&lt;br /&gt;
  margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--quickpaths-strip a {&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
  .mw-section--quickpaths-strip a,&lt;br /&gt;
  .mw-section--quickpaths-strip .mw-parser-output a {&lt;br /&gt;
    white-space: normal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
.mw-section--secondary &amp;gt; :is(h1, h2, h3, h4, h5, h6):first-child {&lt;br /&gt;
  font-size: 1.3em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.75rem 0;&lt;br /&gt;
  padding-bottom: 0;&lt;br /&gt;
  border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section--secondary :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  border-bottom: 0;&lt;br /&gt;
  padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section :is(h1, h2, h3, h4, h5, h6),&lt;br /&gt;
.mw-parser-output .mw-section__card :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
  padding-top: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section h2,&lt;br /&gt;
.mw-parser-output .mw-section__card h2 {&lt;br /&gt;
  padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat(auto-fit, minmax(var(--mw-card-min, 18rem), 1fr));&lt;br /&gt;
  gap: var(--mw-card-gap, 0.9rem);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__card {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
  line-height: 1.5; &lt;br /&gt;
}&lt;br /&gt;
.mw-section--primary .mw-section__card {&lt;br /&gt;
  margin-left: 0;&lt;br /&gt;
  margin-right: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--secondary .mw-section__card {&lt;br /&gt;
  background: rgba(255,255,255, 0.6);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__card + .mw-section__card { margin-top: 0.9rem; }&lt;br /&gt;
.mw-section__layout .mw-section__card + .mw-section__card { margin-top: 0; }&lt;br /&gt;
.mw-section__card &amp;gt; :is(h1, h2, h3, h4, h5, h6):first-child {&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.5rem 0;&lt;br /&gt;
  font-size: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__card h4 {&lt;br /&gt;
  margin: 0.8rem 0 0.35rem 0;&lt;br /&gt;
  padding-top: 0;&lt;br /&gt;
  border-top: 0;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__chips {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.4rem 0.45rem;&lt;br /&gt;
  margin-top: 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Inline term system --- */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .term,&lt;br /&gt;
.mw-parser-output .mw-term {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-decoration: underline dotted;&lt;br /&gt;
  text-underline-offset: 0.14em;&lt;br /&gt;
  cursor: help;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .term__card,&lt;br /&gt;
.mw-parser-output .mw-term__card {&lt;br /&gt;
  display: none;&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  top: calc(100% + 0.4rem);&lt;br /&gt;
  width: 20rem;&lt;br /&gt;
  max-width: 70vw;&lt;br /&gt;
  z-index: 100;&lt;br /&gt;
  padding: 0.55rem 0.65rem;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.16);&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  background: #fff;&lt;br /&gt;
  color: #2f3338;&lt;br /&gt;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);&lt;br /&gt;
  font-size: 0.9em;&lt;br /&gt;
  line-height: 1.35;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output a:hover .term__card,&lt;br /&gt;
.mw-parser-output a:hover .mw-term__card,&lt;br /&gt;
.mw-parser-output a:focus .term__card,&lt;br /&gt;
.mw-parser-output a:focus .mw-term__card,&lt;br /&gt;
.mw-parser-output a:focus-visible .term__card,&lt;br /&gt;
.mw-parser-output a:focus-visible .mw-term__card,&lt;br /&gt;
.mw-parser-output .term:hover .term__card,&lt;br /&gt;
.mw-parser-output .mw-term:hover .mw-term__card {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.term-definition {&lt;br /&gt;
  margin: 0.35rem 0 0.75rem;&lt;br /&gt;
  padding: 0.75rem 0.9rem;&lt;br /&gt;
  background: rgba(0, 0, 0, 0.04);&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.08);&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.term-definition__row + .term-definition__row {&lt;br /&gt;
  margin-top: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__chips a {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.18rem 0.55rem;&lt;br /&gt;
  border-radius: 999px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.14);&lt;br /&gt;
  background: rgba(255, 255, 255, 0.78);&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
  line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__chips a:hover,&lt;br /&gt;
.mw-section__chips a:focus {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.96);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__more {&lt;br /&gt;
  margin-top: 0.45rem;&lt;br /&gt;
  margin-bottom: 0;&lt;br /&gt;
  font-size: 0.92em;&lt;br /&gt;
  line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build {&lt;br /&gt;
  grid-template-columns: 1fr;&lt;br /&gt;
  margin: 0.85rem 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card {&lt;br /&gt;
  height: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card &amp;gt; ul:first-of-type {&lt;br /&gt;
  margin-top: 0.35rem;&lt;br /&gt;
  margin-bottom: 0;&lt;br /&gt;
  padding-left: 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card &amp;gt; ul:first-of-type li {&lt;br /&gt;
  margin: 0.2rem 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card h4 {&lt;br /&gt;
  margin-top: 0.5rem;&lt;br /&gt;
  margin-bottom: 0.35rem;&lt;br /&gt;
  padding-top: 0.5rem;&lt;br /&gt;
  border-top: 0;&lt;br /&gt;
  font-size: 0.88em;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  color: rgba(0, 0, 0, 0.58);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__more {&lt;br /&gt;
  margin-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
@media (min-width: 860px) {&lt;br /&gt;
  .mw-section__layout--build {&lt;br /&gt;
    grid-template-columns: repeat(3, minmax(0, 1fr));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Brief section: right-side card + media container */&lt;br /&gt;
.mw-section__brief-aside {&lt;br /&gt;
  float: right;&lt;br /&gt;
  width: min(100%, 26rem);&lt;br /&gt;
  margin: 0 0 1rem 1rem;&lt;br /&gt;
  display: grid;&lt;br /&gt;
  gap: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
.mw-section__media figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  line-height: normal !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure &amp;gt; a.mw-file-description {&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media img.mw-file-element {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  height: auto;&lt;br /&gt;
  display: block;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure &amp;gt; figcaption {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin-top: 0.6rem;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-width: none !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: break-word;&lt;br /&gt;
  word-break: normal !important;&lt;br /&gt;
  hyphens: none !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  clear: both !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media .thumbinner,&lt;br /&gt;
.mw-section__media .thumbcaption {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure &amp;gt; figcaption::before,&lt;br /&gt;
.mw-section__media figure &amp;gt; figcaption::after {&lt;br /&gt;
  content: none !important;&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
  .mw-section__brief-aside {&lt;br /&gt;
    float: none;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin: 0 0 1rem 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.mw-section-wrapper-secondary {&lt;br /&gt;
  background: rgba(0, 0, 0, 0.04);&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  margin: 1.25rem 0;&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
.mw-section-wrapper-secondary__title {&lt;br /&gt;
  font-size: 1.3em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.75rem 0;&lt;br /&gt;
  padding-bottom: 0.4rem;&lt;br /&gt;
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);&lt;br /&gt;
}&lt;br /&gt;
.mw-section-wrapper-secondary .mw-card {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
}&lt;br /&gt;
.mw-section-wrapper-secondary .mw-card__title { font-weight: 700; margin: 0 0 0.5rem 0; font-size: 1.2em; }&lt;br /&gt;
.mw-section-wrapper-secondary .mw-card__body  { line-height: 1.5; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Card row wrapper */&lt;br /&gt;
.mw-cardrow {&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  margin: 1.25rem 0;&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Responsive grid */&lt;br /&gt;
.mw-cardgrid {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: 1fr;&lt;br /&gt;
  gap: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
@media (min-width: 900px) {&lt;br /&gt;
  .mw-cardgrid { grid-template-columns: repeat(3, 1fr); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cards */&lt;br /&gt;
.mw-card {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
}&lt;br /&gt;
.mw-card__title { font-weight: 700; margin: 0 0 0.5rem 0; font-size: 1.2em; }&lt;br /&gt;
.mw-card__body  { line-height: 1.5; }&lt;br /&gt;
&lt;br /&gt;
/* Card row title */&lt;br /&gt;
.mw-cardrow__title {&lt;br /&gt;
  font-size: 1.3em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.75rem 0;&lt;br /&gt;
  padding-bottom: 0.4rem;&lt;br /&gt;
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Opt-in thumbnail card: class=mw-thumb-card (locked 50%) --- */&lt;br /&gt;
&lt;br /&gt;
/* Frame + layout */&lt;br /&gt;
figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
  float: right;&lt;br /&gt;
  clear: right;&lt;br /&gt;
&lt;br /&gt;
  /* Override Vector thumb table model */&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  line-height: normal !important;&lt;br /&gt;
  border-collapse: separate !important;&lt;br /&gt;
&lt;br /&gt;
  /* Lock width (responsive) */&lt;br /&gt;
  width: 50%;&lt;br /&gt;
  max-width: 100%;&lt;br /&gt;
&lt;br /&gt;
  /* Frame */&lt;br /&gt;
  border: 0px solid rgba(0, 0, 0, 0.15) !important;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  background: none !important;&lt;br /&gt;
&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  margin: 0.5em 0 1.3em 1.4em;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
&lt;br /&gt;
  text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Undo Vector’s thumb background/border rules that leak through media queries */&lt;br /&gt;
@media screen {&lt;br /&gt;
  figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
  figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
    border-bottom: 0px solid rgba(0, 0, 0, 0.15) !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Image wrapper */&lt;br /&gt;
figure.mw-thumb-card &amp;gt; a.mw-file-description {&lt;br /&gt;
  display: block;&lt;br /&gt;
  padding: 2px;&lt;br /&gt;
  border-radius: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Image fills the 400px frame */&lt;br /&gt;
figure.mw-thumb-card img.mw-file-element {&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  height: auto;&lt;br /&gt;
&lt;br /&gt;
  background: transparent !important; /* defeat Vector’s thumb image fill */&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  outline: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Caption inside the frame */&lt;br /&gt;
figure.mw-thumb-card &amp;gt; figcaption {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin: 1rem 0 0 0;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
&lt;br /&gt;
  color: rgba(0, 0, 0, 0.75);&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  line-height: 1.35;&lt;br /&gt;
  text-align: left;&lt;br /&gt;
&lt;br /&gt;
  /* wrap without “skinny column” behavior */&lt;br /&gt;
  overflow-wrap: break-word;&lt;br /&gt;
  word-break: normal !important;&lt;br /&gt;
  hyphens: none !important;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
figure.mw-thumb-card &amp;gt; figcaption::before,&lt;br /&gt;
figure.mw-thumb-card &amp;gt; figcaption::after {&lt;br /&gt;
  content: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* What People Build: light card grid */&lt;br /&gt;
&lt;br /&gt;
.mw-build-grid {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));&lt;br /&gt;
  gap: 1.5rem;&lt;br /&gt;
  margin: 2rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-build-card {&lt;br /&gt;
  padding: 1.25rem 1.4rem;&lt;br /&gt;
&lt;br /&gt;
  border: 1px solid rgba(0,0,0,0.08);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
&lt;br /&gt;
  background: white;&lt;br /&gt;
&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-build-card h3 {&lt;br /&gt;
  margin: 0 0 0.4rem 0;&lt;br /&gt;
&lt;br /&gt;
  font-size: 1.05rem;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-build-card p {&lt;br /&gt;
  margin: 0;&lt;br /&gt;
&lt;br /&gt;
  font-size: 0.95rem;&lt;br /&gt;
  line-height: 1.45;&lt;br /&gt;
  color: rgba(0,0,0,0.75);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Procedure step layout */&lt;br /&gt;
.mw-step {&lt;br /&gt;
  margin: 2rem 0 4rem 0;&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: minmax(220px, 340px) minmax(0, 1fr);&lt;br /&gt;
  gap: 0.9rem 3rem;&lt;br /&gt;
  align-items: start;&lt;br /&gt;
}&lt;br /&gt;
.mw-step--plain {&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  border: 0;&lt;br /&gt;
  border-radius: 0;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
}&lt;br /&gt;
.mw-step--card {&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
}&lt;br /&gt;
.mw-step--shaded {&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border: 0;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  background: rgba(0, 0, 0, 0.04);&lt;br /&gt;
}&lt;br /&gt;
.mw-step :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
  padding-top: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image {&lt;br /&gt;
  grid-column: 1;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__text {&lt;br /&gt;
  grid-column: 2;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__text :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-step__text :is(ul, ol),&lt;br /&gt;
.mw-content-ltr .mw-parser-output .mw-step__text :is(ul, ol) {&lt;br /&gt;
  margin-left: 1.5rem;&lt;br /&gt;
  padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-step__text :is(ul, ol) &amp;gt; li,&lt;br /&gt;
.mw-content-ltr .mw-parser-output .mw-step__text :is(ul, ol) &amp;gt; li {&lt;br /&gt;
  margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
.mw-step__image figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  line-height: normal !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure &amp;gt; a.mw-file-description {&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure &amp;gt; figcaption {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin-top: 0.6rem;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-width: none !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: break-word;&lt;br /&gt;
  word-break: normal !important;&lt;br /&gt;
  hyphens: none !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  clear: both !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image .thumbinner,&lt;br /&gt;
.mw-step__image .thumbcaption {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image img.mw-file-element {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  height: auto;&lt;br /&gt;
  display: block;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure &amp;gt; figcaption::before,&lt;br /&gt;
.mw-step__image figure &amp;gt; figcaption::after {&lt;br /&gt;
  content: none !important;&lt;br /&gt;
}&lt;br /&gt;
@media screen {&lt;br /&gt;
  .mw-step__image figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
  .mw-step__image figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
    border-bottom: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
  .mw-step {&lt;br /&gt;
    grid-template-columns: 1fr;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-step__image,&lt;br /&gt;
  .mw-step__text {&lt;br /&gt;
    grid-column: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Info box template */&lt;br /&gt;
.mw-info {&lt;br /&gt;
  margin: 0.9rem 0;&lt;br /&gt;
  padding: 0.7rem 0.95rem;&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.12);&lt;br /&gt;
  border-left-width: 4px;&lt;br /&gt;
  background: rgba(80, 110, 140, 0.08);&lt;br /&gt;
  border-left-color: rgba(60, 95, 130, 0.55);&lt;br /&gt;
  display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
.mw-info__title {&lt;br /&gt;
  margin: 0 0 0.25rem 0;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  letter-spacing: 0.01em;&lt;br /&gt;
}&lt;br /&gt;
.mw-info__body &amp;gt; :first-child {&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-info__body &amp;gt; :last-child {&lt;br /&gt;
  margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-info--info {&lt;br /&gt;
  background: rgba(80, 110, 140, 0.08);&lt;br /&gt;
  border-left-color: rgba(60, 95, 130, 0.55);&lt;br /&gt;
}&lt;br /&gt;
.mw-info--note {&lt;br /&gt;
  background: rgba(84, 110, 160, 0.08);&lt;br /&gt;
  border-left-color: rgba(74, 96, 143, 0.6);&lt;br /&gt;
}&lt;br /&gt;
.mw-info--tip {&lt;br /&gt;
  background: rgba(72, 130, 72, 0.09);&lt;br /&gt;
  border-left-color: rgba(57, 112, 57, 0.6);&lt;br /&gt;
}&lt;br /&gt;
.mw-info--warning {&lt;br /&gt;
  background: rgba(185, 122, 44, 0.12);&lt;br /&gt;
  border-left-color: rgba(161, 94, 25, 0.68);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline placeholder token */&lt;br /&gt;
.mw-placeholder {&lt;br /&gt;
  display: inline;&lt;br /&gt;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  font-weight: 600;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
  color: #222;&lt;br /&gt;
  background: rgba(0, 0, 0, 0.06);&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.2);&lt;br /&gt;
  border-radius: 4px;&lt;br /&gt;
  padding: 0.04em 0.34em;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* TOC limits */&lt;br /&gt;
.toclimit-2 .toclevel-2,&lt;br /&gt;
.toclimit-2 .toclevel-3,&lt;br /&gt;
.toclimit-2 .toclevel-4 { display:none; }&lt;br /&gt;
&lt;br /&gt;
.toclimit-3 .toclevel-3,&lt;br /&gt;
.toclimit-3 .toclevel-4 { display:none; }&lt;br /&gt;
&lt;br /&gt;
.toclimit-4 .toclevel-4 { display:none; }&lt;br /&gt;
&lt;br /&gt;
/* Vector 2022 sidebar TOC support */&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-2,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-6,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-2,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-6 { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-6,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-6 { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-6,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-6 { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
/* Doc lifecycle / context banner */&lt;br /&gt;
.doccontext {&lt;br /&gt;
  border: 1px solid rgba(0,0,0,0.18);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.85em 1em;&lt;br /&gt;
  margin: 1em 0;&lt;br /&gt;
  background: rgba(0,0,0,0.03);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__row {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5em 0.6em;&lt;br /&gt;
  align-items: baseline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__label {&lt;br /&gt;
  font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta {&lt;br /&gt;
  margin-top: 0.6em;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta dl {&lt;br /&gt;
  margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta dt {&lt;br /&gt;
  float: left;&lt;br /&gt;
  clear: left;&lt;br /&gt;
  width: 9.5em;&lt;br /&gt;
  font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta dd {&lt;br /&gt;
  margin: 0 0 0.25em 10em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__badge {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.12em 0.55em;&lt;br /&gt;
  border-radius: 999px;&lt;br /&gt;
  font-size: 0.92em;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  border: 1px solid rgba(0,0,0,0.18);&lt;br /&gt;
  background: rgba(255,255,255,0.75);&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__badge--status { font-weight: 700; }&lt;br /&gt;
&lt;br /&gt;
.doccontext__badge--current { background: rgba(30, 136, 229, 0.10); }&lt;br /&gt;
.doccontext__badge--stable { background: rgba(67, 160, 71, 0.10); }&lt;br /&gt;
.doccontext__badge--superseded { background: rgba(255, 179, 0, 0.12); }&lt;br /&gt;
.doccontext__badge--historical { background: rgba(120, 144, 156, 0.12); }&lt;br /&gt;
.doccontext__badge--archived { background: rgba(55, 71, 79, 0.10); }&lt;br /&gt;
&lt;br /&gt;
.doccontext__note {&lt;br /&gt;
  margin-top: 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__note p {&lt;br /&gt;
  margin: 0.25em 0 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .doccontext__meta dt { float: none; width: auto; }&lt;br /&gt;
  .doccontext__meta dd { margin-left: 0; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=MediaWiki:Common.css&amp;diff=3107</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=MediaWiki:Common.css&amp;diff=3107"/>
		<updated>2026-09-30T22:43:27Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Keep images from escaping their enclosures */&lt;br /&gt;
img {&lt;br /&gt;
  max-width: 100%;&lt;br /&gt;
  height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main page overrides */&lt;br /&gt;
body.page-Main_Page main header.mw-body-header,&lt;br /&gt;
body.page-Main_Page div.vector-page-toolbar {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Legacy landing page styles (keep as-is until you retire it) --- */&lt;br /&gt;
&lt;br /&gt;
.landing-page .section span.button a {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.5em 1.5em;&lt;br /&gt;
  background-color: rgb(177, 224, 223);&lt;br /&gt;
  color: black;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
  border-radius: 5px;&lt;br /&gt;
  font-size: 1rem;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.landing-page .section h1,&lt;br /&gt;
.landing-page .section h2 {&lt;br /&gt;
  font-family: Arial, Helvetica, sans-serif !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  border: 0;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .section h1 { margin: 0; }&lt;br /&gt;
.landing-page .section h2 { margin: 0 0 0.55em 0; }&lt;br /&gt;
&lt;br /&gt;
/* Section box base */&lt;br /&gt;
.landing-page .section {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
  margin: 8em 0;&lt;br /&gt;
  padding-right: 3em;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .section &amp;gt; div { padding: 2em 0; }&lt;br /&gt;
.landing-page .section .left  { flex: 3; min-width: 350px; }&lt;br /&gt;
.landing-page .section .right { flex: 2; min-width: 350px; }&lt;br /&gt;
.landing-page .section p { font-size: 1.2rem; }&lt;br /&gt;
&lt;br /&gt;
/* Hero box overrides */&lt;br /&gt;
.landing-page .hero-box { padding-right: 0; }&lt;br /&gt;
.landing-page .hero-box h1 {&lt;br /&gt;
  font-size: 4rem;&lt;br /&gt;
  line-height: 1.0;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .hero-box .tagline {&lt;br /&gt;
  font-size: 1.2rem;&lt;br /&gt;
  line-height: 1.8;&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
  color: rgba(50, 60, 60, 0.8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Landing page intro box */&lt;br /&gt;
.landing-page .intro {&lt;br /&gt;
  padding: 2em;&lt;br /&gt;
  border: 2px solid rgb(177, 224, 223);&lt;br /&gt;
}&lt;br /&gt;
.landing-page .intro .label {&lt;br /&gt;
  font-family: Arial, Helvetica, sans-serif !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  font-size: 1.2rem;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .intro p { font-size: 1.6rem; }&lt;br /&gt;
&lt;br /&gt;
/* Button strip */&lt;br /&gt;
.landing-page .button-strip {&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .button-strip ul {&lt;br /&gt;
  list-style: none;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  gap: 1em;&lt;br /&gt;
  clear: both;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .button-strip li {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0 1em;&lt;br /&gt;
  margin: 0.5em 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .button-strip li .mw-parser-output a.external {&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section alts */&lt;br /&gt;
.landing-page .alt-1 {&lt;br /&gt;
  clear: both;&lt;br /&gt;
  margin: 2em 0;&lt;br /&gt;
  background-color: rgba(40, 60, 60, 0.05);&lt;br /&gt;
  padding: 3em;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .alt-1 p {&lt;br /&gt;
  border-bottom: 2px solid rgb(230, 230, 230);&lt;br /&gt;
  padding-bottom: 1em;&lt;br /&gt;
  margin-bottom: 2em;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .alt-2 { padding: 3em; }&lt;br /&gt;
.landing-page .section .alt-3 .left  { flex: 2; min-width: 350px; }&lt;br /&gt;
.landing-page .section .alt-3 .right { flex: 3; min-width: 350px; }&lt;br /&gt;
&lt;br /&gt;
/* --- 2026+ shared components --- */&lt;br /&gt;
&lt;br /&gt;
.mw-page-lead {&lt;br /&gt;
  font-size: 3em;&lt;br /&gt;
  font-weight: 100;&lt;br /&gt;
  line-height: 1.55;&lt;br /&gt;
  color: #444;&lt;br /&gt;
  margin: 0 0 0.8em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-deck {&lt;br /&gt;
  font-size: 1.8em;&lt;br /&gt;
  font-weight: 100;&lt;br /&gt;
  line-height: 1.55;&lt;br /&gt;
  color: #444;&lt;br /&gt;
  margin: 0 0 0.8em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section wrapper */&lt;br /&gt;
.mw-section {&lt;br /&gt;
  margin: 1.25rem 0;&lt;br /&gt;
  clear: both;&lt;br /&gt;
  display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
.mw-section::after {&lt;br /&gt;
  content: &amp;quot;&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section + hr {&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--primary {&lt;br /&gt;
  background: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--secondary {&lt;br /&gt;
  background: rgba(0, 0, 0, 0.06);&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--brief {&lt;br /&gt;
  margin-bottom: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--quickpaths-strip {&lt;br /&gt;
  margin: 0.35rem 0 0.85rem 0;&lt;br /&gt;
  font-size: 0.96em;&lt;br /&gt;
  line-height: 1.35;&lt;br /&gt;
  color: rgba(0, 0, 0, 0.75);&lt;br /&gt;
}&lt;br /&gt;
.mw-section--quickpaths-strip p {&lt;br /&gt;
  margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--quickpaths-strip a {&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
  .mw-section--quickpaths-strip a,&lt;br /&gt;
  .mw-section--quickpaths-strip .mw-parser-output a {&lt;br /&gt;
    white-space: normal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
.mw-section--secondary &amp;gt; :is(h1, h2, h3, h4, h5, h6):first-child {&lt;br /&gt;
  font-size: 1.3em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.75rem 0;&lt;br /&gt;
  padding-bottom: 0;&lt;br /&gt;
  border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section--secondary :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  border-bottom: 0;&lt;br /&gt;
  padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section :is(h1, h2, h3, h4, h5, h6),&lt;br /&gt;
.mw-parser-output .mw-section__card :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
  padding-top: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section h2,&lt;br /&gt;
.mw-parser-output .mw-section__card h2 {&lt;br /&gt;
  padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat(auto-fit, minmax(var(--mw-card-min, 18rem), 1fr));&lt;br /&gt;
  gap: var(--mw-card-gap, 0.9rem);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__card {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
  line-height: 1.5; &lt;br /&gt;
}&lt;br /&gt;
.mw-section--primary .mw-section__card {&lt;br /&gt;
  margin-left: 0;&lt;br /&gt;
  margin-right: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--secondary .mw-section__card {&lt;br /&gt;
  background: rgba(255,255,255, 0.6);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__card + .mw-section__card { margin-top: 0.9rem; }&lt;br /&gt;
.mw-section__layout .mw-section__card + .mw-section__card { margin-top: 0; }&lt;br /&gt;
.mw-section__card &amp;gt; :is(h1, h2, h3, h4, h5, h6):first-child {&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.5rem 0;&lt;br /&gt;
  font-size: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__card h4 {&lt;br /&gt;
  margin: 0.8rem 0 0.35rem 0;&lt;br /&gt;
  padding-top: 0;&lt;br /&gt;
  border-top: 0;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__chips {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.4rem 0.45rem;&lt;br /&gt;
  margin-top: 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Inline term system --- */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .term,&lt;br /&gt;
.mw-parser-output .mw-term {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-decoration: underline dotted;&lt;br /&gt;
  text-underline-offset: 0.14em;&lt;br /&gt;
  cursor: help;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .term__card,&lt;br /&gt;
.mw-parser-output .mw-term__card {&lt;br /&gt;
  display: none;&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  top: calc(100% + 0.4rem);&lt;br /&gt;
  width: 20rem;&lt;br /&gt;
  max-width: 70vw;&lt;br /&gt;
  z-index: 100;&lt;br /&gt;
  padding: 0.55rem 0.65rem;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.16);&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  background: #fff;&lt;br /&gt;
  color: #2f3338;&lt;br /&gt;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);&lt;br /&gt;
  font-size: 0.9em;&lt;br /&gt;
  line-height: 1.35;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output a:hover .term__card,&lt;br /&gt;
.mw-parser-output a:hover .mw-term__card,&lt;br /&gt;
.mw-parser-output a:focus .term__card,&lt;br /&gt;
.mw-parser-output a:focus .mw-term__card,&lt;br /&gt;
.mw-parser-output a:focus-visible .term__card,&lt;br /&gt;
.mw-parser-output a:focus-visible .mw-term__card,&lt;br /&gt;
.mw-parser-output .term:hover .term__card,&lt;br /&gt;
.mw-parser-output .mw-term:hover .mw-term__card {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.term-definition {&lt;br /&gt;
  margin: 0.35rem 0 0.75rem;&lt;br /&gt;
  padding: 0.75rem 0.9rem;&lt;br /&gt;
  background: rgba(0, 0, 0, 0.04);&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.08);&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.term-definition__row + .term-definition__row {&lt;br /&gt;
  margin-top: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__chips a {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.18rem 0.55rem;&lt;br /&gt;
  border-radius: 999px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.14);&lt;br /&gt;
  background: rgba(255, 255, 255, 0.78);&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
  line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__chips a:hover,&lt;br /&gt;
.mw-section__chips a:focus {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.96);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__more {&lt;br /&gt;
  margin-top: 0.45rem;&lt;br /&gt;
  margin-bottom: 0;&lt;br /&gt;
  font-size: 0.92em;&lt;br /&gt;
  line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build {&lt;br /&gt;
  grid-template-columns: 1fr;&lt;br /&gt;
  margin: 0.85rem 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card {&lt;br /&gt;
  height: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card &amp;gt; ul:first-of-type {&lt;br /&gt;
  margin-top: 0.35rem;&lt;br /&gt;
  margin-bottom: 0;&lt;br /&gt;
  padding-left: 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card &amp;gt; ul:first-of-type li {&lt;br /&gt;
  margin: 0.2rem 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card h4 {&lt;br /&gt;
  margin-top: 0.5rem;&lt;br /&gt;
  margin-bottom: 0.35rem;&lt;br /&gt;
  padding-top: 0.5rem;&lt;br /&gt;
  border-top: 0;&lt;br /&gt;
  font-size: 0.88em;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  color: rgba(0, 0, 0, 0.58);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__more {&lt;br /&gt;
  margin-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
@media (min-width: 860px) {&lt;br /&gt;
  .mw-section__layout--build {&lt;br /&gt;
    grid-template-columns: repeat(3, minmax(0, 1fr));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Brief section: right-side card + media container */&lt;br /&gt;
.mw-section__brief-aside {&lt;br /&gt;
  float: right;&lt;br /&gt;
  width: min(100%, 26rem);&lt;br /&gt;
  margin: 0 0 1rem 1rem;&lt;br /&gt;
  display: grid;&lt;br /&gt;
  gap: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
.mw-section__media figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  line-height: normal !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure &amp;gt; a.mw-file-description {&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media img.mw-file-element {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  height: auto;&lt;br /&gt;
  display: block;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure &amp;gt; figcaption {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin-top: 0.6rem;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-width: none !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: break-word;&lt;br /&gt;
  word-break: normal !important;&lt;br /&gt;
  hyphens: none !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  clear: both !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media .thumbinner,&lt;br /&gt;
.mw-section__media .thumbcaption {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure &amp;gt; figcaption::before,&lt;br /&gt;
.mw-section__media figure &amp;gt; figcaption::after {&lt;br /&gt;
  content: none !important;&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
  .mw-section__brief-aside {&lt;br /&gt;
    float: none;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin: 0 0 1rem 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.mw-section-wrapper-secondary {&lt;br /&gt;
  background: rgba(0, 0, 0, 0.04);&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  margin: 1.25rem 0;&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
.mw-section-wrapper-secondary__title {&lt;br /&gt;
  font-size: 1.3em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.75rem 0;&lt;br /&gt;
  padding-bottom: 0.4rem;&lt;br /&gt;
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);&lt;br /&gt;
}&lt;br /&gt;
.mw-section-wrapper-secondary .mw-card {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
}&lt;br /&gt;
.mw-section-wrapper-secondary .mw-card__title { font-weight: 700; margin: 0 0 0.5rem 0; font-size: 1.2em; }&lt;br /&gt;
.mw-section-wrapper-secondary .mw-card__body  { line-height: 1.5; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Card row wrapper */&lt;br /&gt;
.mw-cardrow {&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  margin: 1.25rem 0;&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Responsive grid */&lt;br /&gt;
.mw-cardgrid {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: 1fr;&lt;br /&gt;
  gap: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
@media (min-width: 900px) {&lt;br /&gt;
  .mw-cardgrid { grid-template-columns: repeat(3, 1fr); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cards */&lt;br /&gt;
.mw-card {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
}&lt;br /&gt;
.mw-card__title { font-weight: 700; margin: 0 0 0.5rem 0; font-size: 1.2em; }&lt;br /&gt;
.mw-card__body  { line-height: 1.5; }&lt;br /&gt;
&lt;br /&gt;
/* Card row title */&lt;br /&gt;
.mw-cardrow__title {&lt;br /&gt;
  font-size: 1.3em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.75rem 0;&lt;br /&gt;
  padding-bottom: 0.4rem;&lt;br /&gt;
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Opt-in thumbnail card: class=mw-thumb-card (locked 50%) --- */&lt;br /&gt;
&lt;br /&gt;
/* Frame + layout */&lt;br /&gt;
figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
  float: right;&lt;br /&gt;
  clear: right;&lt;br /&gt;
&lt;br /&gt;
  /* Override Vector thumb table model */&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  line-height: normal !important;&lt;br /&gt;
  border-collapse: separate !important;&lt;br /&gt;
&lt;br /&gt;
  /* Lock width (responsive) */&lt;br /&gt;
  width: 50%;&lt;br /&gt;
  max-width: 100%;&lt;br /&gt;
&lt;br /&gt;
  /* Frame */&lt;br /&gt;
  border: 0px solid rgba(0, 0, 0, 0.15) !important;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  background: none !important;&lt;br /&gt;
&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  margin: 0.5em 0 1.3em 1.4em;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
&lt;br /&gt;
  text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Undo Vector’s thumb background/border rules that leak through media queries */&lt;br /&gt;
@media screen {&lt;br /&gt;
  figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
  figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
    border-bottom: 0px solid rgba(0, 0, 0, 0.15) !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Image wrapper */&lt;br /&gt;
figure.mw-thumb-card &amp;gt; a.mw-file-description {&lt;br /&gt;
  display: block;&lt;br /&gt;
  padding: 2px;&lt;br /&gt;
  border-radius: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Image fills the 400px frame */&lt;br /&gt;
figure.mw-thumb-card img.mw-file-element {&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  height: auto;&lt;br /&gt;
&lt;br /&gt;
  background: transparent !important; /* defeat Vector’s thumb image fill */&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  outline: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Caption inside the frame */&lt;br /&gt;
figure.mw-thumb-card &amp;gt; figcaption {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin: 1rem 0 0 0;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
&lt;br /&gt;
  color: rgba(0, 0, 0, 0.75);&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  line-height: 1.35;&lt;br /&gt;
  text-align: left;&lt;br /&gt;
&lt;br /&gt;
  /* wrap without “skinny column” behavior */&lt;br /&gt;
  overflow-wrap: break-word;&lt;br /&gt;
  word-break: normal !important;&lt;br /&gt;
  hyphens: none !important;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
figure.mw-thumb-card &amp;gt; figcaption::before,&lt;br /&gt;
figure.mw-thumb-card &amp;gt; figcaption::after {&lt;br /&gt;
  content: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* What People Build: light card grid */&lt;br /&gt;
&lt;br /&gt;
.mw-build-grid {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));&lt;br /&gt;
  gap: 1.5rem;&lt;br /&gt;
  margin: 2rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-build-card {&lt;br /&gt;
  padding: 1.25rem 1.4rem;&lt;br /&gt;
&lt;br /&gt;
  border: 1px solid rgba(0,0,0,0.08);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
&lt;br /&gt;
  background: white;&lt;br /&gt;
&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-build-card h3 {&lt;br /&gt;
  margin: 0 0 0.4rem 0;&lt;br /&gt;
&lt;br /&gt;
  font-size: 1.05rem;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-build-card p {&lt;br /&gt;
  margin: 0;&lt;br /&gt;
&lt;br /&gt;
  font-size: 0.95rem;&lt;br /&gt;
  line-height: 1.45;&lt;br /&gt;
  color: rgba(0,0,0,0.75);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Procedure step layout */&lt;br /&gt;
.mw-step {&lt;br /&gt;
  margin: 2rem 0 4rem 0;&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: minmax(220px, 340px) minmax(0, 1fr);&lt;br /&gt;
  gap: 0.9rem 3rem;&lt;br /&gt;
  align-items: start;&lt;br /&gt;
}&lt;br /&gt;
.mw-step--plain {&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  border: 0;&lt;br /&gt;
  border-radius: 0;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
}&lt;br /&gt;
.mw-step--card {&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
}&lt;br /&gt;
.mw-step--shaded {&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border: 0;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  background: rgba(0, 0, 0, 0.04);&lt;br /&gt;
}&lt;br /&gt;
.mw-step :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
  padding-top: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image {&lt;br /&gt;
  grid-column: 1;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__text {&lt;br /&gt;
  grid-column: 2;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__text :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-step__text :is(ul, ol),&lt;br /&gt;
.mw-content-ltr .mw-parser-output .mw-step__text :is(ul, ol) {&lt;br /&gt;
  margin-left: 1.5rem;&lt;br /&gt;
  padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-step__text :is(ul, ol) &amp;gt; li,&lt;br /&gt;
.mw-content-ltr .mw-parser-output .mw-step__text :is(ul, ol) &amp;gt; li {&lt;br /&gt;
  margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
.mw-step__image figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  line-height: normal !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure &amp;gt; a.mw-file-description {&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure &amp;gt; figcaption {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin-top: 0.6rem;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-width: none !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: break-word;&lt;br /&gt;
  word-break: normal !important;&lt;br /&gt;
  hyphens: none !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  clear: both !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image .thumbinner,&lt;br /&gt;
.mw-step__image .thumbcaption {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image img.mw-file-element {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  height: auto;&lt;br /&gt;
  display: block;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure &amp;gt; figcaption::before,&lt;br /&gt;
.mw-step__image figure &amp;gt; figcaption::after {&lt;br /&gt;
  content: none !important;&lt;br /&gt;
}&lt;br /&gt;
@media screen {&lt;br /&gt;
  .mw-step__image figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
  .mw-step__image figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
    border-bottom: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
  .mw-step {&lt;br /&gt;
    grid-template-columns: 1fr;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-step__image,&lt;br /&gt;
  .mw-step__text {&lt;br /&gt;
    grid-column: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Info box template */&lt;br /&gt;
.mw-info {&lt;br /&gt;
  margin: 0.9rem 0;&lt;br /&gt;
  padding: 0.7rem 0.95rem;&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.12);&lt;br /&gt;
  border-left-width: 4px;&lt;br /&gt;
  background: rgba(80, 110, 140, 0.08);&lt;br /&gt;
  border-left-color: rgba(60, 95, 130, 0.55);&lt;br /&gt;
  display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
.mw-info__title {&lt;br /&gt;
  margin: 0 0 0.25rem 0;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  letter-spacing: 0.01em;&lt;br /&gt;
}&lt;br /&gt;
.mw-info__body &amp;gt; :first-child {&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-info__body &amp;gt; :last-child {&lt;br /&gt;
  margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-info--info {&lt;br /&gt;
  background: rgba(80, 110, 140, 0.08);&lt;br /&gt;
  border-left-color: rgba(60, 95, 130, 0.55);&lt;br /&gt;
}&lt;br /&gt;
.mw-info--note {&lt;br /&gt;
  background: rgba(84, 110, 160, 0.08);&lt;br /&gt;
  border-left-color: rgba(74, 96, 143, 0.6);&lt;br /&gt;
}&lt;br /&gt;
.mw-info--tip {&lt;br /&gt;
  background: rgba(72, 130, 72, 0.09);&lt;br /&gt;
  border-left-color: rgba(57, 112, 57, 0.6);&lt;br /&gt;
}&lt;br /&gt;
.mw-info--warning {&lt;br /&gt;
  background: rgba(185, 122, 44, 0.12);&lt;br /&gt;
  border-left-color: rgba(161, 94, 25, 0.68);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline placeholder token */&lt;br /&gt;
.mw-placeholder {&lt;br /&gt;
  display: inline;&lt;br /&gt;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  font-weight: 600;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
  color: #222;&lt;br /&gt;
  background: rgba(0, 0, 0, 0.06);&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.2);&lt;br /&gt;
  border-radius: 4px;&lt;br /&gt;
  padding: 0.04em 0.34em;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* TOC limits */&lt;br /&gt;
.toclimit-2 .toclevel-2,&lt;br /&gt;
.toclimit-2 .toclevel-3,&lt;br /&gt;
.toclimit-2 .toclevel-4 { display:none; }&lt;br /&gt;
&lt;br /&gt;
.toclimit-3 .toclevel-3,&lt;br /&gt;
.toclimit-3 .toclevel-4 { display:none; }&lt;br /&gt;
&lt;br /&gt;
.toclimit-4 .toclevel-4 { display:none; }&lt;br /&gt;
&lt;br /&gt;
/* Vector 2022 sidebar TOC support */&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-2,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-6,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-2,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-6 { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-6,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-6 { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-6,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-6 { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
/* Doc lifecycle / context banner */&lt;br /&gt;
.doccontext {&lt;br /&gt;
  border: 1px solid rgba(0,0,0,0.18);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.85em 1em;&lt;br /&gt;
  margin: 1em 0;&lt;br /&gt;
  background: rgba(0,0,0,0.03);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__row {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5em 0.6em;&lt;br /&gt;
  align-items: baseline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__label {&lt;br /&gt;
  font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta {&lt;br /&gt;
  margin-top: 0.6em;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta dl {&lt;br /&gt;
  margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta dt {&lt;br /&gt;
  float: left;&lt;br /&gt;
  clear: left;&lt;br /&gt;
  width: 9.5em;&lt;br /&gt;
  font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta dd {&lt;br /&gt;
  margin: 0 0 0.25em 10em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__badge {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.12em 0.55em;&lt;br /&gt;
  border-radius: 999px;&lt;br /&gt;
  font-size: 0.92em;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  border: 1px solid rgba(0,0,0,0.18);&lt;br /&gt;
  background: rgba(255,255,255,0.75);&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__badge--status { font-weight: 700; }&lt;br /&gt;
&lt;br /&gt;
.doccontext__badge--current { background: rgba(30, 136, 229, 0.10); }&lt;br /&gt;
.doccontext__badge--stable { background: rgba(67, 160, 71, 0.10); }&lt;br /&gt;
.doccontext__badge--superseded { background: rgba(255, 179, 0, 0.12); }&lt;br /&gt;
.doccontext__badge--historical { background: rgba(120, 144, 156, 0.12); }&lt;br /&gt;
.doccontext__badge--archived { background: rgba(55, 71, 79, 0.10); }&lt;br /&gt;
&lt;br /&gt;
.doccontext__note {&lt;br /&gt;
  margin-top: 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__note p {&lt;br /&gt;
  margin: 0.25em 0 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .doccontext__meta dt { float: none; width: auto; }&lt;br /&gt;
  .doccontext__meta dd { margin-left: 0; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Template:Deck&amp;diff=3106</id>
		<title>Template:Deck</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Template:Deck&amp;diff=3106"/>
		<updated>2026-09-30T22:42:05Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-page-deck&amp;quot;&amp;gt;&lt;br /&gt;
{{{1}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3105</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3105"/>
		<updated>2026-09-30T22:41:40Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:44Net Main Page}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Lead|44Net is a community of licensed radio amateurs using Public IP addresses to build networks.}}&lt;br /&gt;
&lt;br /&gt;
{{Deck|Connect a Raspberry Pi, run services for your club, or build a network. 44Net provides free IP address resources for licensed radio amateurs, with several ways to put them to use.&lt;br /&gt;
&lt;br /&gt;
You can connect through an existing network or project, or obtain addresses and arrange your own routing.}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[#Find a way to connect|Explore ways to connect]]&#039;&#039;&#039; · &#039;&#039;&#039;[[#Build with 44Net resources|Get address resources]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
=== Find a way to connect ===&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== 44Net Connect ====&lt;br /&gt;
&#039;&#039;&#039;Public IP addresses for your devices and networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a WireGuard tunnel over your existing internet connection to get a public 44Net address for your project.&lt;br /&gt;
&lt;br /&gt;
[[44Net Connect|Get started with Connect →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== IPIP Mesh ====&lt;br /&gt;
&#039;&#039;&#039;Connect with other participating amateur networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run a gateway that exchanges traffic directly with other Mesh gateways through IP-in-IP tunnels over the Internet.&lt;br /&gt;
&lt;br /&gt;
[[IPIP Mesh|Explore the IPIP Mesh →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== Community projects ====&lt;br /&gt;
&#039;&#039;&#039;Find something interesting to join, use, or help build&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explore independently operated networks and projects, including regional radio networks and shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
[[Projects|Browse networks and projects →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=primary|&lt;br /&gt;
== Build with 44Net resources ==&lt;br /&gt;
If you’re arranging your own connectivity through an ISP, transit provider, data center, or cloud, start with the resources you need.&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Address space ===&lt;br /&gt;
Request an assignment for your amateur radio network or project.&lt;br /&gt;
&lt;br /&gt;
[[Portal/Request Address Space|About address assignments →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Routing and BGP ===&lt;br /&gt;
Arrange to announce your assigned addresses directly to the Internet.&lt;br /&gt;
&lt;br /&gt;
[[BGP|Using 44Net with your provider →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== DNS ===&lt;br /&gt;
Give your systems names under ampr.org or delegate DNS to your own servers.&lt;br /&gt;
&lt;br /&gt;
[[DNS|DNS options and setup →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|&lt;br /&gt;
== See what people are building ==&lt;br /&gt;
Explore remote stations, club services, radio networks, and experiments built by 44Net participants. Find ideas for your own project, learn from other operators’ work, or find out how you can contribute yourself.&lt;br /&gt;
&lt;br /&gt;
[[What People Build|Explore participant projects →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
=== Already participating? ===&lt;br /&gt;
[https://portal.ampr.org/ Open the Portal] to manage your account, assignments, and records.&lt;br /&gt;
&lt;br /&gt;
[[:Category:Device and platform guides|Setup guides]] · [[Get Help|Troubleshooting and help]] · [[Community|Community discussions]] · [[Contributing|Contribute to this Wiki]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== About 44Net ==&lt;br /&gt;
[[ARDC|ARDC]] administers the 44Net address space and supports amateur networking through infrastructure, services, and project support. Participants operate their own systems and networks, including independent projects with their own teams and ways to get involved.&lt;br /&gt;
&lt;br /&gt;
This Wiki explains the available resources and projects and documents how to use them.&lt;br /&gt;
&lt;br /&gt;
[[About 44Net|About 44Net and its history →]] · [[Eligibility|Eligibility]] · [[EULA|Terms of use]] · [[Archive|Earlier documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=MediaWiki:Common.css&amp;diff=3104</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=MediaWiki:Common.css&amp;diff=3104"/>
		<updated>2026-09-30T22:41:39Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
/* Keep images from escaping their enclosures */&lt;br /&gt;
img {&lt;br /&gt;
  max-width: 100%;&lt;br /&gt;
  height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main page overrides */&lt;br /&gt;
body.page-Main_Page main header.mw-body-header,&lt;br /&gt;
body.page-Main_Page div.vector-page-toolbar {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Legacy landing page styles (keep as-is until you retire it) --- */&lt;br /&gt;
&lt;br /&gt;
.landing-page .section span.button a {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.5em 1.5em;&lt;br /&gt;
  background-color: rgb(177, 224, 223);&lt;br /&gt;
  color: black;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
  border-radius: 5px;&lt;br /&gt;
  font-size: 1rem;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.landing-page .section h1,&lt;br /&gt;
.landing-page .section h2 {&lt;br /&gt;
  font-family: Arial, Helvetica, sans-serif !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  border: 0;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .section h1 { margin: 0; }&lt;br /&gt;
.landing-page .section h2 { margin: 0 0 0.55em 0; }&lt;br /&gt;
&lt;br /&gt;
/* Section box base */&lt;br /&gt;
.landing-page .section {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
  margin: 8em 0;&lt;br /&gt;
  padding-right: 3em;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .section &amp;gt; div { padding: 2em 0; }&lt;br /&gt;
.landing-page .section .left  { flex: 3; min-width: 350px; }&lt;br /&gt;
.landing-page .section .right { flex: 2; min-width: 350px; }&lt;br /&gt;
.landing-page .section p { font-size: 1.2rem; }&lt;br /&gt;
&lt;br /&gt;
/* Hero box overrides */&lt;br /&gt;
.landing-page .hero-box { padding-right: 0; }&lt;br /&gt;
.landing-page .hero-box h1 {&lt;br /&gt;
  font-size: 4rem;&lt;br /&gt;
  line-height: 1.0;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .hero-box .tagline {&lt;br /&gt;
  font-size: 1.2rem;&lt;br /&gt;
  line-height: 1.8;&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
  color: rgba(50, 60, 60, 0.8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Landing page intro box */&lt;br /&gt;
.landing-page .intro {&lt;br /&gt;
  padding: 2em;&lt;br /&gt;
  border: 2px solid rgb(177, 224, 223);&lt;br /&gt;
}&lt;br /&gt;
.landing-page .intro .label {&lt;br /&gt;
  font-family: Arial, Helvetica, sans-serif !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  font-size: 1.2rem;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .intro p { font-size: 1.6rem; }&lt;br /&gt;
&lt;br /&gt;
/* Button strip */&lt;br /&gt;
.landing-page .button-strip {&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .button-strip ul {&lt;br /&gt;
  list-style: none;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  gap: 1em;&lt;br /&gt;
  clear: both;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .button-strip li {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0 1em;&lt;br /&gt;
  margin: 0.5em 0;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .button-strip li .mw-parser-output a.external {&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section alts */&lt;br /&gt;
.landing-page .alt-1 {&lt;br /&gt;
  clear: both;&lt;br /&gt;
  margin: 2em 0;&lt;br /&gt;
  background-color: rgba(40, 60, 60, 0.05);&lt;br /&gt;
  padding: 3em;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .alt-1 p {&lt;br /&gt;
  border-bottom: 2px solid rgb(230, 230, 230);&lt;br /&gt;
  padding-bottom: 1em;&lt;br /&gt;
  margin-bottom: 2em;&lt;br /&gt;
}&lt;br /&gt;
.landing-page .alt-2 { padding: 3em; }&lt;br /&gt;
.landing-page .section .alt-3 .left  { flex: 2; min-width: 350px; }&lt;br /&gt;
.landing-page .section .alt-3 .right { flex: 3; min-width: 350px; }&lt;br /&gt;
&lt;br /&gt;
/* --- 2026+ shared components --- */&lt;br /&gt;
&lt;br /&gt;
.mw-page-lead {&lt;br /&gt;
  font-size: 3em;&lt;br /&gt;
  font-weight: 100;&lt;br /&gt;
  line-height: 1.55;&lt;br /&gt;
  color: #444;&lt;br /&gt;
  margin: 0 0 0.8em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-page-deck {&lt;br /&gt;
  font-size: 2em;&lt;br /&gt;
  font-weight: 100;&lt;br /&gt;
  line-height: 1.55;&lt;br /&gt;
  color: #444;&lt;br /&gt;
  margin: 0 0 0.8em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section wrapper */&lt;br /&gt;
.mw-section {&lt;br /&gt;
  margin: 1.25rem 0;&lt;br /&gt;
  clear: both;&lt;br /&gt;
  display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
.mw-section::after {&lt;br /&gt;
  content: &amp;quot;&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section + hr {&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--primary {&lt;br /&gt;
  background: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--secondary {&lt;br /&gt;
  background: rgba(0, 0, 0, 0.06);&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--brief {&lt;br /&gt;
  margin-bottom: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--quickpaths-strip {&lt;br /&gt;
  margin: 0.35rem 0 0.85rem 0;&lt;br /&gt;
  font-size: 0.96em;&lt;br /&gt;
  line-height: 1.35;&lt;br /&gt;
  color: rgba(0, 0, 0, 0.75);&lt;br /&gt;
}&lt;br /&gt;
.mw-section--quickpaths-strip p {&lt;br /&gt;
  margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--quickpaths-strip a {&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
  .mw-section--quickpaths-strip a,&lt;br /&gt;
  .mw-section--quickpaths-strip .mw-parser-output a {&lt;br /&gt;
    white-space: normal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
.mw-section--secondary &amp;gt; :is(h1, h2, h3, h4, h5, h6):first-child {&lt;br /&gt;
  font-size: 1.3em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.75rem 0;&lt;br /&gt;
  padding-bottom: 0;&lt;br /&gt;
  border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section--secondary :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  border-bottom: 0;&lt;br /&gt;
  padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section :is(h1, h2, h3, h4, h5, h6),&lt;br /&gt;
.mw-parser-output .mw-section__card :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
  padding-top: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-section h2,&lt;br /&gt;
.mw-parser-output .mw-section__card h2 {&lt;br /&gt;
  padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat(auto-fit, minmax(var(--mw-card-min, 18rem), 1fr));&lt;br /&gt;
  gap: var(--mw-card-gap, 0.9rem);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__card {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
  line-height: 1.5; &lt;br /&gt;
}&lt;br /&gt;
.mw-section--primary .mw-section__card {&lt;br /&gt;
  margin-left: 0;&lt;br /&gt;
  margin-right: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section--secondary .mw-section__card {&lt;br /&gt;
  background: rgba(255,255,255, 0.6);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__card + .mw-section__card { margin-top: 0.9rem; }&lt;br /&gt;
.mw-section__layout .mw-section__card + .mw-section__card { margin-top: 0; }&lt;br /&gt;
.mw-section__card &amp;gt; :is(h1, h2, h3, h4, h5, h6):first-child {&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.5rem 0;&lt;br /&gt;
  font-size: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__card h4 {&lt;br /&gt;
  margin: 0.8rem 0 0.35rem 0;&lt;br /&gt;
  padding-top: 0;&lt;br /&gt;
  border-top: 0;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__chips {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.4rem 0.45rem;&lt;br /&gt;
  margin-top: 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Inline term system --- */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .term,&lt;br /&gt;
.mw-parser-output .mw-term {&lt;br /&gt;
  position: relative;&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-decoration: underline dotted;&lt;br /&gt;
  text-underline-offset: 0.14em;&lt;br /&gt;
  cursor: help;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .term__card,&lt;br /&gt;
.mw-parser-output .mw-term__card {&lt;br /&gt;
  display: none;&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  top: calc(100% + 0.4rem);&lt;br /&gt;
  width: 20rem;&lt;br /&gt;
  max-width: 70vw;&lt;br /&gt;
  z-index: 100;&lt;br /&gt;
  padding: 0.55rem 0.65rem;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.16);&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  background: #fff;&lt;br /&gt;
  color: #2f3338;&lt;br /&gt;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);&lt;br /&gt;
  font-size: 0.9em;&lt;br /&gt;
  line-height: 1.35;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output a:hover .term__card,&lt;br /&gt;
.mw-parser-output a:hover .mw-term__card,&lt;br /&gt;
.mw-parser-output a:focus .term__card,&lt;br /&gt;
.mw-parser-output a:focus .mw-term__card,&lt;br /&gt;
.mw-parser-output a:focus-visible .term__card,&lt;br /&gt;
.mw-parser-output a:focus-visible .mw-term__card,&lt;br /&gt;
.mw-parser-output .term:hover .term__card,&lt;br /&gt;
.mw-parser-output .mw-term:hover .mw-term__card {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.term-definition {&lt;br /&gt;
  margin: 0.35rem 0 0.75rem;&lt;br /&gt;
  padding: 0.75rem 0.9rem;&lt;br /&gt;
  background: rgba(0, 0, 0, 0.04);&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.08);&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.term-definition__row + .term-definition__row {&lt;br /&gt;
  margin-top: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__chips a {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.18rem 0.55rem;&lt;br /&gt;
  border-radius: 999px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.14);&lt;br /&gt;
  background: rgba(255, 255, 255, 0.78);&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
  line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__chips a:hover,&lt;br /&gt;
.mw-section__chips a:focus {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.96);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__more {&lt;br /&gt;
  margin-top: 0.45rem;&lt;br /&gt;
  margin-bottom: 0;&lt;br /&gt;
  font-size: 0.92em;&lt;br /&gt;
  line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build {&lt;br /&gt;
  grid-template-columns: 1fr;&lt;br /&gt;
  margin: 0.85rem 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card {&lt;br /&gt;
  height: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card &amp;gt; ul:first-of-type {&lt;br /&gt;
  margin-top: 0.35rem;&lt;br /&gt;
  margin-bottom: 0;&lt;br /&gt;
  padding-left: 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card &amp;gt; ul:first-of-type li {&lt;br /&gt;
  margin: 0.2rem 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__card h4 {&lt;br /&gt;
  margin-top: 0.5rem;&lt;br /&gt;
  margin-bottom: 0.35rem;&lt;br /&gt;
  padding-top: 0.5rem;&lt;br /&gt;
  border-top: 0;&lt;br /&gt;
  font-size: 0.88em;&lt;br /&gt;
  font-weight: 500;&lt;br /&gt;
  color: rgba(0, 0, 0, 0.58);&lt;br /&gt;
}&lt;br /&gt;
.mw-section__layout--build .mw-section__more {&lt;br /&gt;
  margin-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
@media (min-width: 860px) {&lt;br /&gt;
  .mw-section__layout--build {&lt;br /&gt;
    grid-template-columns: repeat(3, minmax(0, 1fr));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Brief section: right-side card + media container */&lt;br /&gt;
.mw-section__brief-aside {&lt;br /&gt;
  float: right;&lt;br /&gt;
  width: min(100%, 26rem);&lt;br /&gt;
  margin: 0 0 1rem 1rem;&lt;br /&gt;
  display: grid;&lt;br /&gt;
  gap: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
.mw-section__media figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  line-height: normal !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure &amp;gt; a.mw-file-description {&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media img.mw-file-element {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  height: auto;&lt;br /&gt;
  display: block;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure &amp;gt; figcaption {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin-top: 0.6rem;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-width: none !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: break-word;&lt;br /&gt;
  word-break: normal !important;&lt;br /&gt;
  hyphens: none !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  clear: both !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media .thumbinner,&lt;br /&gt;
.mw-section__media .thumbcaption {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-section__media figure &amp;gt; figcaption::before,&lt;br /&gt;
.mw-section__media figure &amp;gt; figcaption::after {&lt;br /&gt;
  content: none !important;&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
  .mw-section__brief-aside {&lt;br /&gt;
    float: none;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin: 0 0 1rem 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.mw-section-wrapper-secondary {&lt;br /&gt;
  background: rgba(0, 0, 0, 0.04);&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  margin: 1.25rem 0;&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
.mw-section-wrapper-secondary__title {&lt;br /&gt;
  font-size: 1.3em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.75rem 0;&lt;br /&gt;
  padding-bottom: 0.4rem;&lt;br /&gt;
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);&lt;br /&gt;
}&lt;br /&gt;
.mw-section-wrapper-secondary .mw-card {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
}&lt;br /&gt;
.mw-section-wrapper-secondary .mw-card__title { font-weight: 700; margin: 0 0 0.5rem 0; font-size: 1.2em; }&lt;br /&gt;
.mw-section-wrapper-secondary .mw-card__body  { line-height: 1.5; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Card row wrapper */&lt;br /&gt;
.mw-cardrow {&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  margin: 1.25rem 0;&lt;br /&gt;
  clear: both;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Responsive grid */&lt;br /&gt;
.mw-cardgrid {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: 1fr;&lt;br /&gt;
  gap: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
@media (min-width: 900px) {&lt;br /&gt;
  .mw-cardgrid { grid-template-columns: repeat(3, 1fr); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cards */&lt;br /&gt;
.mw-card {&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
}&lt;br /&gt;
.mw-card__title { font-weight: 700; margin: 0 0 0.5rem 0; font-size: 1.2em; }&lt;br /&gt;
.mw-card__body  { line-height: 1.5; }&lt;br /&gt;
&lt;br /&gt;
/* Card row title */&lt;br /&gt;
.mw-cardrow__title {&lt;br /&gt;
  font-size: 1.3em;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  margin: 0 0 0.75rem 0;&lt;br /&gt;
  padding-bottom: 0.4rem;&lt;br /&gt;
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Opt-in thumbnail card: class=mw-thumb-card (locked 50%) --- */&lt;br /&gt;
&lt;br /&gt;
/* Frame + layout */&lt;br /&gt;
figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
  float: right;&lt;br /&gt;
  clear: right;&lt;br /&gt;
&lt;br /&gt;
  /* Override Vector thumb table model */&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  line-height: normal !important;&lt;br /&gt;
  border-collapse: separate !important;&lt;br /&gt;
&lt;br /&gt;
  /* Lock width (responsive) */&lt;br /&gt;
  width: 50%;&lt;br /&gt;
  max-width: 100%;&lt;br /&gt;
&lt;br /&gt;
  /* Frame */&lt;br /&gt;
  border: 0px solid rgba(0, 0, 0, 0.15) !important;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  background: none !important;&lt;br /&gt;
&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  margin: 0.5em 0 1.3em 1.4em;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
&lt;br /&gt;
  text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Undo Vector’s thumb background/border rules that leak through media queries */&lt;br /&gt;
@media screen {&lt;br /&gt;
  figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
  figure.mw-thumb-card[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
    border-bottom: 0px solid rgba(0, 0, 0, 0.15) !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Image wrapper */&lt;br /&gt;
figure.mw-thumb-card &amp;gt; a.mw-file-description {&lt;br /&gt;
  display: block;&lt;br /&gt;
  padding: 2px;&lt;br /&gt;
  border-radius: 9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Image fills the 400px frame */&lt;br /&gt;
figure.mw-thumb-card img.mw-file-element {&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  height: auto;&lt;br /&gt;
&lt;br /&gt;
  background: transparent !important; /* defeat Vector’s thumb image fill */&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  outline: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Caption inside the frame */&lt;br /&gt;
figure.mw-thumb-card &amp;gt; figcaption {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin: 1rem 0 0 0;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
&lt;br /&gt;
  color: rgba(0, 0, 0, 0.75);&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  line-height: 1.35;&lt;br /&gt;
  text-align: left;&lt;br /&gt;
&lt;br /&gt;
  /* wrap without “skinny column” behavior */&lt;br /&gt;
  overflow-wrap: break-word;&lt;br /&gt;
  word-break: normal !important;&lt;br /&gt;
  hyphens: none !important;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
figure.mw-thumb-card &amp;gt; figcaption::before,&lt;br /&gt;
figure.mw-thumb-card &amp;gt; figcaption::after {&lt;br /&gt;
  content: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* What People Build: light card grid */&lt;br /&gt;
&lt;br /&gt;
.mw-build-grid {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));&lt;br /&gt;
  gap: 1.5rem;&lt;br /&gt;
  margin: 2rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-build-card {&lt;br /&gt;
  padding: 1.25rem 1.4rem;&lt;br /&gt;
&lt;br /&gt;
  border: 1px solid rgba(0,0,0,0.08);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
&lt;br /&gt;
  background: white;&lt;br /&gt;
&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-build-card h3 {&lt;br /&gt;
  margin: 0 0 0.4rem 0;&lt;br /&gt;
&lt;br /&gt;
  font-size: 1.05rem;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-build-card p {&lt;br /&gt;
  margin: 0;&lt;br /&gt;
&lt;br /&gt;
  font-size: 0.95rem;&lt;br /&gt;
  line-height: 1.45;&lt;br /&gt;
  color: rgba(0,0,0,0.75);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Procedure step layout */&lt;br /&gt;
.mw-step {&lt;br /&gt;
  margin: 2rem 0 4rem 0;&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: minmax(220px, 340px) minmax(0, 1fr);&lt;br /&gt;
  gap: 0.9rem 3rem;&lt;br /&gt;
  align-items: start;&lt;br /&gt;
}&lt;br /&gt;
.mw-step--plain {&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  border: 0;&lt;br /&gt;
  border-radius: 0;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
}&lt;br /&gt;
.mw-step--card {&lt;br /&gt;
  padding: 0.95rem 1rem;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.06);&lt;br /&gt;
  background: rgba(255, 255, 255, 0.7);&lt;br /&gt;
}&lt;br /&gt;
.mw-step--shaded {&lt;br /&gt;
  padding: 1rem;&lt;br /&gt;
  border: 0;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  background: rgba(0, 0, 0, 0.04);&lt;br /&gt;
}&lt;br /&gt;
.mw-step :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
  padding-top: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image {&lt;br /&gt;
  grid-column: 1;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__text {&lt;br /&gt;
  grid-column: 2;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__text :is(h1, h2, h3, h4, h5, h6) {&lt;br /&gt;
  margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-step__text :is(ul, ol),&lt;br /&gt;
.mw-content-ltr .mw-parser-output .mw-step__text :is(ul, ol) {&lt;br /&gt;
  margin-left: 1.5rem;&lt;br /&gt;
  padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .mw-step__text :is(ul, ol) &amp;gt; li,&lt;br /&gt;
.mw-content-ltr .mw-parser-output .mw-step__text :is(ul, ol) &amp;gt; li {&lt;br /&gt;
  margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
.mw-step__image figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  line-height: normal !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure &amp;gt; a.mw-file-description {&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure &amp;gt; figcaption {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin-top: 0.6rem;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-width: none !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  min-width: 0;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: break-word;&lt;br /&gt;
  word-break: normal !important;&lt;br /&gt;
  hyphens: none !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  clear: both !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image .thumbinner,&lt;br /&gt;
.mw-step__image .thumbcaption {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  inline-size: 100% !important;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image img.mw-file-element {&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  height: auto;&lt;br /&gt;
  display: block;&lt;br /&gt;
  border: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-step__image figure &amp;gt; figcaption::before,&lt;br /&gt;
.mw-step__image figure &amp;gt; figcaption::after {&lt;br /&gt;
  content: none !important;&lt;br /&gt;
}&lt;br /&gt;
@media screen {&lt;br /&gt;
  .mw-step__image figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;],&lt;br /&gt;
  .mw-step__image figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
    border-bottom: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
  .mw-step {&lt;br /&gt;
    grid-template-columns: 1fr;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-step__image,&lt;br /&gt;
  .mw-step__text {&lt;br /&gt;
    grid-column: 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Info box template */&lt;br /&gt;
.mw-info {&lt;br /&gt;
  margin: 0.9rem 0;&lt;br /&gt;
  padding: 0.7rem 0.95rem;&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.12);&lt;br /&gt;
  border-left-width: 4px;&lt;br /&gt;
  background: rgba(80, 110, 140, 0.08);&lt;br /&gt;
  border-left-color: rgba(60, 95, 130, 0.55);&lt;br /&gt;
  display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
.mw-info__title {&lt;br /&gt;
  margin: 0 0 0.25rem 0;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  letter-spacing: 0.01em;&lt;br /&gt;
}&lt;br /&gt;
.mw-info__body &amp;gt; :first-child {&lt;br /&gt;
  margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-info__body &amp;gt; :last-child {&lt;br /&gt;
  margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-info--info {&lt;br /&gt;
  background: rgba(80, 110, 140, 0.08);&lt;br /&gt;
  border-left-color: rgba(60, 95, 130, 0.55);&lt;br /&gt;
}&lt;br /&gt;
.mw-info--note {&lt;br /&gt;
  background: rgba(84, 110, 160, 0.08);&lt;br /&gt;
  border-left-color: rgba(74, 96, 143, 0.6);&lt;br /&gt;
}&lt;br /&gt;
.mw-info--tip {&lt;br /&gt;
  background: rgba(72, 130, 72, 0.09);&lt;br /&gt;
  border-left-color: rgba(57, 112, 57, 0.6);&lt;br /&gt;
}&lt;br /&gt;
.mw-info--warning {&lt;br /&gt;
  background: rgba(185, 122, 44, 0.12);&lt;br /&gt;
  border-left-color: rgba(161, 94, 25, 0.68);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline placeholder token */&lt;br /&gt;
.mw-placeholder {&lt;br /&gt;
  display: inline;&lt;br /&gt;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
  font-weight: 600;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
  color: #222;&lt;br /&gt;
  background: rgba(0, 0, 0, 0.06);&lt;br /&gt;
  border: 1px solid rgba(0, 0, 0, 0.2);&lt;br /&gt;
  border-radius: 4px;&lt;br /&gt;
  padding: 0.04em 0.34em;&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* TOC limits */&lt;br /&gt;
.toclimit-2 .toclevel-2,&lt;br /&gt;
.toclimit-2 .toclevel-3,&lt;br /&gt;
.toclimit-2 .toclevel-4 { display:none; }&lt;br /&gt;
&lt;br /&gt;
.toclimit-3 .toclevel-3,&lt;br /&gt;
.toclimit-3 .toclevel-4 { display:none; }&lt;br /&gt;
&lt;br /&gt;
.toclimit-4 .toclevel-4 { display:none; }&lt;br /&gt;
&lt;br /&gt;
/* Vector 2022 sidebar TOC support */&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-2,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-6,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-2,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-2) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-6 { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-6,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-3,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-3) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-6 { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-6,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-4,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-5,&lt;br /&gt;
body:has(.toclimit-4) .vector-toc .vector-toc-level-1.vector-toc-list-item-expanded .vector-toc-list-item.vector-toc-level-6 { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
/* Doc lifecycle / context banner */&lt;br /&gt;
.doccontext {&lt;br /&gt;
  border: 1px solid rgba(0,0,0,0.18);&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.85em 1em;&lt;br /&gt;
  margin: 1em 0;&lt;br /&gt;
  background: rgba(0,0,0,0.03);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__row {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-wrap: wrap;&lt;br /&gt;
  gap: 0.5em 0.6em;&lt;br /&gt;
  align-items: baseline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__label {&lt;br /&gt;
  font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta {&lt;br /&gt;
  margin-top: 0.6em;&lt;br /&gt;
  font-size: 0.95em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta dl {&lt;br /&gt;
  margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta dt {&lt;br /&gt;
  float: left;&lt;br /&gt;
  clear: left;&lt;br /&gt;
  width: 9.5em;&lt;br /&gt;
  font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__meta dd {&lt;br /&gt;
  margin: 0 0 0.25em 10em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__badge {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  padding: 0.12em 0.55em;&lt;br /&gt;
  border-radius: 999px;&lt;br /&gt;
  font-size: 0.92em;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  border: 1px solid rgba(0,0,0,0.18);&lt;br /&gt;
  background: rgba(255,255,255,0.75);&lt;br /&gt;
  white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__badge--status { font-weight: 700; }&lt;br /&gt;
&lt;br /&gt;
.doccontext__badge--current { background: rgba(30, 136, 229, 0.10); }&lt;br /&gt;
.doccontext__badge--stable { background: rgba(67, 160, 71, 0.10); }&lt;br /&gt;
.doccontext__badge--superseded { background: rgba(255, 179, 0, 0.12); }&lt;br /&gt;
.doccontext__badge--historical { background: rgba(120, 144, 156, 0.12); }&lt;br /&gt;
.doccontext__badge--archived { background: rgba(55, 71, 79, 0.10); }&lt;br /&gt;
&lt;br /&gt;
.doccontext__note {&lt;br /&gt;
  margin-top: 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.doccontext__note p {&lt;br /&gt;
  margin: 0.25em 0 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .doccontext__meta dt { float: none; width: auto; }&lt;br /&gt;
  .doccontext__meta dd { margin-left: 0; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3103</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3103"/>
		<updated>2026-09-30T22:38:41Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:44Net Main Page}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Lead|44Net is a community of licensed radio amateurs using Public IP addresses to build networks.}}&lt;br /&gt;
&lt;br /&gt;
Connect a Raspberry Pi, run services for your club, or build a network. 44Net provides free IP address resources for licensed radio amateurs, with several ways to put them to use.&lt;br /&gt;
&lt;br /&gt;
You can connect through an existing network or project, or obtain addresses and arrange your own routing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[#Find a way to connect|Explore ways to connect]]&#039;&#039;&#039; · &#039;&#039;&#039;[[#Build with 44Net resources|Get address resources]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
=== Find a way to connect ===&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== 44Net Connect ====&lt;br /&gt;
&#039;&#039;&#039;Public IP addresses for your devices and networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a WireGuard tunnel over your existing internet connection to get a public 44Net address for your project.&lt;br /&gt;
&lt;br /&gt;
[[44Net Connect|Get started with Connect →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== IPIP Mesh ====&lt;br /&gt;
&#039;&#039;&#039;Connect with other participating amateur networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run a gateway that exchanges traffic directly with other Mesh gateways through IP-in-IP tunnels over the Internet.&lt;br /&gt;
&lt;br /&gt;
[[IPIP Mesh|Explore the IPIP Mesh →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== Community projects ====&lt;br /&gt;
&#039;&#039;&#039;Find something interesting to join, use, or help build&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explore independently operated networks and projects, including regional radio networks and shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
[[Projects|Browse networks and projects →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=primary|&lt;br /&gt;
== Build with 44Net resources ==&lt;br /&gt;
If you’re arranging your own connectivity through an ISP, transit provider, data center, or cloud, start with the resources you need.&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Address space ===&lt;br /&gt;
Request an assignment for your amateur radio network or project.&lt;br /&gt;
&lt;br /&gt;
[[Portal/Request Address Space|About address assignments →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Routing and BGP ===&lt;br /&gt;
Arrange to announce your assigned addresses directly to the Internet.&lt;br /&gt;
&lt;br /&gt;
[[BGP|Using 44Net with your provider →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== DNS ===&lt;br /&gt;
Give your systems names under ampr.org or delegate DNS to your own servers.&lt;br /&gt;
&lt;br /&gt;
[[DNS|DNS options and setup →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|&lt;br /&gt;
== See what people are building ==&lt;br /&gt;
Explore remote stations, club services, radio networks, and experiments built by 44Net participants. Find ideas for your own project, learn from other operators’ work, or find out how you can contribute yourself.&lt;br /&gt;
&lt;br /&gt;
[[What People Build|Explore participant projects →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
=== Already participating? ===&lt;br /&gt;
[https://portal.ampr.org/ Open the Portal] to manage your account, assignments, and records.&lt;br /&gt;
&lt;br /&gt;
[[:Category:Device and platform guides|Setup guides]] · [[Get Help|Troubleshooting and help]] · [[Community|Community discussions]] · [[Contributing|Contribute to this Wiki]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== About 44Net ==&lt;br /&gt;
[[ARDC|ARDC]] administers the 44Net address space and supports amateur networking through infrastructure, services, and project support. Participants operate their own systems and networks, including independent projects with their own teams and ways to get involved.&lt;br /&gt;
&lt;br /&gt;
This Wiki explains the available resources and projects and documents how to use them.&lt;br /&gt;
&lt;br /&gt;
[[About 44Net|About 44Net and its history →]] · [[Eligibility|Eligibility]] · [[EULA|Terms of use]] · [[Archive|Earlier documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3102</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3102"/>
		<updated>2026-09-30T22:36:52Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:44Net Main Page}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Lead|44Net is a community of licensed radio amateurs using Public IP addresses to build networks.}}&lt;br /&gt;
&lt;br /&gt;
Connect a Raspberry Pi, run services for your club, or build a network. 44Net provides free IP address resources for licensed radio amateurs, with several ways to put them to use.&lt;br /&gt;
&lt;br /&gt;
You can connect through an existing network or project, or obtain addresses and arrange your own routing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[#Find a way to connect|Explore ways to connect]]&#039;&#039;&#039; · &#039;&#039;&#039;[[#Build with 44Net resources|Get address resources]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
=== Find a way to connect ===&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== 44Net Connect ====&lt;br /&gt;
&#039;&#039;&#039;Public IP addresses for your devices and networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a WireGuard tunnel over your existing internet connection to get a public 44Net address for your project.&lt;br /&gt;
&lt;br /&gt;
[[44Net Connect|Get started with Connect →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== IPIP Mesh ====&lt;br /&gt;
&#039;&#039;&#039;Connect with other participating amateur networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run a gateway that exchanges traffic directly with other Mesh gateways through IP-in-IP tunnels over the Internet.&lt;br /&gt;
&lt;br /&gt;
[[IPIP Mesh|Explore the IPIP Mesh →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== Community projects ====&lt;br /&gt;
&#039;&#039;&#039;Find something interesting to join, use, or help build&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explore independently operated networks and projects, including regional radio networks and shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
[[Projects|Browse networks and projects →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=primary|&lt;br /&gt;
== Build with 44Net resources ==&lt;br /&gt;
If you’re arranging your own connectivity through an ISP, transit provider, data center, or cloud, start with the resources you need.&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Address space ===&lt;br /&gt;
Request an assignment for your amateur radio network or project.&lt;br /&gt;
&lt;br /&gt;
[[Portal/Request Address Space|About address assignments →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Routing and BGP ===&lt;br /&gt;
Arrange for your upstream provider or your own network to announce your assigned addresses.&lt;br /&gt;
&lt;br /&gt;
[[BGP|Using 44Net with your provider →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== DNS ===&lt;br /&gt;
Give your systems names under ampr.org or delegate DNS to your own servers.&lt;br /&gt;
&lt;br /&gt;
[[DNS|DNS options and setup →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|&lt;br /&gt;
== See what people are building ==&lt;br /&gt;
Explore remote stations, club services, radio networks, and experiments built by 44Net participants. Find ideas for your own project, learn from other operators’ work, or find out how you can contribute yourself.&lt;br /&gt;
&lt;br /&gt;
[[What People Build|Explore participant projects →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
== Already participating? ==&lt;br /&gt;
[https://portal.ampr.org/ Open the Portal] to manage your account, assignments, and records.&lt;br /&gt;
&lt;br /&gt;
[[:Category:Device and platform guides|Setup guides]] · [[Get Help|Troubleshooting and help]] · [[Community|Community discussions]] · [[Contributing|Contribute to this Wiki]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== About 44Net ==&lt;br /&gt;
[[ARDC|ARDC]] administers the 44Net address space and supports amateur networking through infrastructure, services, and project support. Participants operate their own systems and networks, including independent projects with their own teams and ways to get involved.&lt;br /&gt;
&lt;br /&gt;
This Wiki explains the available resources and projects and documents how to use them.&lt;br /&gt;
&lt;br /&gt;
[[About 44Net|About 44Net and its history →]] · [[Eligibility|Eligibility]] · [[EULA|Terms of use]] · [[Archive|Earlier documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3101</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3101"/>
		<updated>2026-09-30T22:35:40Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:44Net Main Page}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Lead|44Net is a community of licensed radio amateurs using Public IP addresses to build networks.}}&lt;br /&gt;
&lt;br /&gt;
Connect a Raspberry Pi, run services for your club, or build a network. 44Net provides free IP address resources for licensed radio amateurs, with several ways to put them to use.&lt;br /&gt;
&lt;br /&gt;
You can connect through an existing network or project, or obtain addresses and arrange your own routing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[#Find a way to connect|Explore ways to connect]]&#039;&#039;&#039; · &#039;&#039;&#039;[[#Build with 44Net resources|Get address resources]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
=== Find a way to connect ===&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== 44Net Connect ====&lt;br /&gt;
&#039;&#039;&#039;Public IP addresses for your devices and networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a WireGuard tunnel over your existing internet connection to give your Raspberry Pi, computer, or network a public 44Net address.&lt;br /&gt;
&lt;br /&gt;
[[44Net Connect|Get started with Connect →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== IPIP Mesh ====&lt;br /&gt;
&#039;&#039;&#039;Connect with other participating amateur networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run a gateway that exchanges traffic directly with other Mesh gateways through IP-in-IP tunnels over the Internet.&lt;br /&gt;
&lt;br /&gt;
[[IPIP Mesh|Explore the IPIP Mesh →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== Networks and community projects ====&lt;br /&gt;
&#039;&#039;&#039;Find something interesting to join, use, or help build&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explore independently operated networks and projects, including regional radio networks and shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
[[Projects|Browse networks and projects →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=primary|&lt;br /&gt;
== Build with 44Net resources ==&lt;br /&gt;
If you’re arranging your own connectivity through an ISP, transit provider, data center, or cloud, start with the resources you need.&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Address space ===&lt;br /&gt;
Request an assignment for your amateur radio network or project.&lt;br /&gt;
&lt;br /&gt;
[[Portal/Request Address Space|About address assignments →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Routing and BGP ===&lt;br /&gt;
Arrange for your upstream provider or your own network to announce your assigned addresses.&lt;br /&gt;
&lt;br /&gt;
[[BGP|Using 44Net with your provider →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== DNS ===&lt;br /&gt;
Give your systems names under ampr.org or delegate DNS to your own servers.&lt;br /&gt;
&lt;br /&gt;
[[DNS|DNS options and setup →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|&lt;br /&gt;
== See what people are building ==&lt;br /&gt;
Explore remote stations, club services, radio networks, and experiments built by 44Net participants. Find ideas for your own project, learn from other operators’ work, or find out how you can contribute yourself.&lt;br /&gt;
&lt;br /&gt;
[[What People Build|Explore participant projects →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
== Already participating? ==&lt;br /&gt;
[https://portal.ampr.org/ Open the Portal] to manage your account, assignments, and records.&lt;br /&gt;
&lt;br /&gt;
[[:Category:Device and platform guides|Setup guides]] · [[Get Help|Troubleshooting and help]] · [[Community|Community discussions]] · [[Contributing|Contribute to this Wiki]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== About 44Net ==&lt;br /&gt;
[[ARDC|ARDC]] administers the 44Net address space and supports amateur networking through infrastructure, services, and project support. Participants operate their own systems and networks, including independent projects with their own teams and ways to get involved.&lt;br /&gt;
&lt;br /&gt;
This Wiki explains the available resources and projects and documents how to use them.&lt;br /&gt;
&lt;br /&gt;
[[About 44Net|About 44Net and its history →]] · [[Eligibility|Eligibility]] · [[EULA|Terms of use]] · [[Archive|Earlier documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Internet_Requirements&amp;diff=3100</id>
		<title>Internet Requirements</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Internet_Requirements&amp;diff=3100"/>
		<updated>2026-09-30T22:33:04Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Internet Requirements}}&lt;br /&gt;
&lt;br /&gt;
44Net does not provide Internet service, so you will need your own Internet connection. This page describes the requirements for your Internet connection to support 44Net services.&lt;br /&gt;
&lt;br /&gt;
== 44Net Connect ==&lt;br /&gt;
&lt;br /&gt;
44Net Connect is the most flexible way to get 44Net onto your device. It works over pretty much any Internet connection that allows outbound UDP traffic, and it can handle changes in your IP address or network seamlessly, which is helpful for devices that roam or change networks.&lt;br /&gt;
&lt;br /&gt;
It can work over home broadband, cellular, satellite, and public Wi-Fi. It can also work behind NAT and CGNAT, and even on some connections that block VPN traffic.&lt;br /&gt;
&lt;br /&gt;
See [[44Net Connect/Quick Start|Connect Quick Start]].&lt;br /&gt;
&lt;br /&gt;
== IPIP Mesh ==&lt;br /&gt;
&lt;br /&gt;
The IPIP Mesh is a long-running project to interconnect 44Net subnets over the Internet using a mesh of IP-in-IP tunnels. Its design assumes an Internet that is largely open and unrestricted, which is less the case today than it was when the project started. It is still possible to participate in the IPIP Mesh, but you may run into obstacles with some ISPs.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
==== Inbound access ====&lt;br /&gt;
&lt;br /&gt;
For IPIP Mesh to work, your Internet connection and all intermediate devices, including ISP-provided equipment, must allow IP-in-IP traffic (IP protocol 4).&lt;br /&gt;
&lt;br /&gt;
If you use RIP route updates, your gateway must accept the RIPv2 packets on UDP port 520 inside the IPIP tunnel. This does not require opening UDP port 520 on your public Internet connection. See [[IPIP Mesh/Firewalls|Mesh firewall guidance]].&lt;br /&gt;
&lt;br /&gt;
==== Public IP address ====&lt;br /&gt;
&lt;br /&gt;
Your public IP address does not need to be static, but it must be reachable from the Internet. If your ISP uses CGNAT, you almost certainly cannot participate in the IPIP Mesh.&lt;br /&gt;
&lt;br /&gt;
==== DNS A record ====&lt;br /&gt;
&lt;br /&gt;
You must configure a DNS hostname that resolves to your public IP address. This hostname is periodically resolved by the Portal to update the IPIP tunnel endpoints broadcast from the gateway via RIP. You can use your own domain name, a free dynamic DNS service, or a free &amp;lt;callsign&amp;gt;.ampr.org record you set up in the Portal.&lt;br /&gt;
&lt;br /&gt;
If your public IP address is not static, you will need a dynamic DNS service to keep your hostname updated. The Portal does not currently provide this.&lt;br /&gt;
&lt;br /&gt;
See [[DNS|DNS setup]] and [[IPIP Mesh/Gateways|gateway setup guides]].&lt;br /&gt;
&lt;br /&gt;
== BGP-announced subnets ==&lt;br /&gt;
&lt;br /&gt;
Announcing via BGP is the most advanced way to get 44Net onto your network.&lt;br /&gt;
&lt;br /&gt;
For running a router on your premises, you will need a connection to a provider willing to handle your subnet.&lt;br /&gt;
&lt;br /&gt;
To announce your subnet from a cloud provider, you will need a provider that supports BYOIP (Bring Your Own IP) and accepts 44Net subnets. In particular, the provider must allow you to announce your subnet [[RPKI and ROAs on 44Net|without RPKI ROAs.]]&lt;br /&gt;
&lt;br /&gt;
See [[BGP/Quick Start|BGP Quick Start]] and [[Guide for ISPs]].&lt;br /&gt;
&lt;br /&gt;
== Speed and quality ==&lt;br /&gt;
&lt;br /&gt;
The speed and quality of service required depends on the intended use of your connection. The WireGuard protocol used by 44Net Connect is designed to be efficient and resilient, and the link itself usually tolerates variable connection quality. The application running over the link may be more sensitive, however, including things like streaming, voice, remote desktop, or video.&lt;br /&gt;
&lt;br /&gt;
For example, a typical VOIP call generally needs only about 64kbps of bandwidth, so high speeds are not usually necessary for voice applications like IRLP, Allstar, or DMR. LTE or Starlink standby mode may be more than sufficient. Voice applications are sometimes sensitive to packet loss, jitter, and latency, however, so an unstable or marginal connection may work fine or it might not.&lt;br /&gt;
&lt;br /&gt;
Remote operation via remote desktop or a lightweight web UI might only sip bandwidth as well, even streaming audio. Voice QSOs could be fine as far as bandwidth and latency are concerned, but time-sensitive applications like FT8 might not be viable.&lt;br /&gt;
&lt;br /&gt;
== Things to check before you start ==&lt;br /&gt;
&lt;br /&gt;
=== Speed, latency, jitter, and packet loss ===&lt;br /&gt;
Testing these may uncover problems that affect your application. You can check these using a speed test like [https://testmy.net/ TestMy] or [https://www.speedtest.net/ Speedtest]. Check both download and upload speeds.&lt;br /&gt;
&lt;br /&gt;
=== Connection stability ===&lt;br /&gt;
Less of an issue on typical Internet connections, but a remote site might be on a less stable connection. Many routers record connection quality, which can be useful for estimating link stability. UniFi, for example, has a chart showing packet loss and latency over time.&lt;br /&gt;
&lt;br /&gt;
=== Am I on CGNAT? ===&lt;br /&gt;
You can check whether you might be behind CGNAT using an online tool like [https://portwarp.com/tools/cgnat-detector PortWarp CGNAT Detector]. If you are behind CGNAT, you will not be able to participate in the IPIP Mesh or announce your own subnet via BGP, so it’ll be 44Net Connect or nothing for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh&amp;diff=3099</id>
		<title>IPIP Mesh</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh&amp;diff=3099"/>
		<updated>2026-09-30T22:33:03Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IPIP Mesh}}&lt;br /&gt;
&lt;br /&gt;
The IPIP Mesh connects participating amateur radio networks through tunnels over the Internet. You operate a gateway that exchanges traffic between your 44Net network and other participants’ gateways serving their 44Net networks. These may be single systems, home or club LANs, or larger networks.&lt;br /&gt;
&lt;br /&gt;
You can use the Mesh to reach other participants’ services, share your own, and generally experiment with networking.&lt;br /&gt;
&lt;br /&gt;
ARDC supports the project and operates a gateway that provides connectivity between the Mesh and the Internet. Each participant is responsible for their own gateway and its operation.&lt;br /&gt;
&lt;br /&gt;
== Before you start ==&lt;br /&gt;
You’ll need a [[Portal/Sign Up|Portal account]] with a [[Verification|verified amateur radio callsign]], and a computer or router that supports IPIP and can maintain Mesh routes. Raspberry Pis, Linux servers, and cloud instances are common choices.&lt;br /&gt;
&lt;br /&gt;
Your gateway also needs a reachable public IPv4 endpoint on your existing internet connection. Your ISP, router, and firewall must allow IP protocol 4 (IP-in-IP). If you use RIP route updates, your gateway must also accept those updates on UDP port 520 inside the IPIP tunnel; this does not require opening UDP port 520 on your public Internet connection. Check the [[Internet Requirements#IPIP Mesh|Internet requirements for IPIP Mesh]] before choosing equipment or requesting an assignment.&lt;br /&gt;
&lt;br /&gt;
The public endpoint is for carrying the tunnels between gateways. The 44Net Mesh addresses identify the systems you connect to, through the gateways.&lt;br /&gt;
&lt;br /&gt;
== What can you connect to? ==&lt;br /&gt;
The Mesh connects you to other networks on the Mesh. Each gateway uses a shared directory of subnets and endpoints to send traffic directly to the destination gateway. The services you can use depend on what their operators make available and permit through their firewalls.&lt;br /&gt;
&lt;br /&gt;
A 44Net address alone does not make a system part of the Mesh. [[44Net Connect]] and independently routed networks have their own connection arrangements. Joining the Mesh does not automatically give you access to them, and joining them does not give you access to the Mesh.&lt;br /&gt;
&lt;br /&gt;
Limited access from the public Internet is available through [[IPIP Mesh/Amprgw|Amprgw, the shared Internet gateway]]. Inbound traffic requires the destination host’s Mesh address to be registered in [[DNS|ampr.org DNS]].&lt;br /&gt;
&lt;br /&gt;
The Mesh does not provide general-purpose Internet access. Your gateway should route traffic to registered Mesh subnets through the Mesh and other traffic through your existing Internet connection.&lt;br /&gt;
&lt;br /&gt;
== How will you participate? ==&lt;br /&gt;
&lt;br /&gt;
=== Operate your own gateway ===&lt;br /&gt;
Use a computer or router to handle the tunnels and routes for your Mesh subnet. You configure it as a gateway, assign addresses to your systems, and arrange for their Mesh traffic and replies to pass through it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[#Platform guides|Find a gateway setup guide →]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See [[IPIP Mesh/Gateways|how Mesh gateways connect]] for more about the arrangement.&lt;br /&gt;
&lt;br /&gt;
=== Participate through an existing network ===&lt;br /&gt;
Some amateur networks participate in the Mesh, and their operators may help you connect through existing infrastructure. Ask the network’s operators what they provide and what you would need to run. Explore [[Projects|independently operated networks and projects]] to find one that interests you.&lt;br /&gt;
&lt;br /&gt;
== What happens during setup? ==&lt;br /&gt;
For your own gateway, the main steps are:&lt;br /&gt;
&lt;br /&gt;
# [[Portal/Request Address Space|Request an address assignment]] for IPIP Mesh use.&lt;br /&gt;
# Register your gateway’s public endpoint and associate your Mesh subnet with it in the Portal, so other gateways can learn how to reach you.&lt;br /&gt;
# Configure IPIP and a way to maintain routes to other Mesh networks, following a guide for your platform.&lt;br /&gt;
# Configure addressing, routing, and firewall rules for your local systems, then check communication with another participant.&lt;br /&gt;
&lt;br /&gt;
== Once you’re connected ==&lt;br /&gt;
Keep your gateway’s software, routes, and Portal endpoint information current. You decide which systems and services to expose, and maintain the firewall rules that allow access to them.&lt;br /&gt;
&lt;br /&gt;
IPIP does not encrypt traffic. Use encrypted application protocols where needed. See [[IPIP Mesh/Firewalls|Mesh firewall guidance]] for more about controlling traffic, and [[Get Help]] for setup or operating questions.&lt;br /&gt;
&lt;br /&gt;
== Guides and reference ==&lt;br /&gt;
These pages cover mesh gateways, setup, and routing. Some guides describe older systems and have not been revalidated.&lt;br /&gt;
&lt;br /&gt;
=== Gateways ===&lt;br /&gt;
* [[IPIP Mesh/Gateways|How mesh gateways connect]]&lt;br /&gt;
* [[IPIP Mesh/Registering Your Gateway|Registering your gateway]]&lt;br /&gt;
* [[IPIP Mesh/Amprgw|The shared Internet gateway (Amprgw)]]&lt;br /&gt;
* [[IPIP Mesh/Firewalls|Firewall configuration]]&lt;br /&gt;
* [[IPIP Mesh/Filtering RFC1918 Addresses|Filtering RFC1918 addresses]]&lt;br /&gt;
&lt;br /&gt;
=== Platform guides ===&lt;br /&gt;
* [[IPIP Mesh/Linux|Linux]] and [[IPIP Mesh/Ubuntu Linux Gateway Example|Ubuntu example]]&lt;br /&gt;
* [[IPIP Mesh/K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms|K7ILO’s Debian 11 gateway build]] (unfinished)&lt;br /&gt;
* [[IPIP Mesh/macOS|macOS]] (unfinished)&lt;br /&gt;
* [[IPIP Mesh/Cisco|Cisco]]&lt;br /&gt;
* [[IPIP Mesh/MikroTik|MikroTik]] and [[IPIP Mesh/MikroTik RouterOS 7 Container|RouterOS 7 container]]&lt;br /&gt;
* [[IPIP Mesh/OpenBSD|OpenBSD]]&lt;br /&gt;
* [[IPIP Mesh/OpenWrt|OpenWrt]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter|Ubiquiti EdgeRouter: single tunnel]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd|Ubiquiti EdgeRouter with ampr-ripd]]&lt;br /&gt;
* [[IPIP Mesh/VyOS|VyOS]]&lt;br /&gt;
&lt;br /&gt;
For other connection methods, see [[:Category:Device and platform guides|device and platform guides]].&lt;br /&gt;
&lt;br /&gt;
=== Routing references and tools ===&lt;br /&gt;
* [[IPIP Mesh/RIP|RIP route announcements]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt|Encap.txt]] and [[IPIP Mesh/Encap.txt/get-encap|get-encap script]]&lt;br /&gt;
* [[IPIP Mesh/Ampr-ripd|ampr-ripd]], [[IPIP Mesh/Rip44d|rip44d]], and [[IPIP Mesh/RIP44.lua|RIP44.lua]]&lt;br /&gt;
* [[IPIP Mesh/Munge script|Munge scripts]] and [[IPIP Mesh/Startampr|startampr]]&lt;br /&gt;
&lt;br /&gt;
=== Historical services ===&lt;br /&gt;
* [[IPIP Mesh/OH7LZB VPN|OH7LZB VPN]] (reported unavailable since May 2024)&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;br /&gt;
[[Category:IPIP Mesh]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Quick_Start&amp;diff=3098</id>
		<title>IPIP Mesh/Quick Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Quick_Start&amp;diff=3098"/>
		<updated>2026-09-30T22:33:03Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IPIP Mesh Quick Start (Stub)}}&lt;br /&gt;
&lt;br /&gt;
== What this page is ==&lt;br /&gt;
This is an orientation stub for joining the shared IPIP Mesh model on 44Net.&lt;br /&gt;
A full quick start procedure is not published yet.&lt;br /&gt;
&lt;br /&gt;
== What you can do today ==&lt;br /&gt;
* Confirm that a shared mesh model fits your goals in [[Provisioning Methods|Provisioning Methods]].&lt;br /&gt;
* Complete account and verification prerequisites in [[GetStarted|Getting started]] and [[Portal/Sign Up|Portal Sign Up]].&lt;br /&gt;
* Identify local or regional peers and gateway expectations via [[Community|Community and mailing lists]].&lt;br /&gt;
* Review routing responsibilities in [[Routing|Routing and connectivity]].&lt;br /&gt;
&lt;br /&gt;
== What this page will cover ==&lt;br /&gt;
* Prerequisites for mesh participation and peering.&lt;br /&gt;
* Endpoint setup expectations and addressing model.&lt;br /&gt;
* Shared gateway behavior and traffic flow patterns.&lt;br /&gt;
* Operational coordination with regional maintainers.&lt;br /&gt;
* Validation and troubleshooting checklist.&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[Provisioning Methods|Provisioning Methods]]&lt;br /&gt;
* [[GetStarted|Getting started]]&lt;br /&gt;
* [[Routing|Routing and connectivity]]&lt;br /&gt;
* [[Community|Community and mailing lists]]&lt;br /&gt;
* [[Portal/Request Address Space|Request Address Space]]&lt;br /&gt;
* [[Contributing|Contributing]]&lt;br /&gt;
* [[Decentralization|How Connect, IPIP Mesh, and BGP fit together]]&lt;br /&gt;
&lt;br /&gt;
== Contribute / next steps ==&lt;br /&gt;
If you already operate in the mesh, contribute a minimal reproducible setup path with topology notes and failure modes. Submit through [[Contributing]] so this stub can become a complete Quick Start.&lt;br /&gt;
&lt;br /&gt;
== Older docs and notes ==&lt;br /&gt;
See [[IPIP Mesh#Guides and reference|the IPIP Mesh documentation directory]] for platform guides and routing tools. Earlier pages that may still be useful:&lt;br /&gt;
* [[IPIP Mesh/Gateways|Gateway]]&lt;br /&gt;
* [[IPIP Mesh/Registering Your Gateway|Registering Your Gateway]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt|Encap.txt]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt/get-encap|Encap.txt/get-encap]]&lt;br /&gt;
* [[IPIP Mesh/Rip44d|Rip44d]]&lt;br /&gt;
* [[IPIP Mesh/RIP44.lua|RIP44.lua]]&lt;br /&gt;
* [[IPIP Mesh/Amprgw|Amprgw]]&lt;br /&gt;
* [[IPIP Mesh/Ampr-ripd|Ampr-ripd]]&lt;br /&gt;
* [[IPIP Mesh/Linux|Setting up a gateway on Linux]]&lt;br /&gt;
* [[IPIP Mesh/OpenBSD|Setting up a gateway on OpenBSD]]&lt;br /&gt;
* See [[Archive]] for more.&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;br /&gt;
[[Category:IPIP Mesh]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect&amp;diff=3097</id>
		<title>44Net Connect</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect&amp;diff=3097"/>
		<updated>2026-09-30T22:33:03Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:44Net Connect}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
44Net Connect gives your device or network public IP addresses through a {{Term|WireGuard}} tunnel over your existing internet connection. ARDC operates the endpoint at the other end of the tunnel and routes traffic between your equipment and the Internet.&lt;br /&gt;
&lt;br /&gt;
You can use it to host services, reach station equipment remotely, or experiment with networking.&lt;br /&gt;
&lt;br /&gt;
== Before you start ==&lt;br /&gt;
You’ll need a [[Portal/Sign Up|Portal account]] with a [[Verification|verified amateur radio callsign]], an existing internet connection, and a device or router that can run WireGuard.&lt;br /&gt;
&lt;br /&gt;
You do not need to request addresses separately in the Portal. Connect assigns the device’s addresses when you create a tunnel. For a routed subnet, request a network in the Connect dashboard and attach it to your tunnel.&lt;br /&gt;
&lt;br /&gt;
Connect can work behind {{Term|NAT}} or {{Term|CGNAT}}, including on residential broadband, mobile, and satellite connections. Your connection must allow WireGuard traffic to reach the Connect endpoint.&lt;br /&gt;
&lt;br /&gt;
== What would you like to connect? ==&lt;br /&gt;
&lt;br /&gt;
=== Single device ===&lt;br /&gt;
Run WireGuard on the device you want to connect, such as a Raspberry Pi, server, router, cellular hotspot, or laptop. When you create a tunnel, Connect issues an IPv4 address, an IPv6 address, and a configuration for that device. You don’t need to request a separate address assignment before creating the tunnel.&lt;br /&gt;
&lt;br /&gt;
This is a useful place to start if you want to connect one system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[44Net Connect/Quick Start|Set up a single device →]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See [[44Net Connect/Supported Platforms|device guides]] for platform-specific instructions, or read more about [[44Net Connect/Single Device Tunnel|single-device tunnels]].&lt;br /&gt;
&lt;br /&gt;
=== Multiple devices or a network ===&lt;br /&gt;
You can either create a tunnel for each individual device, or run WireGuard on a router or gateway that connects a group of devices. The gateway handles the tunnel and routes traffic for the devices behind it. The individual devices do not need to run WireGuard themselves.&lt;br /&gt;
&lt;br /&gt;
This involves configuring addressing, routing, and firewall rules for the network as well as the tunnel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[44Net Connect/Routed Subnet|Plan and set up a routed subnet →]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== What happens during setup? ==&lt;br /&gt;
You sign in to the [https://connect.44net.cloud Connect dashboard] using your Portal account, choose an endpoint, and create a tunnel. The dashboard supplies a WireGuard configuration to install on your device or gateway. The linked guides cover the steps for each setup.&lt;br /&gt;
&lt;br /&gt;
Your Portal account at [https://portal.ampr.org/ portal.ampr.org] holds your identity and callsign verification. The separate Connect dashboard at [https://connect.44net.cloud connect.44net.cloud] is where you manage tunnels and obtain their configurations.&lt;br /&gt;
&lt;br /&gt;
{{SectionFigure|file=44Net_Connect_overview.png|caption=Traffic between the Internet and your Connect addresses passes through a Connect endpoint and the WireGuard tunnel to your equipment.}}&lt;br /&gt;
&lt;br /&gt;
== Securing your connection ==&lt;br /&gt;
You decide which services to run and make accessible. Incoming connections depend on your service configuration and firewall rules. Take care: an active tunnel can unexpectedly make every service accessible to the public Internet, so check your firewall and service settings before you activate the tunnel. See [[Firewalling Basics|firewalling basics]] for guidance.&lt;br /&gt;
&lt;br /&gt;
Your routing configuration determines which outgoing traffic uses the tunnel. You can route all traffic through it, or select traffic by destination or source address. Replies from your Connect address to public Internet clients may also need to use the tunnel; selecting only destinations within 44Net does not cover those replies. The procedures depend on your system.&lt;br /&gt;
&lt;br /&gt;
ARDC operates the Connect endpoints. You maintain your device or gateway, its software, and its firewall.&lt;br /&gt;
&lt;br /&gt;
WireGuard encrypts traffic between your equipment and the Connect endpoint; it does not provide end-to-end encryption beyond that endpoint. Connect does not provide anonymity or attach your network to the [[IPIP Mesh]] or other community projects, which have separate participation and routing arrangements.&lt;br /&gt;
&lt;br /&gt;
If you’re ready to get started, see [[44Net_Connect/Quick_Start|Quick Start]]. For help with setup or operation, see [[Get Help]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;br /&gt;
[[Category:44Net Connect]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3096</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3096"/>
		<updated>2026-09-30T22:33:02Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: mw push&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:44Net Main Page}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{Lead|Public IP addresses for amateur radio projects}}&lt;br /&gt;
&lt;br /&gt;
Connect a Raspberry Pi, run services for your club, or build a network. 44Net provides free IP address resources for licensed radio amateurs, with several ways to put them to use.&lt;br /&gt;
&lt;br /&gt;
You can connect through an existing network or project, or obtain addresses and arrange your own routing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[#Find a way to connect|Explore ways to connect]]&#039;&#039;&#039; · &#039;&#039;&#039;[[#Build with 44Net resources|Get address resources]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
== Find a way to connect ==&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== 44Net Connect ===&lt;br /&gt;
&#039;&#039;&#039;Public IP addresses for your devices and networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a WireGuard tunnel over your existing internet connection to give your Raspberry Pi, computer, or network a public 44Net address.&lt;br /&gt;
&lt;br /&gt;
[[44Net Connect|Get started with Connect →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== IPIP Mesh ===&lt;br /&gt;
&#039;&#039;&#039;Connect with other participating amateur networks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run a gateway that exchanges traffic directly with other Mesh gateways through IP-in-IP tunnels over the Internet.&lt;br /&gt;
&lt;br /&gt;
[[IPIP Mesh|Explore the IPIP Mesh →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Networks and community projects ===&lt;br /&gt;
&#039;&#039;&#039;Find something interesting to join, use, or help build&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explore independently operated networks and projects, including regional radio networks and shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
[[Projects|Browse networks and projects →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=primary|&lt;br /&gt;
== Build with 44Net resources ==&lt;br /&gt;
If you’re arranging your own connectivity through an ISP, transit provider, data center, or cloud, start with the resources you need.&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Address space ===&lt;br /&gt;
Request an assignment for your amateur radio network or project.&lt;br /&gt;
&lt;br /&gt;
[[Portal/Request Address Space|About address assignments →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Routing and BGP ===&lt;br /&gt;
Arrange for your upstream provider or your own network to announce your assigned addresses.&lt;br /&gt;
&lt;br /&gt;
[[BGP|Using 44Net with your provider →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== DNS ===&lt;br /&gt;
Give your systems names under ampr.org or delegate DNS to your own servers.&lt;br /&gt;
&lt;br /&gt;
[[DNS|DNS options and setup →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|&lt;br /&gt;
== See what people are building ==&lt;br /&gt;
Explore remote stations, club services, radio networks, and experiments built by 44Net participants. Find ideas for your own project, learn from other operators’ work, or find out how you can contribute yourself.&lt;br /&gt;
&lt;br /&gt;
[[What People Build|Explore participant projects →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
== Already participating? ==&lt;br /&gt;
[https://portal.ampr.org/ Open the Portal] to manage your account, assignments, and records.&lt;br /&gt;
&lt;br /&gt;
[[:Category:Device and platform guides|Setup guides]] · [[Get Help|Troubleshooting and help]] · [[Community|Community discussions]] · [[Contributing|Contribute to this Wiki]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== About 44Net ==&lt;br /&gt;
[[ARDC|ARDC]] administers the 44Net address space and supports amateur networking through infrastructure, services, and project support. Participants operate their own systems and networks, including independent projects with their own teams and ways to get involved.&lt;br /&gt;
&lt;br /&gt;
This Wiki explains the available resources and projects and documents how to use them.&lt;br /&gt;
&lt;br /&gt;
[[About 44Net|About 44Net and its history →]] · [[Eligibility|Eligibility]] · [[EULA|Terms of use]] · [[Archive|Earlier documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Talk:AMPRNet_VPN&amp;diff=3091</id>
		<title>Talk:AMPRNet VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Talk:AMPRNet_VPN&amp;diff=3091"/>
		<updated>2026-09-29T19:28:03Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize remaining IPIP Mesh articles and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:IPIP Mesh/OH7LZB VPN]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Archive/Home&amp;diff=3090</id>
		<title>Archive/Home</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Archive/Home&amp;diff=3090"/>
		<updated>2026-09-29T19:28:02Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize remaining IPIP Mesh articles and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the AMPRNet Wiki.&lt;br /&gt;
&lt;br /&gt;
44Net is shorthand for Internet network 44 (44.0.0.0/9 and 44.128.0.0/10), also known as AMPRNet. Since its allocation to amateur radio in the mid-1980s, the network has been used by amateur radio operators to conduct scientific research and to experiment with digital communications over radio. The goals are to of advance the state of the art of Amateur Radio networking, and to educate amateur radio operators in these techniques.&lt;br /&gt;
&lt;br /&gt;
To request an assignment of IPv4 addresses see below.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Starting points ==&lt;br /&gt;
* [[IPIP Mesh/Quickstart|Quickstart]] guide for getting onto the 44Net&lt;br /&gt;
* Basic information about 44Net and the [[ampr.org]] domain&lt;br /&gt;
* [[Services]] available on 44Net&lt;br /&gt;
* If you are looking to get an IP assignment from ARDC please read the [[Portal]] page.&lt;br /&gt;
* Frequently Asked Questions (FAQ) [[FAQ]]&lt;br /&gt;
* [[Getting started with Linux and packet radio]]&lt;br /&gt;
* [[Networks that use 44Net]]&lt;br /&gt;
&lt;br /&gt;
== Portal how to&#039;s ==&lt;br /&gt;
* Portal Introduction [[Portal intro]]&lt;br /&gt;
* Organization Setup [[Organizations in the Portal]]&lt;br /&gt;
* Call Sign Verification [[Portal Call Sign Verification]]&lt;br /&gt;
&lt;br /&gt;
== How to connect to the 44Net ==&lt;br /&gt;
&lt;br /&gt;
* Instructions for [[IPIP Mesh/Linux|setting up a Linux gateway]]&lt;br /&gt;
* Instructions for [[IPIP Mesh/MikroTik|setting up a gateway on MikroTik Routers running ROS6]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/MikroTik RouterOS 7 Container|setting up a gateway on MikroTik Routers running ROS7 using a container on arm32, arm64 and x86-64]]&lt;br /&gt;
* Instructions for [[IPIP Mesh/OpenBSD|setting up an OpenBSD gateway]]&lt;br /&gt;
* Instructions for [[IPIP Mesh/Cisco|setting up a  gateway on Cisco Routers]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/OpenWrt|setting up a gateway on OpenWRT]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/Ubiquiti EdgeRouter|setting up a gateway on Ubiquiti EdgeRouter]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/VyOS|setting up a gateway on a VyOS instance]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd|Installing ampr-ripd on a Ubiquiti EdgeRouter or EdgeRouter X]].&lt;br /&gt;
* Instructions for [[Announcing_your_allocation_directly|directly announcing your assignment via your Internet Service Provider (ISP)]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/OH7LZB VPN|Accessing 44Net via VPN]] (experimental).&lt;br /&gt;
* &amp;lt;b&amp;gt;[[FAQ]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* If you already operate a [[IPIP Mesh/Gateways|gateway]] please ensure you have registered on the [[Portal]] and &amp;quot;claimed&amp;quot; your [[IPIP Mesh/Gateways|gateway]].&lt;br /&gt;
* After your gateway is operational, consider &#039;&#039;&#039;[[IPIP Mesh/Firewalls|Firewalls]]&#039;&#039;&#039; and other best practices&lt;br /&gt;
&lt;br /&gt;
== Groups.io ==&lt;br /&gt;
We are now on Groups.io  Please consider joining https://ardc.groups.io/g/44net&lt;br /&gt;
&lt;br /&gt;
== Mailing list ==&lt;br /&gt;
To keep up-to-date on AMPRNet information please consider joining the [[44Net mailing list]].&lt;br /&gt;
&lt;br /&gt;
== Contribute! ==&lt;br /&gt;
If you wish to contribute to the wiki, please send an email to &amp;lt;tt&amp;gt;wiki (at) ampr.org&amp;lt;/tt&amp;gt; introducing yourself. Please specify your full name and your amateur radio callsign. A login will then be created for you.&lt;br /&gt;
&lt;br /&gt;
== Terms of service ==&lt;br /&gt;
Use of AMPRNet address space is governed by these [https://www.ampr.org/terms-of-service/ Terms of Service]&lt;br /&gt;
&lt;br /&gt;
== Other useful features ==&lt;br /&gt;
* Instruction on using the [[ampr-map]] position reporting&lt;br /&gt;
&lt;br /&gt;
== All pages ==&lt;br /&gt;
[https://wiki.ampr.org/wiki/Special:AllPages Here&#039;s a list of all pages currently on the 44Net Wiki]&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Archive]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Archive&amp;diff=3089</id>
		<title>Archive</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Archive&amp;diff=3089"/>
		<updated>2026-09-29T19:28:02Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize remaining IPIP Mesh articles and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Archive}}&lt;br /&gt;
&lt;br /&gt;
This page indexes earlier documentation and historical notes that remain useful while the main documentation is reorganized. For the current onboarding path, start with [[Main Page]], [[GetStarted]], and [[Provisioning Methods]].&lt;br /&gt;
&lt;br /&gt;
== Entry points ==&lt;br /&gt;
* [[Archive/Home]]&lt;br /&gt;
* [[Archive/Main Page]]&lt;br /&gt;
* [[GetStarted]]&lt;br /&gt;
* [[IPIP Mesh/Quickstart|Quickstart]]&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
&lt;br /&gt;
== VPN efforts ==&lt;br /&gt;
* [[AMPRNet VPN]]&lt;br /&gt;
&lt;br /&gt;
== IPIP Mesh and gateways ==&lt;br /&gt;
* [[Tunnel]]&lt;br /&gt;
* [[IPIP Mesh/Ubuntu Linux Gateway Example|Ubuntu Linux Gateway Example]]&lt;br /&gt;
* [[IPIP Mesh/Gateways|Gateway]]&lt;br /&gt;
* [[IPIP Mesh/Registering Your Gateway|Registering Your Gateway]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt|Encap.txt]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt/get-encap|Encap.txt/get-encap]]&lt;br /&gt;
* [[IPIP Mesh/Rip44d|Rip44d]]&lt;br /&gt;
* [[IPIP Mesh/RIP44.lua|RIP44.lua]]&lt;br /&gt;
* [[IPIP Mesh/Amprgw|Amprgw]]&lt;br /&gt;
* [[IPIP Mesh/Ampr-ripd|Ampr-ripd]]&lt;br /&gt;
* [[Ampr-map]]&lt;br /&gt;
* [[IPIP Mesh/Startampr|Startampr]]&lt;br /&gt;
* [[IPIP Mesh/OH7LZB VPN|OH7LZB VPN]]&lt;br /&gt;
* [[AxMail-FAX]]&lt;br /&gt;
* [[IPIP Mesh/Munge script|Munge script]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd|Installing ampr-ripd on a Ubiquiti EdgeRouter or EdgeRouter X]]&lt;br /&gt;
&lt;br /&gt;
== Device-specific setup guides ==&lt;br /&gt;
* [[IPIP Mesh/Cisco|Setting up a gateway on Cisco Routers]]&lt;br /&gt;
* [[IPIP Mesh/Linux|Setting up a gateway on Linux]]&lt;br /&gt;
* [[IPIP Mesh/macOS|Setting up a gateway on MacOS]]&lt;br /&gt;
* [[IPIP Mesh/MikroTik|Setting up a gateway on MikroTik Routers]]&lt;br /&gt;
* [[IPIP Mesh/OpenBSD|Setting up a gateway on OpenBSD]]&lt;br /&gt;
* [[IPIP Mesh/OpenWrt|Setting up a gateway on OpenWRT]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter|Setting up a gateway on Ubiquiti EdgeRouter]]&lt;br /&gt;
* [[IPIP Mesh/VyOS|Setting up a gateway on a VyOS instance]]&lt;br /&gt;
* [[Setting up a complete gateway on Ubiquiti EdgeRouter]]&lt;br /&gt;
* [[Setting up a gateway in a ROS7 Mikrotik router container on arm32, arm64 and x86-64]]&lt;br /&gt;
* [[IPIP Mesh/MikroTik RouterOS 7 Container|Setting up a gateway in a ROS7 Mikrotik router container on arm32 arm64 and x86-64]]&lt;br /&gt;
* [[IPIP Mesh/K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms|K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms]]&lt;br /&gt;
&lt;br /&gt;
== BGP ==&lt;br /&gt;
* [[Routing your allocation via BGP]]&lt;br /&gt;
* [[Announcing your allocation directly]]&lt;br /&gt;
* [[FAQ|Why can’t I announce my allocation directly?]]&lt;br /&gt;
* [[SWIP]]&lt;br /&gt;
* [[NSP Details]]&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* [[DNS]]&lt;br /&gt;
* [[DNS/Overview]]&lt;br /&gt;
* [[DNS/Portal]]&lt;br /&gt;
* [[DNS/Portal/Subdomains]]&lt;br /&gt;
* [[DNS/Portal/Delegations]]&lt;br /&gt;
* [[DNS/Portal/Records]]&lt;br /&gt;
* [[DNS/Setup/OpenBSD Resolver]]&lt;br /&gt;
&lt;br /&gt;
== Portal ==&lt;br /&gt;
* [[Portal]]&lt;br /&gt;
* [[Portal/Introduction]]&lt;br /&gt;
* [[Portal/Request Address Space]]&lt;br /&gt;
* [[Portal intro]]&lt;br /&gt;
* [[Portal Call Sign Verification]]&lt;br /&gt;
* [[Organizations in the Portal]]&lt;br /&gt;
* [[How Organizations Work on the Portal]]&lt;br /&gt;
* [[Approving Small Subnets on the Portal]]&lt;br /&gt;
* [[Verification]]&lt;br /&gt;
* [[Requesting a block]]&lt;br /&gt;
&lt;br /&gt;
== Routing and networking ==&lt;br /&gt;
* [[Routing]]&lt;br /&gt;
* [[IPIP Mesh/RIP|RIP]]&lt;br /&gt;
* [[IPIP Mesh/Filtering RFC1918 Addresses|Filtering RFC1918 Addresses]]&lt;br /&gt;
* [[IPIP Mesh/Firewalls|Firewalls]]&lt;br /&gt;
* [[Ipv6]]&lt;br /&gt;
* [[Networks that use 44Net]]&lt;br /&gt;
* [[Services]]&lt;br /&gt;
* [[Services/Historic]]&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
* [[Community]]&lt;br /&gt;
* [[CommunityProjects]]&lt;br /&gt;
* [[44Net mailing list]]&lt;br /&gt;
* [[ARDC]]&lt;br /&gt;
* [[Ampr.org]]&lt;br /&gt;
* [[K2IE]]&lt;br /&gt;
&lt;br /&gt;
== Policies and legal ==&lt;br /&gt;
* [[EULA]]&lt;br /&gt;
* [[EULA FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Software and historical ==&lt;br /&gt;
* [[API]]&lt;br /&gt;
* [[Getting started with Linux and packet radio]]&lt;br /&gt;
* [[New Server]]&lt;br /&gt;
&lt;br /&gt;
== Duplicates / older entry points ==&lt;br /&gt;
* [[Setting up a complete gateway on Ubiquiti EdgeRouter]] (redirects to [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd|Ubiquiti EdgeRouter with ampr-ripd]])&lt;br /&gt;
* [[Setting up a gateway in a ROS7 Mikrotik router container on arm32, arm64 and x86-64]] (alternate title: [[IPIP Mesh/MikroTik RouterOS 7 Container|Setting up a gateway in a ROS7 Mikrotik router container on arm32 arm64 and x86-64]])&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Archive]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh&amp;diff=3088</id>
		<title>IPIP Mesh</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh&amp;diff=3088"/>
		<updated>2026-09-29T19:28:02Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize remaining IPIP Mesh articles and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IPIP Mesh (Stub)}}&lt;br /&gt;
&lt;br /&gt;
== What this page is ==&lt;br /&gt;
This is an overview stub for the IPIP Mesh participation model on 44Net.&lt;br /&gt;
For setup steps, start with [[IPIP Mesh/Quick Start|IPIP Mesh Quick Start]].&lt;br /&gt;
&lt;br /&gt;
== Start here ==&lt;br /&gt;
* [[IPIP Mesh/Quick Start|IPIP Mesh Quick Start]]&lt;br /&gt;
* [[Provisioning Methods|Provisioning Methods]]&lt;br /&gt;
* [[GetStarted|Getting started]]&lt;br /&gt;
* [[Routing|Routing and connectivity]]&lt;br /&gt;
* [[Community|Community and mailing lists]]&lt;br /&gt;
&lt;br /&gt;
== Existing documentation ==&lt;br /&gt;
These pages cover mesh gateways, setup, and routing. Some guides describe older systems and have not been revalidated.&lt;br /&gt;
&lt;br /&gt;
=== Gateways ===&lt;br /&gt;
* [[IPIP Mesh/Gateways|How mesh gateways connect]]&lt;br /&gt;
* [[IPIP Mesh/Registering Your Gateway|Registering your gateway]]&lt;br /&gt;
* [[IPIP Mesh/Amprgw|The shared Internet gateway (Amprgw)]]&lt;br /&gt;
* [[IPIP Mesh/Firewalls|Firewall configuration]]&lt;br /&gt;
* [[IPIP Mesh/Filtering RFC1918 Addresses|Filtering RFC1918 addresses]]&lt;br /&gt;
&lt;br /&gt;
=== Platform guides ===&lt;br /&gt;
* [[IPIP Mesh/Linux|Linux]] and [[IPIP Mesh/Ubuntu Linux Gateway Example|Ubuntu example]]&lt;br /&gt;
* [[IPIP Mesh/K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms|K7ILO’s Debian 11 gateway build]] (unfinished)&lt;br /&gt;
* [[IPIP Mesh/macOS|macOS]] (unfinished)&lt;br /&gt;
* [[IPIP Mesh/Cisco|Cisco]]&lt;br /&gt;
* [[IPIP Mesh/MikroTik|MikroTik]] and [[IPIP Mesh/MikroTik RouterOS 7 Container|RouterOS 7 container]]&lt;br /&gt;
* [[IPIP Mesh/OpenBSD|OpenBSD]]&lt;br /&gt;
* [[IPIP Mesh/OpenWrt|OpenWrt]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter|Ubiquiti EdgeRouter: single tunnel]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd|Ubiquiti EdgeRouter with ampr-ripd]]&lt;br /&gt;
* [[IPIP Mesh/VyOS|VyOS]]&lt;br /&gt;
&lt;br /&gt;
For other connection methods, see [[:Category:Device and platform guides|device and platform guides]].&lt;br /&gt;
&lt;br /&gt;
=== Routing references and tools ===&lt;br /&gt;
* [[IPIP Mesh/RIP|RIP route announcements]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt|Encap.txt]] and [[IPIP Mesh/Encap.txt/get-encap|get-encap script]]&lt;br /&gt;
* [[IPIP Mesh/Ampr-ripd|ampr-ripd]], [[IPIP Mesh/Rip44d|rip44d]], and [[IPIP Mesh/RIP44.lua|RIP44.lua]]&lt;br /&gt;
* [[IPIP Mesh/Munge script|Munge scripts]] and [[IPIP Mesh/Startampr|startampr]]&lt;br /&gt;
&lt;br /&gt;
=== Historical services ===&lt;br /&gt;
* [[IPIP Mesh/OH7LZB VPN|OH7LZB VPN]] (reported unavailable since May 2024)&lt;br /&gt;
&lt;br /&gt;
== What this page will cover ==&lt;br /&gt;
* What the IPIP Mesh model is and where it fits.&lt;br /&gt;
* Peering and topology expectations for mesh participants.&lt;br /&gt;
* Operational responsibilities in shared routing environments.&lt;br /&gt;
* Common validation and troubleshooting workflows.&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[IPIP Mesh/Quick Start|IPIP Mesh Quick Start]]&lt;br /&gt;
* [[Decentralization|How Connect, IPIP Mesh, and BGP fit together]]&lt;br /&gt;
* [[Provisioning Methods|Provisioning Methods]]&lt;br /&gt;
* [[Contributing|Contributing]]&lt;br /&gt;
&lt;br /&gt;
== Contribute / next steps ==&lt;br /&gt;
If you run an IPIP Mesh node and can share practical guidance, please contribute through [[Contributing]] so this stub can be expanded into a full reference page.&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;br /&gt;
[[Category:IPIP Mesh]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AMPRNet_VPN&amp;diff=3087</id>
		<title>AMPRNet VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AMPRNet_VPN&amp;diff=3087"/>
		<updated>2026-09-29T19:28:01Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize remaining IPIP Mesh articles and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IPIP Mesh/OH7LZB VPN]]&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:VPN]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/K7ILO%27S_Two_Interface_Debian_11_AmprNet_Gateway_Build_in_layman%27s_terms&amp;diff=3086</id>
		<title>IPIP Mesh/K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/K7ILO%27S_Two_Interface_Debian_11_AmprNet_Gateway_Build_in_layman%27s_terms&amp;diff=3086"/>
		<updated>2026-09-29T19:28:00Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize remaining IPIP Mesh articles and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Section nav|hub=IPIP Mesh|title=IPIP Mesh|category=IPIP Mesh}}&lt;br /&gt;
&lt;br /&gt;
Initial Server/Gateway Machine Setup&lt;br /&gt;
&lt;br /&gt;
The computer I had laying around to build my basic server/gateway was an old Dell OptiPlex GX280 (Intel 3.2Ghz CPU) with 3GB’s of RAM, 160GB HD (Yeah, I know overkill but that&#039;s the HD that was in the machine) and two 1Gb Ethernet adapters, 1 built-in and 1 Intel PCI Ethernet adapter I installed, where..&lt;br /&gt;
     1. the built-in Ethernet adapter is to my router for my Internet connection.  &lt;br /&gt;
     2. the PCI Ethernet adapter serves my AmprNet Network.&lt;br /&gt;
 &lt;br /&gt;
Because of the architecture of the computer, I had to use the 32bit version of Debian 11.5.0 netinstall image for this setup.  I like Debian mainly because, well because I like it, LOL.  BTW, it is not in the scope of these instructions to show you how to install Debian 11 so please search Google for information on the topic if needed.   Keep in mind though the SSH server and the standard system utilities were the only software options I selected for my bare Debian 11 installation.&lt;br /&gt;
&lt;br /&gt;
After the installation is completed, log in as root and make sure Debian has the latest fixes and patches by typing:&lt;br /&gt;
     apt update &amp;amp;&amp;amp; apt full-upgrade -y&lt;br /&gt;
&lt;br /&gt;
During these procedures I used root directly since to me, it was quicker to setup the server/gateway.  But if you want to use sudo, it is not installed by default on Debian 11 so again search Google on how to install it.  There are a lot of resources on the subject.  I installed sudo after getting the server/gateway up and running for future administration and security.  If the server/gateway does any updates from the command&#039;s above, reboot to make sure updates take affect (old Windows habit). Type:&lt;br /&gt;
     reboot&lt;br /&gt;
&lt;br /&gt;
Install other software for this setup.&lt;br /&gt;
&lt;br /&gt;
Descriptions..&lt;br /&gt;
     1. screen (optional):  This software allows you to connect back to a particular session if you are remote and loose connection to your server/gateway.&lt;br /&gt;
     2. compile tools:  Needed to compile software.&lt;br /&gt;
     3. iptables-persistent:  This installs the most used Linux firewall iptables and it&#039;s tools, well to my knowledge.  When asked, it&#039;s not necessary to save the current v.4 and v.6 iptables rules.&lt;br /&gt;
     4. psmisc:  Installed for the killall command.  Used for the update-server script found in the Optional Software and Task&#039;s section.&lt;br /&gt;
     5. curl (optional):  Used to install optional software found in the Optional Software and Task&#039;s section.&lt;br /&gt;
     6. cron:  Used to schedule task.  This is more than likely already installed.&lt;br /&gt;
     7. tcpdump: Useful networking tool.&lt;br /&gt;
     8. traceroute: Useful networking tool.  This is more than likely already installed.&lt;br /&gt;
 &lt;br /&gt;
To install these, Type:&lt;br /&gt;
     apt install -y screen build-essential iptables-persistent psmisc curl tcpdump&lt;br /&gt;
&lt;br /&gt;
Reboot.  (Again, old Windows habit) Type:&lt;br /&gt;
     reboot&lt;br /&gt;
 &lt;br /&gt;
Now let&#039;s turn this server machine into an AmprNet Gateway (Updates Coming so please check back soon)&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:How-To Guides]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Gateways]]&lt;br /&gt;
[[Category:Device and platform guides]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=K7ILO%27S_Two_Interface_Debian_11_AmprNet_Gateway_Build_in_layman%27s_terms&amp;diff=3085</id>
		<title>K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=K7ILO%27S_Two_Interface_Debian_11_AmprNet_Gateway_Build_in_layman%27s_terms&amp;diff=3085"/>
		<updated>2026-09-29T19:28:00Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page K7ILO&amp;#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&amp;#039;s terms to IPIP Mesh/K7ILO&amp;#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&amp;#039;s terms: Group remaining mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IPIP Mesh/K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/K7ILO%27S_Two_Interface_Debian_11_AmprNet_Gateway_Build_in_layman%27s_terms&amp;diff=3084</id>
		<title>IPIP Mesh/K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/K7ILO%27S_Two_Interface_Debian_11_AmprNet_Gateway_Build_in_layman%27s_terms&amp;diff=3084"/>
		<updated>2026-09-29T19:28:00Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page K7ILO&amp;#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&amp;#039;s terms to IPIP Mesh/K7ILO&amp;#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&amp;#039;s terms: Group remaining mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Initial Server/Gateway Machine Setup&lt;br /&gt;
&lt;br /&gt;
The computer I had laying around to build my basic server/gateway was an old Dell OptiPlex GX280 (Intel 3.2Ghz CPU) with 3GB’s of RAM, 160GB HD (Yeah, I know overkill but that&#039;s the HD that was in the machine) and two 1Gb Ethernet adapters, 1 built-in and 1 Intel PCI Ethernet adapter I installed, where..&lt;br /&gt;
     1. the built-in Ethernet adapter is to my router for my Internet connection.  &lt;br /&gt;
     2. the PCI Ethernet adapter serves my AmprNet Network.&lt;br /&gt;
 &lt;br /&gt;
Because of the architecture of the computer, I had to use the 32bit version of Debian 11.5.0 netinstall image for this setup.  I like Debian mainly because, well because I like it, LOL.  BTW, it is not in the scope of these instructions to show you how to install Debian 11 so please search Google for information on the topic if needed.   Keep in mind though the SSH server and the standard system utilities were the only software options I selected for my bare Debian 11 installation.&lt;br /&gt;
&lt;br /&gt;
After the installation is completed, log in as root and make sure Debian has the latest fixes and patches by typing:&lt;br /&gt;
     apt update &amp;amp;&amp;amp; apt full-upgrade -y&lt;br /&gt;
&lt;br /&gt;
During these procedures I used root directly since to me, it was quicker to setup the server/gateway.  But if you want to use sudo, it is not installed by default on Debian 11 so again search Google on how to install it.  There are a lot of resources on the subject.  I installed sudo after getting the server/gateway up and running for future administration and security.  If the server/gateway does any updates from the command&#039;s above, reboot to make sure updates take affect (old Windows habit). Type:&lt;br /&gt;
     reboot&lt;br /&gt;
&lt;br /&gt;
Install other software for this setup.&lt;br /&gt;
&lt;br /&gt;
Descriptions..&lt;br /&gt;
     1. screen (optional):  This software allows you to connect back to a particular session if you are remote and loose connection to your server/gateway.&lt;br /&gt;
     2. compile tools:  Needed to compile software.&lt;br /&gt;
     3. iptables-persistent:  This installs the most used Linux firewall iptables and it&#039;s tools, well to my knowledge.  When asked, it&#039;s not necessary to save the current v.4 and v.6 iptables rules.&lt;br /&gt;
     4. psmisc:  Installed for the killall command.  Used for the update-server script found in the Optional Software and Task&#039;s section.&lt;br /&gt;
     5. curl (optional):  Used to install optional software found in the Optional Software and Task&#039;s section.&lt;br /&gt;
     6. cron:  Used to schedule task.  This is more than likely already installed.&lt;br /&gt;
     7. tcpdump: Useful networking tool.&lt;br /&gt;
     8. traceroute: Useful networking tool.  This is more than likely already installed.&lt;br /&gt;
 &lt;br /&gt;
To install these, Type:&lt;br /&gt;
     apt install -y screen build-essential iptables-persistent psmisc curl tcpdump&lt;br /&gt;
&lt;br /&gt;
Reboot.  (Again, old Windows habit) Type:&lt;br /&gt;
     reboot&lt;br /&gt;
 &lt;br /&gt;
Now let&#039;s turn this server machine into an AmprNet Gateway (Updates Coming so please check back soon)&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:How-To Guides]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Gateways]]&lt;br /&gt;
[[Category:Device and platform guides]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Filtering_RFC1918_Addresses&amp;diff=3083</id>
		<title>IPIP Mesh/Filtering RFC1918 Addresses</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Filtering_RFC1918_Addresses&amp;diff=3083"/>
		<updated>2026-09-29T19:27:57Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize remaining IPIP Mesh articles and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Section nav|hub=IPIP Mesh|title=IPIP Mesh|category=IPIP Mesh}}&lt;br /&gt;
&lt;br /&gt;
== Mikrotik RouterOS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Define an RFC1918 address list&lt;br /&gt;
&amp;lt;pre&amp;gt;/ip firewall address-list&lt;br /&gt;
add address=10.0.0.0/8 list=RFC1918&lt;br /&gt;
add address=172.16.0.0/12 list=RFC1918&lt;br /&gt;
add address=192.168.0.0/16 list=RFC1918&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform NAT on traffic coming into AMPR from RFC1918 space&lt;br /&gt;
&amp;lt;pre&amp;gt;/ip firewall nat&lt;br /&gt;
add action=masquerade chain=srcnat src-address-list=RFC1918&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:How-To Guides]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Filtering_RFC1918_Addresses&amp;diff=3082</id>
		<title>Filtering RFC1918 Addresses</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Filtering_RFC1918_Addresses&amp;diff=3082"/>
		<updated>2026-09-29T19:27:56Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page Filtering RFC1918 Addresses to IPIP Mesh/Filtering RFC1918 Addresses: Group remaining mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IPIP Mesh/Filtering RFC1918 Addresses]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Filtering_RFC1918_Addresses&amp;diff=3081</id>
		<title>IPIP Mesh/Filtering RFC1918 Addresses</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Filtering_RFC1918_Addresses&amp;diff=3081"/>
		<updated>2026-09-29T19:27:56Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page Filtering RFC1918 Addresses to IPIP Mesh/Filtering RFC1918 Addresses: Group remaining mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mikrotik RouterOS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Define an RFC1918 address list&lt;br /&gt;
&amp;lt;pre&amp;gt;/ip firewall address-list&lt;br /&gt;
add address=10.0.0.0/8 list=RFC1918&lt;br /&gt;
add address=172.16.0.0/12 list=RFC1918&lt;br /&gt;
add address=192.168.0.0/16 list=RFC1918&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform NAT on traffic coming into AMPR from RFC1918 space&lt;br /&gt;
&amp;lt;pre&amp;gt;/ip firewall nat&lt;br /&gt;
add action=masquerade chain=srcnat src-address-list=RFC1918&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:How-To Guides]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/OH7LZB_VPN&amp;diff=3080</id>
		<title>IPIP Mesh/OH7LZB VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/OH7LZB_VPN&amp;diff=3080"/>
		<updated>2026-09-29T19:27:54Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize remaining IPIP Mesh articles and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Section nav|hub=IPIP Mesh|title=IPIP Mesh|category=IPIP Mesh}}&lt;br /&gt;
&lt;br /&gt;
The OH7LZB VPN was an experimental method to access the IPIP Mesh using a VPN from anywhere on the Internet. The VPN was openly available to any amateur radio operators who had successfully applied for an X.509 certificate from one of the following Certificate Authorities:&lt;br /&gt;
&lt;br /&gt;
* [http://www.arrl.org/logbook-of-the-world ARRL Logbook of the World (LoTW)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As of May, 2024, the OH7LZB VPN appears to no longer be operational.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Certificate Authority (CA) validates using a relatively strong method that the operator is actually licensed, and gives the operator a cryptographic certificate to prove that. Other services, such as this VPN can then check that the operator possesses a valid amateur radio operator certificate (and the accompanying private key), without any manual work being performed by the operators of those services. The operator can use his private key to sign LoTW log files, or any other information he wishes to communicate, and other parties trusting the CA can use the certificate to check that they have been transmitted by someone who has a private key and a certificate for a callsign from the CA.&lt;br /&gt;
&lt;br /&gt;
If and when other organisations start to give out X.509 certificates, after sufficient amateur radio license validation, the VPN will be configured to accept those in addition to the LoTW. If you&#039;re not willing to obtain a LoTW certificate, please set up a CA for your local club or association, document the method of license validation you&#039;re using, and I&#039;ll be happy to trust your certificates.&lt;br /&gt;
&lt;br /&gt;
The VPN operator (Hessu, OH7LZB) does not have time to run a CA and validate licenses manually, so please don&#039;t ask for a certificate from anywhere else than the CAs listed above. Thanks!&lt;br /&gt;
&lt;br /&gt;
The VPN is only used to access the IPIP Mesh. While you&#039;re connected to the VPN, the VPN client will only transmit packets from you to the IPIP Mesh via the VPN. Packets from you to the rest of the Internet will not go via the VPN - they&#039;ll flow out from your local network connection as before. This is called a [http://en.wikipedia.org/wiki/Split_tunneling split tunnel VPN configuration].&lt;br /&gt;
&lt;br /&gt;
The setup is still a bit complicated - it can be made easier and more automatic with a little additional software in a later phase.&lt;br /&gt;
&lt;br /&gt;
The VPN is an experimental service. It might be shut down for technical or political reasons - we&#039;ll see if it&#039;s a feasible idea or not.&lt;br /&gt;
&lt;br /&gt;
= Getting a certificate from LoTW =&lt;br /&gt;
&lt;br /&gt;
Go through [https://lotw.arrl.org/lotw-help/getting-started/ these simple steps]. After step 4 you&#039;re ready to continue with the VPN.&lt;br /&gt;
&lt;br /&gt;
It&#039;s going to take some time to validate, and you&#039;ll have to do some manual work (especially if you&#039;re outside the USA), but that is intentional. It significantly reduces abuse of the system, and increases its security.&lt;br /&gt;
&lt;br /&gt;
= Extracting the certificate from LoTW =&lt;br /&gt;
&lt;br /&gt;
LoTW uses a custom file format (.TQ*) to exchange certificates, but after the LoTW certificate process is done and the TrustedQSL software has your certificates, they can be easily copied from TrustedQSL&#039;s directories. You&#039;ll need three files: your &#039;&#039;&#039;user certificate&#039;&#039;&#039;, an &#039;&#039;&#039;intermediate certificate&#039;&#039;&#039; that was used to sign it, and your &#039;&#039;&#039;private key&#039;&#039;&#039;. The only secret piece of information is the private key - you should not reveal it to anyone at any point, as they could then use services on your behalf, using your callsign.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
* C:\Documents and Settings\your-username\Application Data\TrustedQSL contains two directories, &#039;&#039;&#039;certs&#039;&#039;&#039; and &#039;&#039;&#039;keys&#039;&#039;&#039;.&lt;br /&gt;
* certs\user contains the &#039;&#039;&#039;user certificate&#039;&#039;&#039;&lt;br /&gt;
* certs\authorities contains an &#039;&#039;&#039;intermediate certificate&#039;&#039;&#039;&lt;br /&gt;
* keys\YOURCALL contains, within some XML, your &#039;&#039;&#039;private key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Make copies of those files in another directory, and work on those copies in order to avoid breaking the originals.&lt;br /&gt;
&lt;br /&gt;
The user and intermediate certificates need to be concatenated to a single file named &#039;&#039;&#039;client.crt&#039;&#039;&#039;. The user certificate must be first, followed by the intermediate certificate. That can be done by an ascii editor such as Notepad (Wordpad or Word is likely to mess it up in a big way).&lt;br /&gt;
&lt;br /&gt;
The private key needs to be extracted from the YOURCALL file. The file is a regular ASCII text file, and contains a block which looks something like this (just longer):&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;
 Proc-Type: 4,ENCRYPTED&lt;br /&gt;
 DEK-Info: DES-EDE3-CBC,0C7B5495F6A91F31&lt;br /&gt;
 &lt;br /&gt;
 0xmWfliK/v9U88MFyYtUbteRoAkfVMK6BllcdID3pZzmdykHaPLZUjXOCUh3vFUX&lt;br /&gt;
 1bjnYwXpLX/CxgZ6NIxQIk7jMjL3iaP5SkWzCswqi9mCO+zHxuS6PWq7YwbWNFgo&lt;br /&gt;
 7smNcko1yTp7f/VbS4CZ5kgIF9kCgNaiqdxq+v0IcphQHRR4xjfLpBQ4ckYOi4nC&lt;br /&gt;
 jqFR1BitwBL4K2JeE9PGUkkUBwvU4oOi9PGChuoxMXs8PwKi/dZTmSWM7kOfMiBw&lt;br /&gt;
 -----END RSA PRIVATE KEY-----&lt;br /&gt;
&lt;br /&gt;
Copy-paste that block to a separate file named &#039;&#039;&#039;client.key&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Linux and Mac ==&lt;br /&gt;
&lt;br /&gt;
* ~/.tqsl/certs/user contains the &#039;&#039;&#039;user certificate&#039;&#039;&#039;&lt;br /&gt;
* ~/.tqsl/certs/authorities contains an &#039;&#039;&#039;intermediate certificate&#039;&#039;&#039;&lt;br /&gt;
* ~/.tqsl/keys/YOURCALL contains, within some XML, your &#039;&#039;&#039;private key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The user and intermediate certificates need to be concatenated to a single file named &#039;&#039;&#039;client.crt&#039;&#039;&#039;. The user certificate must be first, followed by the intermediate certificate. That can be done by a single command:&lt;br /&gt;
&lt;br /&gt;
 cat ~/.tqsl/certs/user ~/.tqsl/certs/authorities &amp;gt; client.crt&lt;br /&gt;
&lt;br /&gt;
The private key needs to be extracted from the YOURCALL file. The file is a regular ASCII text file, and contains a block which looks something like this (just longer):&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;
 Proc-Type: 4,ENCRYPTED&lt;br /&gt;
 DEK-Info: DES-EDE3-CBC,0C7B5495F6A91F31&lt;br /&gt;
 &lt;br /&gt;
 0xmWfliK/v9U88MFyYtUbteRoAkfVMK6BllcdID3pZzmdykHaPLZUjXOCUh3vFUX&lt;br /&gt;
 1bjnYwXpLX/CxgZ6NIxQIk7jMjL3iaP5SkWzCswqi9mCO+zHxuS6PWq7YwbWNFgo&lt;br /&gt;
 7smNcko1yTp7f/VbS4CZ5kgIF9kCgNaiqdxq+v0IcphQHRR4xjfLpBQ4ckYOi4nC&lt;br /&gt;
 jqFR1BitwBL4K2JeE9PGUkkUBwvU4oOi9PGChuoxMXs8PwKi/dZTmSWM7kOfMiBw&lt;br /&gt;
 -----END RSA PRIVATE KEY-----&lt;br /&gt;
&lt;br /&gt;
Copy-paste that block to a separate file named &#039;&#039;&#039;client.key&#039;&#039;&#039;. If you&#039;re going to open up the original private key file in a text editor, it&#039;s a good idea to make a backup copy of that file first in case of an accidental corruption of its contents.&lt;br /&gt;
&lt;br /&gt;
= Configuring the VPN =&lt;br /&gt;
&lt;br /&gt;
== Windows: OpenVPN ==&lt;br /&gt;
&lt;br /&gt;
# [http://openvpn.net/index.php/download/community-downloads.html Download the Windows Installer], it&#039;s free and open source.&lt;br /&gt;
# Run the installer to install it.&lt;br /&gt;
# [http://he.fi/amprnet-vpn/amprnet-vpn-win.zip Download the AMPRNet VPN configuration files for Windows]&lt;br /&gt;
# Open up the zip file, it contains two files: amprnet-vpn.ovpn and amprnet-vpn-ca.crt.&lt;br /&gt;
# In Start menu, under OpenVPN =&amp;gt; Shortcuts you&#039;ll find an entry named &#039;&#039;&#039;OpenVPN configuration file directory&#039;&#039;&#039;. Open it, and move the two files from the zip to the configuration file directory. &lt;br /&gt;
# Place client.crt and client.key, which were created previously, in the configuration file directory.&lt;br /&gt;
# Run the &#039;&#039;&#039;OpenVPN GUI&#039;&#039;&#039; from the desktop icon or start menu. A new icon will appear in the lower right corner (two computers with red screens + a globe on the side).&lt;br /&gt;
# Right-click the OpenVPN toolbar icon and select &#039;&#039;&#039;Connect&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you chose to encrypt your private key with a password (or passphrase) when initially applying for a LoTW certificate and generating the Certificate Request, OpenVPN will ask you for that password when connecting.&lt;br /&gt;
&lt;br /&gt;
To rephrase: When OpenVPN says &amp;quot;Enter Password&amp;quot;, the password being asked is the one you picked when you first applied for a LoTW certificate. It&#039;s not something the VPN operator knows (or should know). It&#039;s not the one you got on a postcard. Only you have ever been aware of that password (hopefully).&lt;br /&gt;
&lt;br /&gt;
== Linux: OpenVPN ==&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 15.10 ===&lt;br /&gt;
&lt;br /&gt;
Here is steps to install the VPN to Ubuntu 15.10 destop. Install OpenVPN plugin to network manager.&lt;br /&gt;
Open terminal and type&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install network-manager-open vpn-gnome&lt;br /&gt;
&lt;br /&gt;
Then add VPN-connection information to NetworkManager&lt;br /&gt;
&lt;br /&gt;
# Click network manager icon on taskbar&lt;br /&gt;
# Edit connections&lt;br /&gt;
# Add&lt;br /&gt;
# OpenVPN&lt;br /&gt;
# Create&lt;br /&gt;
#* Connection name: AMPRNet&lt;br /&gt;
#* Gateway: amprnet-vpn1.aprs.fi&lt;br /&gt;
#* Select proper files to User Certificate, CA certificate and Private key&lt;br /&gt;
#* Optionally enter private key password if you are set one&lt;br /&gt;
# Click Advanced&lt;br /&gt;
#* [x] Use custom gateway port: 1773&lt;br /&gt;
#* [x] Use LZO data compression&lt;br /&gt;
# Click OK&lt;br /&gt;
# Click Save&lt;br /&gt;
# Click Close&lt;br /&gt;
&lt;br /&gt;
Now you can connect to VPN &lt;br /&gt;
&lt;br /&gt;
# Click network manager icon on taskbar&lt;br /&gt;
# VPN connections -&amp;gt; AMPRNet&lt;br /&gt;
# Connection should be established&lt;br /&gt;
&lt;br /&gt;
== Linux (Raspberry Pi): OpenVPN ==&lt;br /&gt;
&lt;br /&gt;
Log in to Raspberry Pi console. Install openvpn software.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install openvpn&lt;br /&gt;
&lt;br /&gt;
Create openvpn client configuration file with your favourite editor to /etc/openvpn/client.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client&lt;br /&gt;
dev tun&lt;br /&gt;
proto udp&lt;br /&gt;
remote amprnet-vpn1.aprs.fi 1773&lt;br /&gt;
resolv-retry infinite&lt;br /&gt;
persist-key&lt;br /&gt;
persist-tun&lt;br /&gt;
ca amprnet-vpn-ca.crt&lt;br /&gt;
cert client.crt&lt;br /&gt;
key client.key&lt;br /&gt;
comp-lzo&lt;br /&gt;
verb 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Extract your client certificate and key as explained above section Extracting the certificate from LoTW. Copy your certificate files client.crt and client.key to /etc/openvpn/ . You also need amprnet-vpn-ca.crt which can be found inside this archive&lt;br /&gt;
http://he.fi/amprnet-vpn/amprnet-vpn-win.zip . Extract it and copy to /etc/openvpn/&lt;br /&gt;
&lt;br /&gt;
Restart openvpn&lt;br /&gt;
&lt;br /&gt;
 service openvpn restart&lt;br /&gt;
&lt;br /&gt;
All done.&lt;br /&gt;
&lt;br /&gt;
== Mac OS X: Tunnelblick ==&lt;br /&gt;
&lt;br /&gt;
# [https://tunnelblick.net/ Download Tunnelblick], it&#039;s free and open source, and works like a charm. It&#039;s based on OpenVPN.&lt;br /&gt;
# [http://he.fi/amprnet-vpn/amprnet-vpn-tblk.zip Download the VPN configuration for Tunnelblick], it&#039;s a zip file containing a directory with a couple files&lt;br /&gt;
# Double-click the downloaded zip file to extract it, you&#039;ll get a directory named &#039;&#039;&#039;amprnet-vpn.tblk&#039;&#039;&#039;&lt;br /&gt;
# Move the &#039;&#039;&#039;private key&#039;&#039;&#039; (in a file which was named &#039;&#039;&#039;client.key&#039;&#039;&#039; in the previous step) to that directory&lt;br /&gt;
# Move the certificates (in a file which was named &#039;&#039;&#039;client.crt&#039;&#039;&#039; in the previous step) to that directory&lt;br /&gt;
# Double-click the &#039;&#039;&#039;amprnet-vpn.tblk&#039;&#039;&#039; directory - this will launch Tunnelblick and install the VPN configuration&lt;br /&gt;
&lt;br /&gt;
You should now see a &amp;quot;tunnel&amp;quot; icon in the top right corner of the screen. Click it to see a few menu items allowing you to connect and disconnect the VPN.&lt;br /&gt;
&lt;br /&gt;
If you chose to encrypt your private key with a password (or passphrase) when initially applying for a LoTW certificate and generating the Certificate Request, Tunnelblick will ask you for that passphrase when connecting.&lt;br /&gt;
&lt;br /&gt;
To rephrase: When Tunnelblick says &amp;quot;A passphrase is required to connect to amprnet-vpn&amp;quot;, the passphrase being asked is the one you picked when you first applied for a LoTW certificate. It&#039;s not something the VPN operator knows (or should know). Only you have ever been aware of that passphrase (hopefully).&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:Reference]][[Category:How-To Guides]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;br /&gt;
[[Category:VPN]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Talk:OH7LZB_VPN&amp;diff=3079</id>
		<title>Talk:OH7LZB VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Talk:OH7LZB_VPN&amp;diff=3079"/>
		<updated>2026-09-29T19:27:53Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page Talk:OH7LZB VPN to Talk:IPIP Mesh/OH7LZB VPN: Group remaining mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:IPIP Mesh/OH7LZB VPN]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Talk:IPIP_Mesh/OH7LZB_VPN&amp;diff=3078</id>
		<title>Talk:IPIP Mesh/OH7LZB VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Talk:IPIP_Mesh/OH7LZB_VPN&amp;diff=3078"/>
		<updated>2026-09-29T19:27:53Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page Talk:OH7LZB VPN to Talk:IPIP Mesh/OH7LZB VPN: Group remaining mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi,&lt;br /&gt;
LOTW private key certificate is a PKCS12 format (p12 file)&lt;br /&gt;
To use it with AMPR VPN, you need to first convert it using openssl.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
openssl pkcs12 -in &amp;lt;callsign&amp;gt;.p12 -out &amp;lt;callsign&amp;gt;.cer&lt;br /&gt;
&lt;br /&gt;
from this text file, copy the private key section&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=OH7LZB_VPN&amp;diff=3077</id>
		<title>OH7LZB VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=OH7LZB_VPN&amp;diff=3077"/>
		<updated>2026-09-29T19:27:52Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page OH7LZB VPN to IPIP Mesh/OH7LZB VPN: Group remaining mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IPIP Mesh/OH7LZB VPN]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/OH7LZB_VPN&amp;diff=3076</id>
		<title>IPIP Mesh/OH7LZB VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/OH7LZB_VPN&amp;diff=3076"/>
		<updated>2026-09-29T19:27:52Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page OH7LZB VPN to IPIP Mesh/OH7LZB VPN: Group remaining mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OH7LZB VPN was an experimental method to access the IPIP Mesh using a VPN from anywhere on the Internet. The VPN was openly available to any amateur radio operators who had successfully applied for an X.509 certificate from one of the following Certificate Authorities:&lt;br /&gt;
&lt;br /&gt;
* [http://www.arrl.org/logbook-of-the-world ARRL Logbook of the World (LoTW)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As of May, 2024, the OH7LZB VPN appears to no longer be operational.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Certificate Authority (CA) validates using a relatively strong method that the operator is actually licensed, and gives the operator a cryptographic certificate to prove that. Other services, such as this VPN can then check that the operator possesses a valid amateur radio operator certificate (and the accompanying private key), without any manual work being performed by the operators of those services. The operator can use his private key to sign LoTW log files, or any other information he wishes to communicate, and other parties trusting the CA can use the certificate to check that they have been transmitted by someone who has a private key and a certificate for a callsign from the CA.&lt;br /&gt;
&lt;br /&gt;
If and when other organisations start to give out X.509 certificates, after sufficient amateur radio license validation, the VPN will be configured to accept those in addition to the LoTW. If you&#039;re not willing to obtain a LoTW certificate, please set up a CA for your local club or association, document the method of license validation you&#039;re using, and I&#039;ll be happy to trust your certificates.&lt;br /&gt;
&lt;br /&gt;
The VPN operator (Hessu, OH7LZB) does not have time to run a CA and validate licenses manually, so please don&#039;t ask for a certificate from anywhere else than the CAs listed above. Thanks!&lt;br /&gt;
&lt;br /&gt;
The VPN is only used to access the IPIP Mesh. While you&#039;re connected to the VPN, the VPN client will only transmit packets from you to the IPIP Mesh via the VPN. Packets from you to the rest of the Internet will not go via the VPN - they&#039;ll flow out from your local network connection as before. This is called a [http://en.wikipedia.org/wiki/Split_tunneling split tunnel VPN configuration].&lt;br /&gt;
&lt;br /&gt;
The setup is still a bit complicated - it can be made easier and more automatic with a little additional software in a later phase.&lt;br /&gt;
&lt;br /&gt;
The VPN is an experimental service. It might be shut down for technical or political reasons - we&#039;ll see if it&#039;s a feasible idea or not.&lt;br /&gt;
&lt;br /&gt;
= Getting a certificate from LoTW =&lt;br /&gt;
&lt;br /&gt;
Go through [https://lotw.arrl.org/lotw-help/getting-started/ these simple steps]. After step 4 you&#039;re ready to continue with the VPN.&lt;br /&gt;
&lt;br /&gt;
It&#039;s going to take some time to validate, and you&#039;ll have to do some manual work (especially if you&#039;re outside the USA), but that is intentional. It significantly reduces abuse of the system, and increases its security.&lt;br /&gt;
&lt;br /&gt;
= Extracting the certificate from LoTW =&lt;br /&gt;
&lt;br /&gt;
LoTW uses a custom file format (.TQ*) to exchange certificates, but after the LoTW certificate process is done and the TrustedQSL software has your certificates, they can be easily copied from TrustedQSL&#039;s directories. You&#039;ll need three files: your &#039;&#039;&#039;user certificate&#039;&#039;&#039;, an &#039;&#039;&#039;intermediate certificate&#039;&#039;&#039; that was used to sign it, and your &#039;&#039;&#039;private key&#039;&#039;&#039;. The only secret piece of information is the private key - you should not reveal it to anyone at any point, as they could then use services on your behalf, using your callsign.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
* C:\Documents and Settings\your-username\Application Data\TrustedQSL contains two directories, &#039;&#039;&#039;certs&#039;&#039;&#039; and &#039;&#039;&#039;keys&#039;&#039;&#039;.&lt;br /&gt;
* certs\user contains the &#039;&#039;&#039;user certificate&#039;&#039;&#039;&lt;br /&gt;
* certs\authorities contains an &#039;&#039;&#039;intermediate certificate&#039;&#039;&#039;&lt;br /&gt;
* keys\YOURCALL contains, within some XML, your &#039;&#039;&#039;private key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Make copies of those files in another directory, and work on those copies in order to avoid breaking the originals.&lt;br /&gt;
&lt;br /&gt;
The user and intermediate certificates need to be concatenated to a single file named &#039;&#039;&#039;client.crt&#039;&#039;&#039;. The user certificate must be first, followed by the intermediate certificate. That can be done by an ascii editor such as Notepad (Wordpad or Word is likely to mess it up in a big way).&lt;br /&gt;
&lt;br /&gt;
The private key needs to be extracted from the YOURCALL file. The file is a regular ASCII text file, and contains a block which looks something like this (just longer):&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;
 Proc-Type: 4,ENCRYPTED&lt;br /&gt;
 DEK-Info: DES-EDE3-CBC,0C7B5495F6A91F31&lt;br /&gt;
 &lt;br /&gt;
 0xmWfliK/v9U88MFyYtUbteRoAkfVMK6BllcdID3pZzmdykHaPLZUjXOCUh3vFUX&lt;br /&gt;
 1bjnYwXpLX/CxgZ6NIxQIk7jMjL3iaP5SkWzCswqi9mCO+zHxuS6PWq7YwbWNFgo&lt;br /&gt;
 7smNcko1yTp7f/VbS4CZ5kgIF9kCgNaiqdxq+v0IcphQHRR4xjfLpBQ4ckYOi4nC&lt;br /&gt;
 jqFR1BitwBL4K2JeE9PGUkkUBwvU4oOi9PGChuoxMXs8PwKi/dZTmSWM7kOfMiBw&lt;br /&gt;
 -----END RSA PRIVATE KEY-----&lt;br /&gt;
&lt;br /&gt;
Copy-paste that block to a separate file named &#039;&#039;&#039;client.key&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Linux and Mac ==&lt;br /&gt;
&lt;br /&gt;
* ~/.tqsl/certs/user contains the &#039;&#039;&#039;user certificate&#039;&#039;&#039;&lt;br /&gt;
* ~/.tqsl/certs/authorities contains an &#039;&#039;&#039;intermediate certificate&#039;&#039;&#039;&lt;br /&gt;
* ~/.tqsl/keys/YOURCALL contains, within some XML, your &#039;&#039;&#039;private key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The user and intermediate certificates need to be concatenated to a single file named &#039;&#039;&#039;client.crt&#039;&#039;&#039;. The user certificate must be first, followed by the intermediate certificate. That can be done by a single command:&lt;br /&gt;
&lt;br /&gt;
 cat ~/.tqsl/certs/user ~/.tqsl/certs/authorities &amp;gt; client.crt&lt;br /&gt;
&lt;br /&gt;
The private key needs to be extracted from the YOURCALL file. The file is a regular ASCII text file, and contains a block which looks something like this (just longer):&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;
 Proc-Type: 4,ENCRYPTED&lt;br /&gt;
 DEK-Info: DES-EDE3-CBC,0C7B5495F6A91F31&lt;br /&gt;
 &lt;br /&gt;
 0xmWfliK/v9U88MFyYtUbteRoAkfVMK6BllcdID3pZzmdykHaPLZUjXOCUh3vFUX&lt;br /&gt;
 1bjnYwXpLX/CxgZ6NIxQIk7jMjL3iaP5SkWzCswqi9mCO+zHxuS6PWq7YwbWNFgo&lt;br /&gt;
 7smNcko1yTp7f/VbS4CZ5kgIF9kCgNaiqdxq+v0IcphQHRR4xjfLpBQ4ckYOi4nC&lt;br /&gt;
 jqFR1BitwBL4K2JeE9PGUkkUBwvU4oOi9PGChuoxMXs8PwKi/dZTmSWM7kOfMiBw&lt;br /&gt;
 -----END RSA PRIVATE KEY-----&lt;br /&gt;
&lt;br /&gt;
Copy-paste that block to a separate file named &#039;&#039;&#039;client.key&#039;&#039;&#039;. If you&#039;re going to open up the original private key file in a text editor, it&#039;s a good idea to make a backup copy of that file first in case of an accidental corruption of its contents.&lt;br /&gt;
&lt;br /&gt;
= Configuring the VPN =&lt;br /&gt;
&lt;br /&gt;
== Windows: OpenVPN ==&lt;br /&gt;
&lt;br /&gt;
# [http://openvpn.net/index.php/download/community-downloads.html Download the Windows Installer], it&#039;s free and open source.&lt;br /&gt;
# Run the installer to install it.&lt;br /&gt;
# [http://he.fi/amprnet-vpn/amprnet-vpn-win.zip Download the AMPRNet VPN configuration files for Windows]&lt;br /&gt;
# Open up the zip file, it contains two files: amprnet-vpn.ovpn and amprnet-vpn-ca.crt.&lt;br /&gt;
# In Start menu, under OpenVPN =&amp;gt; Shortcuts you&#039;ll find an entry named &#039;&#039;&#039;OpenVPN configuration file directory&#039;&#039;&#039;. Open it, and move the two files from the zip to the configuration file directory. &lt;br /&gt;
# Place client.crt and client.key, which were created previously, in the configuration file directory.&lt;br /&gt;
# Run the &#039;&#039;&#039;OpenVPN GUI&#039;&#039;&#039; from the desktop icon or start menu. A new icon will appear in the lower right corner (two computers with red screens + a globe on the side).&lt;br /&gt;
# Right-click the OpenVPN toolbar icon and select &#039;&#039;&#039;Connect&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you chose to encrypt your private key with a password (or passphrase) when initially applying for a LoTW certificate and generating the Certificate Request, OpenVPN will ask you for that password when connecting.&lt;br /&gt;
&lt;br /&gt;
To rephrase: When OpenVPN says &amp;quot;Enter Password&amp;quot;, the password being asked is the one you picked when you first applied for a LoTW certificate. It&#039;s not something the VPN operator knows (or should know). It&#039;s not the one you got on a postcard. Only you have ever been aware of that password (hopefully).&lt;br /&gt;
&lt;br /&gt;
== Linux: OpenVPN ==&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 15.10 ===&lt;br /&gt;
&lt;br /&gt;
Here is steps to install the VPN to Ubuntu 15.10 destop. Install OpenVPN plugin to network manager.&lt;br /&gt;
Open terminal and type&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install network-manager-open vpn-gnome&lt;br /&gt;
&lt;br /&gt;
Then add VPN-connection information to NetworkManager&lt;br /&gt;
&lt;br /&gt;
# Click network manager icon on taskbar&lt;br /&gt;
# Edit connections&lt;br /&gt;
# Add&lt;br /&gt;
# OpenVPN&lt;br /&gt;
# Create&lt;br /&gt;
#* Connection name: AMPRNet&lt;br /&gt;
#* Gateway: amprnet-vpn1.aprs.fi&lt;br /&gt;
#* Select proper files to User Certificate, CA certificate and Private key&lt;br /&gt;
#* Optionally enter private key password if you are set one&lt;br /&gt;
# Click Advanced&lt;br /&gt;
#* [x] Use custom gateway port: 1773&lt;br /&gt;
#* [x] Use LZO data compression&lt;br /&gt;
# Click OK&lt;br /&gt;
# Click Save&lt;br /&gt;
# Click Close&lt;br /&gt;
&lt;br /&gt;
Now you can connect to VPN &lt;br /&gt;
&lt;br /&gt;
# Click network manager icon on taskbar&lt;br /&gt;
# VPN connections -&amp;gt; AMPRNet&lt;br /&gt;
# Connection should be established&lt;br /&gt;
&lt;br /&gt;
== Linux (Raspberry Pi): OpenVPN ==&lt;br /&gt;
&lt;br /&gt;
Log in to Raspberry Pi console. Install openvpn software.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install openvpn&lt;br /&gt;
&lt;br /&gt;
Create openvpn client configuration file with your favourite editor to /etc/openvpn/client.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client&lt;br /&gt;
dev tun&lt;br /&gt;
proto udp&lt;br /&gt;
remote amprnet-vpn1.aprs.fi 1773&lt;br /&gt;
resolv-retry infinite&lt;br /&gt;
persist-key&lt;br /&gt;
persist-tun&lt;br /&gt;
ca amprnet-vpn-ca.crt&lt;br /&gt;
cert client.crt&lt;br /&gt;
key client.key&lt;br /&gt;
comp-lzo&lt;br /&gt;
verb 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Extract your client certificate and key as explained above section Extracting the certificate from LoTW. Copy your certificate files client.crt and client.key to /etc/openvpn/ . You also need amprnet-vpn-ca.crt which can be found inside this archive&lt;br /&gt;
http://he.fi/amprnet-vpn/amprnet-vpn-win.zip . Extract it and copy to /etc/openvpn/&lt;br /&gt;
&lt;br /&gt;
Restart openvpn&lt;br /&gt;
&lt;br /&gt;
 service openvpn restart&lt;br /&gt;
&lt;br /&gt;
All done.&lt;br /&gt;
&lt;br /&gt;
== Mac OS X: Tunnelblick ==&lt;br /&gt;
&lt;br /&gt;
# [https://tunnelblick.net/ Download Tunnelblick], it&#039;s free and open source, and works like a charm. It&#039;s based on OpenVPN.&lt;br /&gt;
# [http://he.fi/amprnet-vpn/amprnet-vpn-tblk.zip Download the VPN configuration for Tunnelblick], it&#039;s a zip file containing a directory with a couple files&lt;br /&gt;
# Double-click the downloaded zip file to extract it, you&#039;ll get a directory named &#039;&#039;&#039;amprnet-vpn.tblk&#039;&#039;&#039;&lt;br /&gt;
# Move the &#039;&#039;&#039;private key&#039;&#039;&#039; (in a file which was named &#039;&#039;&#039;client.key&#039;&#039;&#039; in the previous step) to that directory&lt;br /&gt;
# Move the certificates (in a file which was named &#039;&#039;&#039;client.crt&#039;&#039;&#039; in the previous step) to that directory&lt;br /&gt;
# Double-click the &#039;&#039;&#039;amprnet-vpn.tblk&#039;&#039;&#039; directory - this will launch Tunnelblick and install the VPN configuration&lt;br /&gt;
&lt;br /&gt;
You should now see a &amp;quot;tunnel&amp;quot; icon in the top right corner of the screen. Click it to see a few menu items allowing you to connect and disconnect the VPN.&lt;br /&gt;
&lt;br /&gt;
If you chose to encrypt your private key with a password (or passphrase) when initially applying for a LoTW certificate and generating the Certificate Request, Tunnelblick will ask you for that passphrase when connecting.&lt;br /&gt;
&lt;br /&gt;
To rephrase: When Tunnelblick says &amp;quot;A passphrase is required to connect to amprnet-vpn&amp;quot;, the passphrase being asked is the one you picked when you first applied for a LoTW certificate. It&#039;s not something the VPN operator knows (or should know). Only you have ever been aware of that passphrase (hopefully).&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:Reference]][[Category:How-To Guides]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;br /&gt;
[[Category:VPN]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Setting_up_a_gateway_in_a_ROS7_Mikrotik_router_container_on_arm32,_arm64_and_x86-64&amp;diff=3075</id>
		<title>Setting up a gateway in a ROS7 Mikrotik router container on arm32, arm64 and x86-64</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Setting_up_a_gateway_in_a_ROS7_Mikrotik_router_container_on_arm32,_arm64_and_x86-64&amp;diff=3075"/>
		<updated>2026-09-29T19:09:31Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IPIP Mesh/MikroTik RouterOS 7 Container]]&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Gateways]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=MediaWiki:Sidebar&amp;diff=3074</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=MediaWiki:Sidebar&amp;diff=3074"/>
		<updated>2026-09-29T19:09:31Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Start Here&lt;br /&gt;
** mainpage|Home&lt;br /&gt;
** About_44Net|What is 44Net?&lt;br /&gt;
** What_People_Build|What people build&lt;br /&gt;
&lt;br /&gt;
* Provisioning&lt;br /&gt;
** Ways to Connect|Provisioning 44Net&lt;br /&gt;
** 44Net_Connect|44Net Connect&lt;br /&gt;
** IPIP_Mesh|IPIP Mesh&lt;br /&gt;
** BGP/Quick_Start|Routed (BGP) networks&lt;br /&gt;
&lt;br /&gt;
* Technical Reference&lt;br /&gt;
** DNS|DNS&lt;br /&gt;
** Portal/Introduction|The 44Net Portal&lt;br /&gt;
&lt;br /&gt;
* Community&lt;br /&gt;
** Contributing|How to contribute&lt;br /&gt;
&lt;br /&gt;
* Tools&lt;br /&gt;
** recentchanges-url|Recent changes&lt;br /&gt;
** randompage-url|Random page&lt;br /&gt;
** helppage|MediaWiki help&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Setting_up_a_complete_gateway_on_Ubiquiti_EdgeRouter&amp;diff=3073</id>
		<title>Setting up a complete gateway on Ubiquiti EdgeRouter</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Setting_up_a_complete_gateway_on_Ubiquiti_EdgeRouter&amp;diff=3073"/>
		<updated>2026-09-29T19:09:31Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd]]&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Gateways]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Internet_Requirements&amp;diff=3072</id>
		<title>Internet Requirements</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Internet_Requirements&amp;diff=3072"/>
		<updated>2026-09-29T19:09:30Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Internet Requirements}}&lt;br /&gt;
&lt;br /&gt;
44Net does not provide Internet service, so you will need your own Internet connection. This page describes the requirements for your Internet connection to support 44Net services.&lt;br /&gt;
&lt;br /&gt;
== 44Net Connect ==&lt;br /&gt;
&lt;br /&gt;
44Net Connect is the most flexible way to get 44Net onto your device. It works over pretty much any Internet connection that allows outbound UDP traffic, and it can handle changes in your IP address or network seamlessly, which is helpful for devices that roam or change networks. &lt;br /&gt;
&lt;br /&gt;
It can work over home broadband, cellular, satellite, and public Wi-Fi. It can also work behind NAT and CGNAT, and even on some connections that block VPN traffic.&lt;br /&gt;
&lt;br /&gt;
See [[44Net Connect/Quick Start|Connect Quick Start]].&lt;br /&gt;
&lt;br /&gt;
== IPIP Mesh ==&lt;br /&gt;
&lt;br /&gt;
The IPIP Mesh is a long-running project to interconnect 44Net subnets over the Internet using a mesh of IP-in-IP tunnels. Its design assumes an Internet that is largely open and unrestricted, which is less the case today than it was when the project started. It is still possible to participate in the IPIP Mesh, but you may run into obstacles with some ISPs.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
==== Inbound access ====&lt;br /&gt;
&lt;br /&gt;
For IPIP Mesh to work, your Internet connection and all intermediate devices, including ISP-provided equipment, must allow:&lt;br /&gt;
* IP-in-IP traffic (ipencap protocol 4)&lt;br /&gt;
* RIPv2 packets arriving on UDP port 520&lt;br /&gt;
&lt;br /&gt;
==== Public IP address ====&lt;br /&gt;
&lt;br /&gt;
Your public IP address does not need to be static, but it must be reachable from the Internet. If your ISP uses CGNAT, you almost certainly cannot participate in the IPIP Mesh.&lt;br /&gt;
&lt;br /&gt;
==== DNS A record ====&lt;br /&gt;
&lt;br /&gt;
You must configure a DNS hostname that resolves to your public IP address. This hostname is periodically resolved by the Portal to update the IPIP tunnel endpoints broadcast from the gateway via RIP. You can use your own domain name, a free dynamic DNS service, or a free &amp;lt;callsign&amp;gt;.ampr.org record you set up in the Portal.&lt;br /&gt;
&lt;br /&gt;
If your public IP address is not static, you will need a dynamic DNS service to keep your hostname updated. The Portal does not currently provide this.&lt;br /&gt;
&lt;br /&gt;
See [[DNS|DNS setup]] and [[IPIP Mesh/Gateways|gateway setup guides]].&lt;br /&gt;
&lt;br /&gt;
== BGP-announced subnets ==&lt;br /&gt;
&lt;br /&gt;
Announcing via BGP is the most advanced way to get 44Net onto your network.&lt;br /&gt;
&lt;br /&gt;
For running a router on your premises, you will need a connection to a provider willing to handle your subnet. &lt;br /&gt;
&lt;br /&gt;
To announce your subnet from a cloud provider, you will need a provider that supports BYOIP (Bring Your Own IP) and accepts 44Net subnets. In particular, the provider must allow you to announce your subnet [[RPKI and ROAs on 44Net|without RPKI ROAs.]]&lt;br /&gt;
&lt;br /&gt;
See [[BGP/Quick Start|BGP Quick Start]] and [[Guide for ISPs]].&lt;br /&gt;
&lt;br /&gt;
== Speed and quality ==&lt;br /&gt;
&lt;br /&gt;
The speed and quality of service required depends on the intended use of your connection. The WireGuard protocol used by 44Net Connect is designed to be efficient and resilient, and the link itself usually tolerates variable connection quality. The application running over the link may be more more sensitive, however, including things like streaming, voice, remote desktop, or video.&lt;br /&gt;
&lt;br /&gt;
For example, a typical VOIP call generally needs only about 64kbps of bandwidth, so high speeds are not usually necessary for voice applications like IRLP, Allstar, or DMR. LTE or Starlink standby mode may be more than sufficient. Voice applications are sometimes sensitive to packet loss, jitter, and latency, however, so an unstable or marginal connection may work fine or it might not.&lt;br /&gt;
&lt;br /&gt;
Remote operation via remote desktop or a lightweight web UI might only sip bandwidth as well, even streaming audio. Voice QSOs could be fine as far as bandwidth and latency are concerned, but time-sensitive applications like FT8 might not be viable.&lt;br /&gt;
&lt;br /&gt;
== Things to check before you start ==&lt;br /&gt;
&lt;br /&gt;
=== Speed, latency, jitter, and packet loss ===&lt;br /&gt;
Testing these may uncover problems that affect your application. You can check these using a speed test like [https://testmy.net/ TestMy] or [https://www.speedtest.net/ Speedtest]. Check both download and upload speeds.&lt;br /&gt;
&lt;br /&gt;
=== Connection stability ===&lt;br /&gt;
Less of an issue on typical Internet connections, but a remote site might be on a less stable connection. Many routers record connection quality, which can be useful for estimating link stability. UniFi, for example, has a chart showing packet loss and latency over time.&lt;br /&gt;
&lt;br /&gt;
=== Am I on CGNAT? ===&lt;br /&gt;
You can check whether you might be behind CGNAT using an online tool like [https://portwarp.com/tools/cgnat-detector PortWarp CGNAT Detector]. If you are behind CGNAT, you will not be able to participate in the IPIP Mesh or announce your own subnet via BGP, so it&#039;ll be 44Net Connect or nothing for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=FAQ&amp;diff=3071</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=FAQ&amp;diff=3071"/>
		<updated>2026-09-29T19:09:30Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Frequently Asked Questions =&lt;br /&gt;
&lt;br /&gt;
This page answers common questions about 44Net (AMPRNet), how it works, and how to participate. For detailed setup instructions and technical deep dives, follow the links within each section.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
=== What is AMPRNet? ===&lt;br /&gt;
&lt;br /&gt;
AMPRNet stands for AMateur Packet Radio NETwork. It is a collection of amateur radio-oriented computers, connected together via a variety of technologies, including radio, Internet, and ethernet. However, all of these computers have an IP address that begins with 44 (that is, IP addresses of the form 44.0.0.0/9 or 44.128.0.0/10). For this reason, AMPRnet can also be referred to as 44Net.&lt;br /&gt;
&lt;br /&gt;
Some further details can be found at [https://en.wikipedia.org/wiki/AMPRNet AMPRNet on Wikipedia] and [https://wiki.ampr.org/wiki/Main_Page AMPRNet Wiki].&lt;br /&gt;
&lt;br /&gt;
=== What is AMPRNet for? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of AMPRNet is to permit experimentation by amateurs in digital networking and to provide computer services to other amateurs using AMPRNet.&lt;br /&gt;
&lt;br /&gt;
=== What does it cost to use AMPRNet? ===&lt;br /&gt;
&lt;br /&gt;
There is no cost for using any AMPRNet facilities, however, there may be costs associated with Internet access to reach AMPRNet and/or amateur radio equipment costs.&lt;br /&gt;
&lt;br /&gt;
== Connecting to 44Net ==&lt;br /&gt;
=== How do I connect to AMPRNet? ===&lt;br /&gt;
&lt;br /&gt;
There are four main methods people use:&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
* BGP routing (See Also [[Announcing your allocation directly]])&lt;br /&gt;
* Direct radio links.&lt;br /&gt;
* IP Tunneling&lt;br /&gt;
&lt;br /&gt;
For a current overview of how connection models coexist as independent systems, see [[Decentralization]].&lt;br /&gt;
&lt;br /&gt;
Note: Functionally, a VPN and a tunnel do much the same thing, except a VPN is designed for privacy (i.e. strong authentication and encryption), whilst IP tunnelling in the AMPRNet context is actually an all-to-all interconnected mesh of tunnels and is not encrypted (as often the data is transferred over radio).&lt;br /&gt;
&lt;br /&gt;
=== What is a VPN? ===&lt;br /&gt;
&lt;br /&gt;
VPN stands for Virtual Private Network. It is a facility that enables a computer to act (using the Internet) as though is physically connected to another computer network. There are many different ways to set up a VPN, so this is beyond the scope of this FAQ. However, it always involves configuring software and accounts on a computer, to connect to the VPN server. Some amateurs who have connections to AMPRNet have set up VPN servers so that other amateurs can achieve a &amp;quot;virtual&amp;quot; connection to AMPRNet. The technical details, account details, and IP address details must be obtained from the operator of that VPN. One such VPN is listed at [https://wiki.ampr.org/wiki/AMPRNet_VPN AMPRNet VPN].&lt;br /&gt;
&lt;br /&gt;
=== What about radio links? ===&lt;br /&gt;
&lt;br /&gt;
In many places, groups of amateurs have established networks of radio links, and often have used one of the preceding approaches so that those radio networks connect to and become part of AMPRNet. You would need to contact those groups regarding frequencies, modes, and address allocations.&lt;br /&gt;
&lt;br /&gt;
=== Can I use an AMPRNet VPN on my home LAN? ===&lt;br /&gt;
&lt;br /&gt;
Generally, yes. Most home modem/routers have good support for VPN usage, although you mustn&#039;t use it for general internet access as it is for amateur radio use only!&lt;br /&gt;
&lt;br /&gt;
== Routing and tunneling ==&lt;br /&gt;
=== What is IP tunneling? ===&lt;br /&gt;
&lt;br /&gt;
The information that traverses the Internet does so as &amp;quot;packets&amp;quot; of data, traveling over a variety of routes, between a source and a destination. Each packet contains a header, which tells all the devices along the route information such as the source and destination, plus the payload, which is the data to actually be transferred. Clearly, there must be a path all the way from the sources to the destination, and back.&lt;br /&gt;
AMPRNet consists of small, non-connected groups of computers, that would otherwise not be able to connect to one another. However, since internet devices along the route really don&#039;t care about the contents of the payload section, you can put a completely new packet into that section, including an entirely different header, and its own payload section. That second header has source and destination addresses completely different from the first header - all that is required is that the first destination recognizes the encapsulated packet, de-encapsulates it, and forwards it to the second header destination. Return traffic follows a corresponding process. In that way, 44-net hosts can communicate with other 44-net hosts, by means of encapsulating their data packets in packets to non-44Net hosts. This is called tunneling (or encapsulating). A later section in this FAQ discusses installing a tunnel.&lt;br /&gt;
Tunneling is probably the most commonly used method of accessing AMPRNet.&lt;br /&gt;
&lt;br /&gt;
=== How does AMPR over IP tunnel actually work? ===&lt;br /&gt;
&lt;br /&gt;
AMPR nodes are actually not connected via a single tunnel but via a large mesh network of tunnels. Suppose user1 has public IP address 198.51.100.1 and user2 has 203.0.113.1. These two can normally communicate over the internet. However, if both users have a 44Net IP address, user1 can encapsulate the 44 packet into an outer packet and send it to 203.0.113.1. Similarly, user2 can encapsulate the IP packet with the 44Net addresses and send it to 198.51.100.1. In Linux (and most other systems), this is accomplished using a single ipip device and adding a route using the &amp;quot;nexthop&amp;quot; statement. When a packet is pushed into the ipip device, the outer IP header is added and sent to the router in the nexthop statement. A list of all AMPR users is required and this can be either accomplished by downloading a simple textfile and adding the routes manually or by using RIP44, as discussed in the FAQ section below.&lt;br /&gt;
&lt;br /&gt;
=== What is BGP routing? ===&lt;br /&gt;
&lt;br /&gt;
The Internet has millions of different computers connected to it, each having an address. Devices called routers deliver traffic between computers and can send &amp;quot;advertisements&amp;quot; to other routers to tell those other routers about the locations of some of those addresses. The protocol used is called BGP, Border Gateway Protocol. If you are fortunate enough to have a computer that can send BGP advertisements, then you can advertise that your computer is part of the AMPRNet address range, and hence receive AMPRNet traffic.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, most companies and most commercial ISPs will not permit their users to originate BGP advertisements (especially for address ranges that are not in their usual address range), so BGP is not a viable means to connect to AMPRNet for most people.  There are Virtual Private Server (VPS) Providers (or Cloud Providers) who will announce your AMPRNet allocation without the need for your own Autonomous System (AS) number. [[Routing your allocation via BGP]] has a list of VPS/Cloud Providers.&lt;br /&gt;
&lt;br /&gt;
Installing BGP is beyond the scope of this FAQ. Note however that you must have written permission from the administrator of the ARDC 44 address space, before you BGP advertise any part of that space.&lt;br /&gt;
&lt;br /&gt;
=== How do I configure a Tunnel? ===&lt;br /&gt;
&lt;br /&gt;
The technique varies according to the Operating System you use. However, all involve the creation of a new &amp;quot;pseudo&amp;quot; interface - unlike your normal ethernet network connection, this one doesn&#039;t actually exist on the back panel of your computer. However, it exists as far as the Operating System is concerned. A normal ethernet device accepts a data packet (consisting of a header and payload, as previously discussed) and sends it out the ethernet cable (often via a modem, to the Internet).  A &amp;quot;pseudo&amp;quot; interface however accepts a data packet, encapsulates it in the data portion of a new packet, adds a new and different header, and passes all that to the ethernet device, which then processes this new data packet as normal, sending it to a recipient who will de-encapsulate it. Reception of tunneled traffic is the reverse process.&lt;br /&gt;
&lt;br /&gt;
Consequently, two requirements apply:&lt;br /&gt;
&lt;br /&gt;
# The computer must have full connectivity to the non-44 hosts that will send or receive the tunneled packets containing 44-net traffic. You cannot route ALL traffic to the pseudo interface!&lt;br /&gt;
# The pseudo driver must have a mechanism to tell it which non-44 net hosts can handle particular subsets of 44-net traffic - very few can handle the entire 44-net range! It should be noted that the information changes quite frequently, as tunnel hosts come and go, so must be updated as described below.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.ampr.org/wiki/Main_Page AMPRNet Wiki] has links to several different ways of configuring tunnels.&lt;br /&gt;
&lt;br /&gt;
=== How do I obtain and maintain a list of tunnel hosts? ===&lt;br /&gt;
&lt;br /&gt;
There are three main mechanisms:&lt;br /&gt;
&lt;br /&gt;
# Log on to the Portal (as described above) and navigate to the &amp;quot;Gateways/List&amp;quot; section that permits downloading of the &amp;quot;encap&amp;quot; file. Download that file, and use a script on the computer to turn it into commands that update the configuration of the tunnel device.&lt;br /&gt;
# Receive the encap file by mail, and use a script to process it. You can register for this email on the Portal &amp;quot;Gateways/Options&amp;quot; page.&lt;br /&gt;
# Receive and process &amp;quot;broadcasts&amp;quot; of configuration data that are available.  This information is broadcast to all gateways listed on the Portal. There is a software package called &amp;quot;ampr-ripd&amp;quot; that enables this process&lt;br /&gt;
&lt;br /&gt;
=== Can BGP, VPN, and IP tunnel hosts inter-communicate? ===&lt;br /&gt;
&lt;br /&gt;
Yes. The AMPRNet gateway has been configured to support this functionality.&lt;br /&gt;
&lt;br /&gt;
=== What is the AmprGW? ===&lt;br /&gt;
&lt;br /&gt;
The AmprGW is a server run by ARDC at UCSD as part of a long-running Internet research project. It has a number of functions:&lt;br /&gt;
&lt;br /&gt;
# It provides a selective gateway between non-AMPRNet internet devices and the IPIP (mesh) AMPRNet. For this traffic, it filters at the per-host(/32) level. Each host which is to receive traffic from the Internet into AMPRNet must individually be listed in the permissions file, which is built from the AMPR.ORG DNS &#039;A&#039; records. If there is no DNS A record for a tunneled amprnet destination host, the traffic is not forwarded in either direction. Therefore, if you want hosts on your subnet to be able to communicate with the Internet, you will need to have your local coordinator add them to the AMPR.ORG DNS for you.&lt;br /&gt;
# It forwards traffic between Internet hosts (including those AMPRNet that are directly connected to the Internet [BGP-routed]) and IPIP tunneled AMPRNet hosts. Some &amp;quot;validity&amp;quot; filtering is applied during this process - traffic that is invalid or misconfigured will be dropped. Note: AmprGW does NOT forward between different IPIP tunneled AMPRNet hosts. That is why you cannot have just a single IPIP tunnel for all of AMPRNet. Thus the tunneled AMPRNet as a whole forms a fully-connected mesh, not a &#039;star&#039; configuration.&lt;br /&gt;
# AmprGW originates RIP44 broadcasts containing routing information about gateways and the AMPRNet subnets they service. The RIP44 transmissions are sent as IPIP encapsulated UDP packets for port 520 from 169.228.34.84 and sent individually to the commercial (external) address of every gateway. The packets have an inner source address of 44.0.0.1 and an inner destination of 224.0.0.9, the RIP multicast address. They are IPIP encapsulated packets, so without de-encapsulating them, the RIP is not visible to conventional routing software. Specialized software such as &#039;ampr-ripd&#039; may be employed to make use of the RIP44 broadcasts, to set up AMPRNet routes.&lt;br /&gt;
&lt;br /&gt;
== Address allocation and DNS ==&lt;br /&gt;
=== How do I get an address allocation? ===&lt;br /&gt;
&lt;br /&gt;
If you connect to an existing VPN or existing radio network, it is likely that the operators of those facilities will already have address ranges established and will allocate your address(es). If you wish to establish a new tunnel or BGP-based link, then the process is handled by a semi-automated process on our Portal. The steps are:&lt;br /&gt;
&lt;br /&gt;
# Register using your callsign on the Portal [https://portal.ampr.org portal.ampr.org]&lt;br /&gt;
# Log in and navigate to the  Networks page.&lt;br /&gt;
# Click on your country.  A list of regions/subnets may appear; if so, click on the appropriate one.&lt;br /&gt;
# Click on the subnet and you&#039;ll be presented with a simple form to complete.&lt;br /&gt;
# If you are requesting a single address for a host, leave the netmask as /32;&lt;br /&gt;
# if you are requesting a  block/subnet, select the appropriate netwidth. E.g. for a 256 host subnet, select /24.&lt;br /&gt;
# Put a short message explaining your request in the Message area of the form.  Be sure to indicate if you are planning to directly route a subnet as these require special handling&lt;br /&gt;
# Click Send.  Your request will be forwarded to the coordinator for your region/subnet.  You&#039;ll receive a confirming email.  The coordinator may contact you for further details if required.&lt;br /&gt;
&lt;br /&gt;
=== Can I have a domain name entry for my AMPRNet host? ===&lt;br /&gt;
&lt;br /&gt;
Yes. Currently, domain name requests are handled by the area coordinators - contact details are on the Portal. Note: the old email robot facility no longer functions.&lt;br /&gt;
&lt;br /&gt;
=== What about IPv6? ===&lt;br /&gt;
&lt;br /&gt;
There is no IPv6 equivalent of AMPRNet at present.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
=== Do I need to consider security? ===&lt;br /&gt;
&lt;br /&gt;
Yes! Any computer connected to the Internet must be configured and maintained in a secure fashion, and this includes any computer connected to AMPRNet (regardless of the connection technique). Repeat - you MUST secure your computer! This includes using firewalls, keeping software up to date, using strong passwords, etc etc. In some cases, encryption may also be used.&lt;br /&gt;
&lt;br /&gt;
How to maintain security is beyond the scope of this FAQ. Searching for &amp;quot;How to secure my computer&amp;quot; will return many, many hits though!&lt;br /&gt;
&lt;br /&gt;
=== Can I put my tunnel on my home LAN and use NAT? ===&lt;br /&gt;
&lt;br /&gt;
Yes. However, in general, a home modem using NAT won&#039;t be able to correctly process inbound tunneled 44-net traffic and forward it to the correct host - the &amp;quot;port forward&amp;quot; facility in most NAT devices relies on a port number, but there are no port numbers for a tunnel packet! However, most modems have a &amp;quot;DMZ&amp;quot; facility, whereby all unrecognized traffic (and this includes tunneled traffic) can be forwarded to one particular host on the LAN. That host can then be configured to recognize and correctly process tunneled data. However - security alert! - it will also be exposed to all sorts of other, unwanted traffic as well! See the Security section above.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== I rebooted my router and now I can&#039;t talk to the Internet, what&#039;s going on? ===&lt;br /&gt;
&lt;br /&gt;
If AMPRGW detects errors when attempting to send traffic to a tunnel&#039;s configured gateway, it will automatically throttle traffic through that tunnel for approximately one hour. This is meant to prevent endlessly sending traffic to gateways that are no longer in service. An example of the sort of errors that will trigger this are ICMP Host Unreachable messages generated by an upstream provider, such as an ISP. Empirically, several users have observed that rebooting a gateway can pause traffic long enough for this to happen. However, traffic will start flowing again in an hour or so.&lt;br /&gt;
&lt;br /&gt;
=== How can I get help with AMPRNet issues? ===&lt;br /&gt;
&lt;br /&gt;
Many amateurs are willing to assist other hams. You can find some of them on the groups.io 44Net group here [https://ardc.groups.io/g/44net 44Net on groups.io]&lt;br /&gt;
&lt;br /&gt;
== Policy and network constraints ==&lt;br /&gt;
=== Why can’t 44Net publish ROAs for its prefixes? ===&lt;br /&gt;
&lt;br /&gt;
Because ARIN does not provide RPKI or IRR services for legacy resources that are not covered by an ARIN agreement.&lt;br /&gt;
&lt;br /&gt;
That means 44Net cannot currently create ARIN-issued ROAs for those resources, even though other registry functions such as Whois/RDAP maintenance and reverse DNS delegation may still be available.&lt;br /&gt;
&lt;br /&gt;
For the detailed explanation, see [[RPKI and ROAs on 44Net]].&lt;br /&gt;
&lt;br /&gt;
=== Why can’t I route my 44Net allocation directly from home? ===&lt;br /&gt;
&lt;br /&gt;
Unfortunately, networks have experienced [http://en.wikipedia.org/wiki/Denial-of-service_attack denial of service attacks] due to [http://en.wikipedia.org/wiki/IP_address_spoofing IP address spoofing].&lt;br /&gt;
&lt;br /&gt;
In order to combat these attacks, most Internet Service Providers (ISPs) have adopted practices defined by the Internet Standards [http://tools.ietf.org/html/bcp38 BCP38] and [https://tools.ietf.org/html/bcp84 BCP84].&lt;br /&gt;
&lt;br /&gt;
Two of these practices are [http://en.wikipedia.org/wiki/Ingress_filtering ingress filtering] and [http://en.wikipedia.org/wiki/Reverse_path_forwarding#Unicast_RPF_.28uRPF.29 Unicast Reverse Path Forwarding].&lt;br /&gt;
&lt;br /&gt;
These practices prevent IP address spoofing by blocking packets whose IP source address is not the in the IP subnet range where the packet originated.&lt;br /&gt;
&lt;br /&gt;
If your ISP implements these practices (and they should), you will be unable to transmit packets using your AMPRNet allocation as the source address directly from your home network.&lt;br /&gt;
&lt;br /&gt;
In addition, only ISPs and other authorized networks can announce routes globally. Your ISP will block any attempts by you to advertise your AMPRNet allocation without their permission. Announcing your AMPRNet allocation directly, without the permission of the AMPRNet network administrator, is a violation of AMPRNet&#039;s Terms of Service and Acceptable Use Policy.&lt;br /&gt;
&lt;br /&gt;
The three ways around these restrictions are:&lt;br /&gt;
&lt;br /&gt;
# [[IPIP Mesh/Linux|Creating direct tunnels to other AMPRNet subnets using a gateway]]&lt;br /&gt;
# [[Routing your allocation via BGP|Working with AMPRNet and your ISP to properly announce your allocation directly]]&lt;br /&gt;
# [[AMPRNet VPN|Accessing AMPRNet via VPN]]&lt;br /&gt;
&lt;br /&gt;
=== What about 44.128.0.0/16? ===&lt;br /&gt;
&lt;br /&gt;
Subnet 44.128.0.0/16 is currently reserved for testing.  No operational subnets are planned for this address space. Older documentation incorrectly referred to this block of addresses as &amp;quot;private&amp;quot;, that is, unrouted like the 192.168.0.0/16 RFC1918 subnet. This is incorrect; the 44.128.0.0/16 subnet can be routed, but do not use it except for brief test purposes.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This FAQ was originally commenced by Steve VK5ASF, using material from earlier FAQs, from various contributors to the 44Net mailing list, and from Brian Kantor.&lt;br /&gt;
&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AX.25_on_Linux&amp;diff=3070</id>
		<title>AX.25 on Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AX.25_on_Linux&amp;diff=3070"/>
		<updated>2026-09-29T19:09:30Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:AX.25 on Linux}}&lt;br /&gt;
&lt;br /&gt;
{{Note|This page is a work in progress. It is not yet complete, and it may contain inaccuracies or outdated information.}}&lt;br /&gt;
&lt;br /&gt;
As of April 2026, the in-tree kernel AX.25 stack has been removed from upstream Linux. This affects systems and applications that depend on Linux kernel AX.25 interfaces, but it does not mean AX.25 packet radio on Linux is going away.&lt;br /&gt;
&lt;br /&gt;
== In this guide ==&lt;br /&gt;
&lt;br /&gt;
* [[AX.25 on Linux/Kernel vs user space]]: How the old kernel model differs from the user space model&lt;br /&gt;
* [[AX.25 on Linux/Migration options]]: Common software and migration approaches&lt;br /&gt;
* [[AX.25 on Linux/IP over AX.25]]: Possible directions for IP networking over AX.25&lt;br /&gt;
* [[AX.25 on Linux/Developing user-space tools]]: Design considerations for new work&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
* If your setup uses KISS or AGWPE to talk to a software TNC, hardware TNC, or packet-radio application, you are probably not affected by the kernel removal.&lt;br /&gt;
* If your setup uses Linux AX.25 interfaces like &amp;lt;code&amp;gt;ax0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kissattach&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/etc/axports&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;ax25d&amp;lt;/code&amp;gt;, it will not keep working unchanged on future kernels.&lt;br /&gt;
* Nothing breaks immediately just because the upstream kernel changed. Existing systems keep working until you update them to a kernel released after the change.&lt;br /&gt;
&lt;br /&gt;
This page explains what changed, how to tell whether your station depends on that older model, and what practical options exist now.&lt;br /&gt;
&lt;br /&gt;
== What is changing ==&lt;br /&gt;
&lt;br /&gt;
* Mainline Linux no longer includes the traditional Linux AX.25, Net/ROM, and ROSE stack.&lt;br /&gt;
* Existing documentation that assumes &amp;lt;code&amp;gt;kissattach&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/etc/axports&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ax&amp;lt;/code&amp;gt; interfaces, or &amp;lt;code&amp;gt;ax25d&amp;lt;/code&amp;gt; will no longer apply to systems running newer kernels.&lt;br /&gt;
* Software that depends specifically on kernel AX.25 interfaces will be unable to run unchanged on newer kernels.&lt;br /&gt;
* Software that talks directly to KISS, AGWPE, serial TNCs, TCP TNCs, or its own built-in AX.25 implementation may continue to work without the kernel AX.25 stack.&lt;br /&gt;
* The out-of-tree repository &amp;lt;code&amp;gt;linux-netdev/mod-orphan&amp;lt;/code&amp;gt; will host the removed code for those who want to inspect it or maintain it separately.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&lt;br /&gt;
This change happened in “upstream Linux” first, referring to the mainline Linux kernel project. Distributions like Debian, Ubuntu, and Fedora decide for themselves when to ship newer kernels, and long-term-support distributions may stay on older kernel lines for quite a while.&lt;br /&gt;
&lt;br /&gt;
That means this probably is not hitting most existing stations tomorrow. In many cases, you will keep working until your distribution moves you to a kernel that no longer includes the in-tree AX.25 code, whether that happens in a major distribution upgrade or in a later kernel update.&lt;br /&gt;
&lt;br /&gt;
So you have some time to plan, but you may want to pay attention to updates that include newer kernels.&lt;br /&gt;
&lt;br /&gt;
== Am I affected? ==&lt;br /&gt;
&lt;br /&gt;
Yes, if your setup uses the Linux kernel AX.25 model. Probably not, if you use software that talks to devices directly.&lt;br /&gt;
&lt;br /&gt;
You are probably using the kernel AX.25 stack if:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ip link&amp;lt;/code&amp;gt; shows &amp;lt;code&amp;gt;ax&amp;lt;/code&amp;gt; interfaces like &amp;lt;code&amp;gt;ax0&amp;lt;/code&amp;gt;&lt;br /&gt;
* You use &amp;lt;code&amp;gt;kissattach&amp;lt;/code&amp;gt;&lt;br /&gt;
* You configure &amp;lt;code&amp;gt;/etc/axports&amp;lt;/code&amp;gt;&lt;br /&gt;
* You use &amp;lt;code&amp;gt;ax25d&amp;lt;/code&amp;gt;&lt;br /&gt;
* Your application is configured to use a Linux AX.25 port or interface rather than KISS, AGWPE, serial, TCP, or a built-in packet engine&lt;br /&gt;
&lt;br /&gt;
You are probably using a user-space approach if:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ip link&amp;lt;/code&amp;gt; does not show any &amp;lt;code&amp;gt;ax&amp;lt;/code&amp;gt; interfaces&lt;br /&gt;
* You already use a user-space TNC like Dire Wolf without &amp;lt;code&amp;gt;kissattach&amp;lt;/code&amp;gt;&lt;br /&gt;
* Your application has its own AX.25 support built in, as many APRS tools do&lt;br /&gt;
* Your applications talk to KISS or AGWPE directly, whether to a software TNC, hardware TNC, or another packet-radio program&lt;br /&gt;
&lt;br /&gt;
If you are not sure, look at how your application is configured. KISS or AGWPE options are a good sign.&lt;br /&gt;
&lt;br /&gt;
== What should I do? ==&lt;br /&gt;
&lt;br /&gt;
Broadly speaking, there are a few paths: keep the system running as it is, reconfigure applications around a different host-side interface, or replace part of the stack. &lt;br /&gt;
&lt;br /&gt;
=== Freeze (keep it running as is) ===&lt;br /&gt;
&lt;br /&gt;
If you’re using software that depends on kernel AX.25, future kernel updates will break it. If you want to keep that software working, the simplest path may be to stay on the version of Linux you have now.&lt;br /&gt;
&lt;br /&gt;
You can keep using that system for as long as you like, but you will find ample advice to consider the security implications. Older kernels do not receive fixes for newly discovered vulnerabilities, and the longer a system stays pinned to an old kernel, the more exposed it can become. If you choose this path, it is worth taking extra precautions to secure the system.&lt;br /&gt;
&lt;br /&gt;
=== Reconfigure ===&lt;br /&gt;
&lt;br /&gt;
If you’re using software released relatively recently, you may be able to reconfigure it. For example, an APRS application that can use AGWPE or KISS over TCP or serial may only need to be pointed at Dire Wolf or a hardware TNC via a different protocol.&lt;br /&gt;
&lt;br /&gt;
=== Replace ===&lt;br /&gt;
&lt;br /&gt;
This is the likely path when the old application depends on the kernel AX.25 stack and cannot be reconfigured to use anything else. You may be looking at anything from replacing one piece to rebuilding your stack from top to bottom. Depending on your goals, you might consider moving to something that has AX.25 and common packet tools built in, like LinBPQ or JNOS. You might also consider a more modular approach, with a software TNC like Dire Wolf and separate applications for messaging, BBS, or APRS.&lt;br /&gt;
&lt;br /&gt;
=== Revive ===&lt;br /&gt;
&lt;br /&gt;
There is always the option of resurrecting or re-implementing the old kernel code; the kernel maintainers have not ruled out merging up-to-date code back in. If you have the technical interest and motivation, there’s nothing to stop you. &lt;br /&gt;
&lt;br /&gt;
The state of maintenance for the code that was just removed and the state of development in other tools might be considerations when evaluating this path. ARDC did fund [https://www.ardc.net/apply/grants/2021-grants/grant-fixing-the-linux-kernel-ax-25/ an effort related to AX.25 in the kernel] that encountered unexpected challenges and was not able to proceed. &lt;br /&gt;
&lt;br /&gt;
New coding tools may make this a more approachable project than it might have been in the past, with some caveats noted in the [https://docs.kernel.org/process/index.html#an-introduction-to-how-kernel-development-works Linux kernel development documentation], particularly around [https://docs.kernel.org/process/coding-assistants.html the use of large language models].&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
&lt;br /&gt;
=== ARDC groups.io discussions ===&lt;br /&gt;
&lt;br /&gt;
* [https://ardc.groups.io/g/community/topic/119004386 Boudewijn VE3TOK’s thread and discussion about paths forward]&lt;br /&gt;
* [https://ardc.groups.io/g/community/topic/119004386 Bernard F6BVP’s retrospective and thoughts on the change]&lt;br /&gt;
&lt;br /&gt;
=== Kernel discussions ===&lt;br /&gt;
&lt;br /&gt;
* [https://lore.kernel.org/netdev/20260421021824.1293976-1-kuba@kernel.org/ Jakub Kicinski’s April 21, 2026 patch], proposing removal of the in-tree amateur-radio networking subsystem&lt;br /&gt;
* [https://lore.kernel.org/lkml/20260423235422.1541768-1-kuba@kernel.org/ Jakub Kicinski’s April 23, 2026 pull-request thread], with more discussion&lt;br /&gt;
* [https://lore.kernel.org/netdev/20260424232427.792249-1-stephen@networkplumber.org/ Stephen Hemminger’s April 24, 2026 iproute2 cleanup patch], noting that AX.25, ROSE, and NET/ROM have been removed upstream&lt;br /&gt;
* [https://lore.kernel.org/netdev/CAEoi9W6ZRw6aEh62Xbgkg-TW8URHbVp6dHTT9krFiTkotjTuTA@mail.gmail.com/ Dan Cross on the likely user-space direction], including TUN/TAP for IP over AX.25&lt;br /&gt;
&lt;br /&gt;
=== Independent coverage ===&lt;br /&gt;
&lt;br /&gt;
* [https://lwn.net/Articles/1068928/ LWN coverage from April 22, 2026], summarizing the broader kernel code-removal effort&lt;br /&gt;
* [https://www.phoronix.com/news/Linux-7.1-PR-Remove-Old-Net Phoronix coverage from April 24, 2026], on the pull request removing legacy networking code, including AX.25&lt;br /&gt;
&lt;br /&gt;
=== Repositories and source trees ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/linux-netdev/mod-orphan linux-netdev/mod-orphan], the out-of-tree repository where the removed code is being staged&lt;br /&gt;
&lt;br /&gt;
=== Older HOWTOs ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.tldp.org/HOWTO/AX25-HOWTO/ Jeff Tranter VE3ICH’s 2001 Linux AX.25 HOWTO], useful mainly as historical background now&lt;br /&gt;
&lt;br /&gt;
=== Protocol references ===&lt;br /&gt;
&lt;br /&gt;
* [https://files.tapr.org/tech_docs/AX25/AX25.2.2.1997.pdf AX.25 Link Access Protocol for Amateur Packet Radio, Version 2.2]&lt;br /&gt;
* [https://ax25.net/ AX.25 Layer 2]&lt;br /&gt;
* [https://www.on7lds.net/42/sites/default/files/AGWPEAPI.HTM AGWPE TCP/IP API reference]&lt;br /&gt;
* [https://github.com/wb2osz/direwolf/blob/master/doc/AX25_plus_FEC_equals_FX25.pdf Dire Wolf’s AX.25 framing and FEC documentation]&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
&lt;br /&gt;
* [[Getting started with Linux and packet radio]]&lt;br /&gt;
* [[IPIP Mesh/Linux|Setting up a gateway on Linux]]&lt;br /&gt;
* [[IPIP Mesh/Gateways|Gateway]]&lt;br /&gt;
* [[Routing]]&lt;br /&gt;
* [[MTU and MSS]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Provisioning_Methods&amp;diff=3069</id>
		<title>Provisioning Methods</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Provisioning_Methods&amp;diff=3069"/>
		<updated>2026-09-29T19:09:29Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Provisioning Methods}}&lt;br /&gt;
&lt;br /&gt;
New here? Start with [[GetStarted|Getting started]].&lt;br /&gt;
&lt;br /&gt;
There is no single way to provision 44Net. The network is fundamentally decentralized, and operators participate from within different environments and toward different goals. &lt;br /&gt;
&lt;br /&gt;
The provisioning models people have developed reflect those operational realities rather than a progression of experience, but there are some learning opportunities associated with moving among them or combining them.&lt;br /&gt;
&lt;br /&gt;
To understand more about decentralization and why these approaches exist, see [[Decentralization]].&lt;br /&gt;
&lt;br /&gt;
== Current provisioning models ==&lt;br /&gt;
&lt;br /&gt;
=== [[44Net Connect/Quick Start|44Net Connect]] ===&lt;br /&gt;
&lt;br /&gt;
Provision 44Net to a single device or small network using a tunnel. This model works from typical home networks, cloud hosts, mobile environments, and other locations where direct routing infrastructure is not available. &lt;br /&gt;
&lt;br /&gt;
=== [[IPIP Mesh/Quick Start|IPIP Mesh]] ===&lt;br /&gt;
&lt;br /&gt;
Participate in a shared community routing environment. Independently operated stations link with one another through a mesh of tunnels, and traffic to or from the wider Internet typically transits shared gateways (such as at UCSD). This model is common in long‑running regional and club networks.&lt;br /&gt;
&lt;br /&gt;
=== [[BGP/Quick Start|BGP-announced subnet]] ===&lt;br /&gt;
&lt;br /&gt;
Integrate 44Net directly into independently operated routing infrastructure. Operators announce their allocated prefixes using BGP and maintain their own routing policy and operational practices. This model is suited to research networks, {{Term|IX}}-connected operators, multi-homing, community backbones, and other autonomous environments.&lt;br /&gt;
&lt;br /&gt;
== Comparing the approaches ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Model&lt;br /&gt;
! Typical environment&lt;br /&gt;
! How routing reaches you&lt;br /&gt;
! Operational responsibility&lt;br /&gt;
|-&lt;br /&gt;
| 44Net Connect&lt;br /&gt;
| Single host or small network without direct routing infrastructure&lt;br /&gt;
| Tunnel between your device and a point of presence&lt;br /&gt;
| Managing the tunnel and the provisioned subnet&lt;br /&gt;
|-&lt;br /&gt;
| IPIP Mesh&lt;br /&gt;
| Regional or community network with shared routing&lt;br /&gt;
| Shared mesh gateways (such as UCSD)&lt;br /&gt;
| Operating a mesh node and participating in shared routing&lt;br /&gt;
|-&lt;br /&gt;
| BGP-announced subnet&lt;br /&gt;
| Independently routed infrastructure&lt;br /&gt;
| Global routing via BGP&lt;br /&gt;
| Operating routers, BGP edge, and routing policy&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to choose ==&lt;br /&gt;
&lt;br /&gt;
If you want to provision 44Net to a single device or a small LAN without operating routing infrastructure, start with &#039;&#039;&#039;44Net Connect&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are participating in a regional or club network that exchanges routes cooperatively, or if you are working with a [[Regional Coordinator]], consider &#039;&#039;&#039;IPIP Mesh&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you already operate routed infrastructure and want your 44Net prefixes announced as part of your existing routing environment, use a &#039;&#039;&#039;BGP-announced subnet&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Under the hood ==&lt;br /&gt;
&lt;br /&gt;
All provisioning models place your systems into the same shared 44Net address space. The differences are operational: how routes reach your network, where gateways exist, and who is responsible for routing decisions. These distinctions reflect the decentralized structure of 44Net rather than separate networks.&lt;br /&gt;
&lt;br /&gt;
== Learn more ==&lt;br /&gt;
&lt;br /&gt;
* [[GetStarted|Getting started]]&lt;br /&gt;
* [[Routing|Routing and connectivity]]&lt;br /&gt;
* [[CommunityProjects|Community projects]]&lt;br /&gt;
* [[Decentralization|How Connect, IPIP Mesh, and BGP fit together]]&lt;br /&gt;
&lt;br /&gt;
== Older docs and notes ==&lt;br /&gt;
Earlier pages that may still be useful:&lt;br /&gt;
* [[IPIP Mesh/Gateways|Gateway]]&lt;br /&gt;
* [[IPIP Mesh/Registering Your Gateway|Registering Your Gateway]]&lt;br /&gt;
* [[Tunnel]]&lt;br /&gt;
* [[AMPRNet VPN]]&lt;br /&gt;
* [[Routing your allocation via BGP]]&lt;br /&gt;
* [[Announcing your allocation directly]]&lt;br /&gt;
* [[FAQ|Why can’t I announce my allocation directly?]]&lt;br /&gt;
* See [[Archive]] for more.&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh&amp;diff=3068</id>
		<title>IPIP Mesh</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh&amp;diff=3068"/>
		<updated>2026-09-29T19:09:29Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IPIP Mesh (Stub)}}&lt;br /&gt;
&lt;br /&gt;
== What this page is ==&lt;br /&gt;
This is an overview stub for the IPIP Mesh participation model on 44Net.&lt;br /&gt;
For setup steps, start with [[IPIP Mesh/Quick Start|IPIP Mesh Quick Start]].&lt;br /&gt;
&lt;br /&gt;
== Start here ==&lt;br /&gt;
* [[IPIP Mesh/Quick Start|IPIP Mesh Quick Start]]&lt;br /&gt;
* [[Provisioning Methods|Provisioning Methods]]&lt;br /&gt;
* [[GetStarted|Getting started]]&lt;br /&gt;
* [[Routing|Routing and connectivity]]&lt;br /&gt;
* [[Community|Community and mailing lists]]&lt;br /&gt;
&lt;br /&gt;
== Existing documentation ==&lt;br /&gt;
These pages cover mesh gateways, setup, and routing. Some guides describe older systems and have not been revalidated.&lt;br /&gt;
&lt;br /&gt;
=== Gateways ===&lt;br /&gt;
* [[IPIP Mesh/Gateways|How mesh gateways connect]]&lt;br /&gt;
* [[IPIP Mesh/Registering Your Gateway|Registering your gateway]]&lt;br /&gt;
* [[IPIP Mesh/Amprgw|The shared Internet gateway (Amprgw)]]&lt;br /&gt;
* [[IPIP Mesh/Firewalls|Firewall configuration]]&lt;br /&gt;
&lt;br /&gt;
=== Platform guides ===&lt;br /&gt;
* [[IPIP Mesh/Linux|Linux]] and [[IPIP Mesh/Ubuntu Linux Gateway Example|Ubuntu example]]&lt;br /&gt;
* [[IPIP Mesh/macOS|macOS]] (unfinished)&lt;br /&gt;
* [[IPIP Mesh/Cisco|Cisco]]&lt;br /&gt;
* [[IPIP Mesh/MikroTik|MikroTik]] and [[IPIP Mesh/MikroTik RouterOS 7 Container|RouterOS 7 container]]&lt;br /&gt;
* [[IPIP Mesh/OpenBSD|OpenBSD]]&lt;br /&gt;
* [[IPIP Mesh/OpenWrt|OpenWrt]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter|Ubiquiti EdgeRouter: single tunnel]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd|Ubiquiti EdgeRouter with ampr-ripd]]&lt;br /&gt;
* [[IPIP Mesh/VyOS|VyOS]]&lt;br /&gt;
&lt;br /&gt;
For other connection methods, see [[:Category:Device and platform guides|device and platform guides]].&lt;br /&gt;
&lt;br /&gt;
=== Routing references and tools ===&lt;br /&gt;
* [[IPIP Mesh/RIP|RIP route announcements]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt|Encap.txt]] and [[IPIP Mesh/Encap.txt/get-encap|get-encap script]]&lt;br /&gt;
* [[IPIP Mesh/Ampr-ripd|ampr-ripd]], [[IPIP Mesh/Rip44d|rip44d]], and [[IPIP Mesh/RIP44.lua|RIP44.lua]]&lt;br /&gt;
* [[IPIP Mesh/Munge script|Munge scripts]] and [[IPIP Mesh/Startampr|startampr]]&lt;br /&gt;
&lt;br /&gt;
== What this page will cover ==&lt;br /&gt;
* What the IPIP Mesh model is and where it fits.&lt;br /&gt;
* Peering and topology expectations for mesh participants.&lt;br /&gt;
* Operational responsibilities in shared routing environments.&lt;br /&gt;
* Common validation and troubleshooting workflows.&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[IPIP Mesh/Quick Start|IPIP Mesh Quick Start]]&lt;br /&gt;
* [[Decentralization|How Connect, IPIP Mesh, and BGP fit together]]&lt;br /&gt;
* [[Provisioning Methods|Provisioning Methods]]&lt;br /&gt;
* [[Contributing|Contributing]]&lt;br /&gt;
&lt;br /&gt;
== Contribute / next steps ==&lt;br /&gt;
If you run an IPIP Mesh node and can share practical guidance, please contribute through [[Contributing]] so this stub can be expanded into a full reference page.&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;br /&gt;
[[Category:IPIP Mesh]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Archive&amp;diff=3067</id>
		<title>Archive</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Archive&amp;diff=3067"/>
		<updated>2026-09-29T19:09:29Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Archive}}&lt;br /&gt;
&lt;br /&gt;
This page indexes earlier documentation and historical notes that remain useful while the main documentation is reorganized. For the current onboarding path, start with [[Main Page]], [[GetStarted]], and [[Provisioning Methods]].&lt;br /&gt;
&lt;br /&gt;
== Entry points ==&lt;br /&gt;
* [[Archive/Home]]&lt;br /&gt;
* [[Archive/Main Page]]&lt;br /&gt;
* [[GetStarted]]&lt;br /&gt;
* [[IPIP Mesh/Quickstart|Quickstart]]&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
&lt;br /&gt;
== VPN efforts ==&lt;br /&gt;
* [[AMPRNet VPN]]&lt;br /&gt;
&lt;br /&gt;
== IPIP Mesh and gateways ==&lt;br /&gt;
* [[Tunnel]]&lt;br /&gt;
* [[IPIP Mesh/Ubuntu Linux Gateway Example|Ubuntu Linux Gateway Example]]&lt;br /&gt;
* [[IPIP Mesh/Gateways|Gateway]]&lt;br /&gt;
* [[IPIP Mesh/Registering Your Gateway|Registering Your Gateway]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt|Encap.txt]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt/get-encap|Encap.txt/get-encap]]&lt;br /&gt;
* [[IPIP Mesh/Rip44d|Rip44d]]&lt;br /&gt;
* [[IPIP Mesh/RIP44.lua|RIP44.lua]]&lt;br /&gt;
* [[IPIP Mesh/Amprgw|Amprgw]]&lt;br /&gt;
* [[IPIP Mesh/Ampr-ripd|Ampr-ripd]]&lt;br /&gt;
* [[Ampr-map]]&lt;br /&gt;
* [[IPIP Mesh/Startampr|Startampr]]&lt;br /&gt;
* [[OH7LZB VPN]]&lt;br /&gt;
* [[AxMail-FAX]]&lt;br /&gt;
* [[IPIP Mesh/Munge script|Munge script]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd|Installing ampr-ripd on a Ubiquiti EdgeRouter or EdgeRouter X]]&lt;br /&gt;
&lt;br /&gt;
== Device-specific setup guides ==&lt;br /&gt;
* [[IPIP Mesh/Cisco|Setting up a gateway on Cisco Routers]]&lt;br /&gt;
* [[IPIP Mesh/Linux|Setting up a gateway on Linux]]&lt;br /&gt;
* [[IPIP Mesh/macOS|Setting up a gateway on MacOS]]&lt;br /&gt;
* [[IPIP Mesh/MikroTik|Setting up a gateway on MikroTik Routers]]&lt;br /&gt;
* [[IPIP Mesh/OpenBSD|Setting up a gateway on OpenBSD]]&lt;br /&gt;
* [[IPIP Mesh/OpenWrt|Setting up a gateway on OpenWRT]]&lt;br /&gt;
* [[IPIP Mesh/Ubiquiti EdgeRouter|Setting up a gateway on Ubiquiti EdgeRouter]]&lt;br /&gt;
* [[IPIP Mesh/VyOS|Setting up a gateway on a VyOS instance]]&lt;br /&gt;
* [[Setting up a complete gateway on Ubiquiti EdgeRouter]]&lt;br /&gt;
* [[Setting up a gateway in a ROS7 Mikrotik router container on arm32, arm64 and x86-64]]&lt;br /&gt;
* [[IPIP Mesh/MikroTik RouterOS 7 Container|Setting up a gateway in a ROS7 Mikrotik router container on arm32 arm64 and x86-64]]&lt;br /&gt;
* [[K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms]]&lt;br /&gt;
&lt;br /&gt;
== BGP ==&lt;br /&gt;
* [[Routing your allocation via BGP]]&lt;br /&gt;
* [[Announcing your allocation directly]]&lt;br /&gt;
* [[FAQ|Why can’t I announce my allocation directly?]]&lt;br /&gt;
* [[SWIP]]&lt;br /&gt;
* [[NSP Details]]&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* [[DNS]]&lt;br /&gt;
* [[DNS/Overview]]&lt;br /&gt;
* [[DNS/Portal]]&lt;br /&gt;
* [[DNS/Portal/Subdomains]]&lt;br /&gt;
* [[DNS/Portal/Delegations]]&lt;br /&gt;
* [[DNS/Portal/Records]]&lt;br /&gt;
* [[DNS/Setup/OpenBSD Resolver]]&lt;br /&gt;
&lt;br /&gt;
== Portal ==&lt;br /&gt;
* [[Portal]]&lt;br /&gt;
* [[Portal/Introduction]]&lt;br /&gt;
* [[Portal/Request Address Space]]&lt;br /&gt;
* [[Portal intro]]&lt;br /&gt;
* [[Portal Call Sign Verification]]&lt;br /&gt;
* [[Organizations in the Portal]]&lt;br /&gt;
* [[How Organizations Work on the Portal]]&lt;br /&gt;
* [[Approving Small Subnets on the Portal]]&lt;br /&gt;
* [[Verification]]&lt;br /&gt;
* [[Requesting a block]]&lt;br /&gt;
&lt;br /&gt;
== Routing and networking ==&lt;br /&gt;
* [[Routing]]&lt;br /&gt;
* [[IPIP Mesh/RIP|RIP]]&lt;br /&gt;
* [[Filtering RFC1918 Addresses]]&lt;br /&gt;
* [[IPIP Mesh/Firewalls|Firewalls]]&lt;br /&gt;
* [[Ipv6]]&lt;br /&gt;
* [[Networks that use 44Net]]&lt;br /&gt;
* [[Services]]&lt;br /&gt;
* [[Services/Historic]]&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
* [[Community]]&lt;br /&gt;
* [[CommunityProjects]]&lt;br /&gt;
* [[44Net mailing list]]&lt;br /&gt;
* [[ARDC]]&lt;br /&gt;
* [[Ampr.org]]&lt;br /&gt;
* [[K2IE]]&lt;br /&gt;
&lt;br /&gt;
== Policies and legal ==&lt;br /&gt;
* [[EULA]]&lt;br /&gt;
* [[EULA FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Software and historical ==&lt;br /&gt;
* [[API]]&lt;br /&gt;
* [[Getting started with Linux and packet radio]]&lt;br /&gt;
* [[New Server]]&lt;br /&gt;
&lt;br /&gt;
== Duplicates / older entry points ==&lt;br /&gt;
* [[Setting up a complete gateway on Ubiquiti EdgeRouter]] (redirects to [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd|Ubiquiti EdgeRouter with ampr-ripd]])&lt;br /&gt;
* [[Setting up a gateway in a ROS7 Mikrotik router container on arm32, arm64 and x86-64]] (alternate title: [[IPIP Mesh/MikroTik RouterOS 7 Container|Setting up a gateway in a ROS7 Mikrotik router container on arm32 arm64 and x86-64]])&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Archive]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Quick_Start&amp;diff=3066</id>
		<title>IPIP Mesh/Quick Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Quick_Start&amp;diff=3066"/>
		<updated>2026-09-29T19:09:28Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IPIP Mesh Quick Start (Stub)}}&lt;br /&gt;
&lt;br /&gt;
== What this page is ==&lt;br /&gt;
This is an orientation stub for joining the shared IPIP Mesh model on 44Net.&lt;br /&gt;
A full quick start procedure is not published yet.&lt;br /&gt;
&lt;br /&gt;
== What you can do today ==&lt;br /&gt;
* Confirm that a shared mesh model fits your goals in [[Provisioning Methods|Provisioning Methods]].&lt;br /&gt;
* Complete account and verification prerequisites in [[GetStarted|Getting started]] and [[Portal/Sign Up|Portal Sign Up]].&lt;br /&gt;
* Identify local or regional peers and gateway expectations via [[Community|Community and mailing lists]].&lt;br /&gt;
* Review routing responsibilities in [[Routing|Routing and connectivity]].&lt;br /&gt;
&lt;br /&gt;
== What this page will cover ==&lt;br /&gt;
* Prerequisites for mesh participation and peering.&lt;br /&gt;
* Endpoint setup expectations and addressing model.&lt;br /&gt;
* Shared gateway behavior and traffic flow patterns.&lt;br /&gt;
* Operational coordination with regional maintainers.&lt;br /&gt;
* Validation and troubleshooting checklist.&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[Provisioning Methods|Provisioning Methods]]&lt;br /&gt;
* [[GetStarted|Getting started]]&lt;br /&gt;
* [[Routing|Routing and connectivity]]&lt;br /&gt;
* [[Community|Community and mailing lists]]&lt;br /&gt;
* [[Portal/Request Address Space|Request Address Space]]&lt;br /&gt;
* [[Contributing|Contributing]]&lt;br /&gt;
* [[Decentralization|How Connect, IPIP Mesh, and BGP fit together]]&lt;br /&gt;
&lt;br /&gt;
== Contribute / next steps ==&lt;br /&gt;
If you already operate in the mesh, contribute a minimal reproducible setup path with topology notes and failure modes. Submit through [[Contributing]] so this stub can become a complete Quick Start.&lt;br /&gt;
&lt;br /&gt;
== Older docs and notes ==&lt;br /&gt;
See [[IPIP Mesh#Existing documentation|the IPIP Mesh documentation directory]] for platform guides and routing tools. Earlier pages that may still be useful:&lt;br /&gt;
* [[IPIP Mesh/Gateways|Gateway]]&lt;br /&gt;
* [[IPIP Mesh/Registering Your Gateway|Registering Your Gateway]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt|Encap.txt]]&lt;br /&gt;
* [[IPIP Mesh/Encap.txt/get-encap|Encap.txt/get-encap]]&lt;br /&gt;
* [[IPIP Mesh/Rip44d|Rip44d]]&lt;br /&gt;
* [[IPIP Mesh/RIP44.lua|RIP44.lua]]&lt;br /&gt;
* [[IPIP Mesh/Amprgw|Amprgw]]&lt;br /&gt;
* [[IPIP Mesh/Ampr-ripd|Ampr-ripd]]&lt;br /&gt;
* [[IPIP Mesh/Linux|Setting up a gateway on Linux]]&lt;br /&gt;
* [[IPIP Mesh/OpenBSD|Setting up a gateway on OpenBSD]]&lt;br /&gt;
* See [[Archive]] for more.&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;br /&gt;
[[Category:IPIP Mesh]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3065</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Main_Page&amp;diff=3065"/>
		<updated>2026-09-29T19:09:28Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:44Net Main Page}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;toclimit-3&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Lead|44Net is a community of amateur radio operators using portable, public, static IP addresses to connect stations, run services, and experiment with networks.}}&lt;br /&gt;
&lt;br /&gt;
[[About 44Net|About 44Net and its history →]]&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
=== Get started with 44Net ===&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|gap=0.75rem|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== 44Net Connect ====&lt;br /&gt;
The recommended way to get 44Net, using your existing Internet connection and a WireGuard tunnel.&lt;br /&gt;
&lt;br /&gt;
[[44Net Connect/Quick Start|Set up a Connect tunnel →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== IPIP Mesh ====&lt;br /&gt;
Run a gateway in the community-operated mesh, connecting to other 44Net networks through IP-in-IP tunnels.&lt;br /&gt;
&lt;br /&gt;
[[IPIP Mesh/Gateways|How the mesh works →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
==== BGP-announced subnet ====&lt;br /&gt;
Have an ISP or hosting provider announce your subnet to the Internet, or announce it through your own network.&lt;br /&gt;
&lt;br /&gt;
[[BGP/Quick Start|Arrange a BGP announcement →]]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=primary|&lt;br /&gt;
== What you need ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Equipment ===&lt;br /&gt;
A computer, mobile device, Raspberry Pi, or a router from common manufacturers including Netgear, Ubiquiti, or MikroTik. Setup depends on the model and connection method. Browse the [[:Category:Device and platform guides|device and platform guides]] to find a starting point.&lt;br /&gt;
&lt;br /&gt;
=== 2. Internet connection ===&lt;br /&gt;
44Net does not provide Internet connections, it provides resources. Some use 44Net over RF links, but most participants use an existing broadband Internet connection, including cable, fiber, cellular, or satellite. For more on Internet connection requirements, see [[Internet Requirements|requirements for your connection]].&lt;br /&gt;
&lt;br /&gt;
=== 3. A valid amateur radio operator&#039;s license ===&lt;br /&gt;
44Net is a community of licensed amateur radio operators, and you must be licensed to participate. For more about this, see [[Verification|license requirements]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|&lt;br /&gt;
== What people build ==&lt;br /&gt;
You can run a single system, collaborate on shared projects, or build independent networks. As with amateur radio in general, 44Net is what we make of it, and there is no single “right” way to participate!&lt;br /&gt;
&lt;br /&gt;
{{SectionLayout|min=16rem|class=mw-section__layout--build|&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Individual projects ===&lt;br /&gt;
Remote station operation, self-hosted services, cloud services with {{Term|BYOIP}}.&lt;br /&gt;
&lt;br /&gt;
==== Examples: ====&lt;br /&gt;
* [https://ni2o.ampr.org NI2O’s bit of Cyberspace]&lt;br /&gt;
* [https://yo2loj.ampr.org YO2LOJ’s map of 44Net]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Shared infrastructure ===&lt;br /&gt;
Club networks, linked repeaters, and services for the wider community.&lt;br /&gt;
&lt;br /&gt;
==== Examples: ====&lt;br /&gt;
* [https://www.irlp.net The Internet Radio Linking Project]&lt;br /&gt;
* [https://hamgate.ampr.org HamGate Northeast US Networks]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{SectionCard|&lt;br /&gt;
=== Autonomous networks ===&lt;br /&gt;
Multi-site links, resilient backbones, and &lt;br /&gt;
globally-routed independent systems.&lt;br /&gt;
&lt;br /&gt;
==== Examples: ====&lt;br /&gt;
* [https://www.darc.de/der-club/distrikte/c/hamnet/ HamNET broadband RF network]&lt;br /&gt;
* [https://www.arednmesh.org AREDN Emergency Data Network]&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Looking for ideas? Try one of these:&#039;&#039;&#039; [[Minecraft|Run a Minecraft server]] · [[Home Assistant|Connect Home Assistant]]&lt;br /&gt;
&lt;br /&gt;
[[What People Build|See more projects →]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|variant=secondary|&lt;br /&gt;
== Work on your network ==&lt;br /&gt;
* [[Portal/Introduction|Manage your Portal account and resources]]&lt;br /&gt;
* [[DNS/Portal|Set up DNS names]]&lt;br /&gt;
* [[44Net Connect/Supported Platforms|Find Connect instructions for your device]]&lt;br /&gt;
* [[Routing|Understand routing and check traffic paths]]&lt;br /&gt;
* [[Firewalling Basics|Configure a firewall]]&lt;br /&gt;
* [[Get Help|Get help with a problem]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Join us ==&lt;br /&gt;
You are welcome in the [[Community|community discussions]], whether you have a project underway or are just curious. Ask questions, share what you are trying, or listen for a while. As you learn, your [[Contributing|notes and contributions]] can help the next person get started.&lt;br /&gt;
&lt;br /&gt;
== A shared project ==&lt;br /&gt;
44Net is a project of [[ARDC|Amateur Radio Digital Communications (ARDC)]]. As part of the 44Net community, ARDC works alongside operators and volunteers to steward the address space and provide support on the community&#039;s behalf. Together, we all help keep 44Net useful by looking after our systems, sharing what we learn, and making room for others.&lt;br /&gt;
&lt;br /&gt;
For details about participating, see [[Eligibility|eligibility]] and the [[EULA|terms of use]]. Earlier documentation is in the [[Archive|archive]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Services&amp;diff=3064</id>
		<title>Services</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Services&amp;diff=3064"/>
		<updated>2026-09-29T19:09:28Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Maintainer !! Service Name!! URL/IP !! Service Type !! Description !! Other Information&lt;br /&gt;
|-&lt;br /&gt;
| AMPR ||[[Portal]] ||  https://portal.ampr.org || HTTPS || Used to request allocations, manage user profile information, [[IPIP Mesh/Gateways|Gateway]] entries and ampr.org DNS entries|| NONE&lt;br /&gt;
|-&lt;br /&gt;
| AMPR ||Website ||  https://www.ampr.org || HTTPS || AMPRNet Main Page|| NONE&lt;br /&gt;
|-&lt;br /&gt;
| AMPR ||Wiki ||  https://wiki.ampr.org || HTTPS || This Wiki|| NONE&lt;br /&gt;
|-&lt;br /&gt;
| AMPR ||44Net discussion group ||  https://ardc.groups.io/g/44net || HTTPS || AMPR discussion group|| NONE&lt;br /&gt;
|-&lt;br /&gt;
| AMPR ||ARDC announcements ||  https://ardc.groups.io/g/main || HTTPS || ARDC announcements|| NONE&lt;br /&gt;
|-&lt;br /&gt;
| AMPR ||AMPRNet Gateway [[IPIP Mesh/Amprgw|(AMPRGW)]] || amprgw.ucsd.edu/169.228.34.84 || IP and IPENCAP [[Tunnel]]|| Routes traffic between the public internet and AMPRNet hosts connected via the IPIP Mesh and originates [[IPIP Mesh/RIP|RIP]] packets || Gateways use IP Protocol 4 (IPENCAP) to receive traffic via AMPRGW. Allocation must be registered in the [[Portal]] with a ampr.org DNS entry, and gateways must run an AMPRNet routing protocol (i.e. [[IPIP Mesh/RIP|RIP]]44 or [[IPIP Mesh/Munge script|munge script]])&lt;br /&gt;
|-&lt;br /&gt;
| AMPR ||[[IPIP Mesh/RIP|RIP]]44 || provided via [https://en.wikipedia.org/wiki/Broadcasting_%28networking%29 broadcast] from 44.0.0.1 to all [[IPIP Mesh/Gateways|gateway]]s registered in the [[Portal]] || Routing Information (modified RIPv2 protocol) || distributed by main AMPRNet Router to multicast address 224.0.0.9|| 1.) an enabled IPENCAP tunnel, and 2.) [[IPIP Mesh/Ampr-ripd|ampr-ripd]] or [[IPIP Mesh/Rip44d|rip44d]] must be running and properly configured on your registered gateway&lt;br /&gt;
|-&lt;br /&gt;
| Various Operators||[[Ampr.org]] DNS and Reverse DNS (44.in-addr.arpa) ||&lt;br /&gt;
ns.ardc.net&amp;lt;br /&amp;gt;&lt;br /&gt;
a.gw4.uk&amp;lt;br /&amp;gt;&lt;br /&gt;
ns2.us.ardc.net&amp;lt;br /&amp;gt;&lt;br /&gt;
ns1.de.ardc.net&amp;lt;br /&amp;gt;&lt;br /&gt;
(These hosts are authoritative for AMPR.ORG and most of the &#039;[0-191].44.in-addr.arpa&#039; reverse zones.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
44.0.0.0/9 thru 44.128.0.0/10 hosts may use dns-mdc.ampr.org (44.60.44.3) as a recursive DNS server. It also has a copy of HAMWAN.ORG&amp;lt;br /&amp;gt;&lt;br /&gt;
srv.kz2x.ampr.org (44.44.48.29) is a recursive resolver available to 44.0.0.0/9 and 44.128.0.0/10&amp;lt;br /&amp;gt;&lt;br /&gt;
|| DNS || name resolution services||&lt;br /&gt;
|-&lt;br /&gt;
| Various Operators||Network Tools||&lt;br /&gt;
http://whatismyip.ampr.org&amp;lt;br /&amp;gt;&lt;br /&gt;
http://yo2loj.ampr.org/nettools.php&amp;lt;br /&amp;gt;&lt;br /&gt;
http://kb3vwg-010.ampr.org/AMPRNet_access_only/tools/&amp;lt;br /&amp;gt;&lt;br /&gt;
http://speedtest.ampr.org&amp;lt;br /&amp;gt;&lt;br /&gt;
http://lg.vk7sh.asmpr.org&amp;lt;br /&amp;gt;&lt;br /&gt;
 || HTTP|| source IP checker, speed test, Ping, Traceroute, etc.||&lt;br /&gt;
&#039;&#039;&#039;kb3vwg-010.ampr.org&#039;&#039;&#039; only available from hosts with an AMPRNet IP address&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;lg.vk7sh.asmpr.org&#039;&#039;&#039; only available from hosts with an AMPRNet IP address&lt;br /&gt;
|-&lt;br /&gt;
| Various Operators ||Network Time Protocol || ntp.vk2hff.ampr.org (Stratum 1, AU)&amp;lt;br /&amp;gt;time.kz2x.ampr.org (Stratum 1, US)&amp;lt;br /&amp;gt;kb3vwg-001.ampr.org (Stratum 2, US)&amp;lt;br /&amp;gt;gw-44-137.pi9noz.ampr.org (Stratum 2)|| NTP|| Stratum 2 Network Time Server - References US, Canadian and Mexican|| &#039;&#039;&#039;kb3vwg-001.ampr.org&#039;&#039;&#039; only available from hosts with an AMPRNet IP address&amp;lt;br /&amp;gt;&#039;&#039;&#039;time.kz2x.ampr.org&#039;&#039;&#039; only available from hosts with an AMPRNet IP address&lt;br /&gt;
|-&lt;br /&gt;
| N1URO  ||AMPRNet/RF faxing || http://wiki.ampr.org/wiki/axMail-FAX || Facsimile || Online IP based Facsimile service. You have the ability to send emergency communications from packet via Fax. || [http://axmail.sourceforge.net axMail-FAX] Sofware is here.&lt;br /&gt;
|-&lt;br /&gt;
| [http://allstarlink.org AllStar Link] || AllStar || http://allstarlink.org || Linking of repeaters || AllStar Link core network services are provided via redundant datacenters using 44Net IP space.  || [https://wiki.allstarlink.org/wiki/Main_Page ASL wiki]&lt;br /&gt;
|-&lt;br /&gt;
| N2NOV and G1FEF || Hub_NA and Hub_EU for WWconvers Chat System || 44.68.41.2:3600&amp;lt;br /&amp;gt;convers.g1fef.co.uk:3600 || Telnet || Only connections from other 44Net addresses allowed using port 3600. Stations like JNOS with a built-in local chat server can link to it.&amp;lt;br /&amp;gt; Individuals without a local chat portal can use an IRC client to a public IP address that must be arranged with the owner. || None&lt;br /&gt;
|-&lt;br /&gt;
| N2NOV || AMPRNet NE US Regional Portal || http://n2nov.ampr.org/hamgate.html || HTTP || AMPRNet NE US Regional Portal || None&lt;br /&gt;
|-&lt;br /&gt;
| N0QVC || Network Tools&amp;lt;br /&amp;gt;JNOS Bulletin Board&amp;lt;br /&amp;gt;Convers (Chat) Server || http://n0qvc.ampr.org&amp;lt;br /&amp;gt;http://44.27.24.17&amp;lt;br /&amp;gt;telnet://jnos.n0qvc.ampr.org&amp;lt;br /&amp;gt;telnet://44.27.24.18&amp;lt;br /&amp;gt;telnet://jnos.n0qvc.ampr.org:81&amp;lt;br /&amp;gt;telnet://44.27.24.18:81 || HTTP&amp;lt;br /&amp;gt;Telnet&amp;lt;br /&amp;gt;Telnet || Source IP checker, Ping, Traceroute, etc.&amp;lt;br /&amp;gt;BBS&amp;lt;br /&amp;gt;Chat || Services only available from hosts with an AMPRNet IP address&lt;br /&gt;
|-&lt;br /&gt;
| [https://flscg.org/ FSG]|| HamWAN Remote || https://flscg.org/2022/04/hamwan-remote/ || VPN/BGP || We provide a VPN based remote site connection to [https://flscg.org/hamwan/ HamWAN Tampa] and can announce your IP space.  Performance of over 1gbit/s is possible and we provide an local connection point for amateurs in the South Eastern United States. || https://wiki.w9cr.net/index.php/HamWAN_Remote_Site &lt;br /&gt;
|-&lt;br /&gt;
| [https://hamwan.org HamWAN]||HamWAN Open Peering||https://hamwan.org/Labs/Open%20Peering%20Policy.html||BGP/IPSec(AH)||We provide IPsec VPN w/ BGP peering + Internet announcing.||&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
Services previously available on AMPRNet but no longer actively supported can be viewed on the [[Services/Historic|Historic Services]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Core Services]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=K2IE&amp;diff=3063</id>
		<title>K2IE</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=K2IE&amp;diff=3063"/>
		<updated>2026-09-29T19:09:27Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IPIP Mesh/OpenWrt]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Archive/Home&amp;diff=3062</id>
		<title>Archive/Home</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Archive/Home&amp;diff=3062"/>
		<updated>2026-09-29T19:09:27Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the AMPRNet Wiki.&lt;br /&gt;
&lt;br /&gt;
44Net is shorthand for Internet network 44 (44.0.0.0/9 and 44.128.0.0/10), also known as AMPRNet. Since its allocation to amateur radio in the mid-1980s, the network has been used by amateur radio operators to conduct scientific research and to experiment with digital communications over radio. The goals are to of advance the state of the art of Amateur Radio networking, and to educate amateur radio operators in these techniques.&lt;br /&gt;
&lt;br /&gt;
To request an assignment of IPv4 addresses see below.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Starting points ==&lt;br /&gt;
* [[IPIP Mesh/Quickstart|Quickstart]] guide for getting onto the 44Net&lt;br /&gt;
* Basic information about 44Net and the [[ampr.org]] domain&lt;br /&gt;
* [[Services]] available on 44Net&lt;br /&gt;
* If you are looking to get an IP assignment from ARDC please read the [[Portal]] page.&lt;br /&gt;
* Frequently Asked Questions (FAQ) [[FAQ]]&lt;br /&gt;
* [[Getting started with Linux and packet radio]]&lt;br /&gt;
* [[Networks that use 44Net]]&lt;br /&gt;
&lt;br /&gt;
== Portal how to&#039;s ==&lt;br /&gt;
* Portal Introduction [[Portal intro]]&lt;br /&gt;
* Organization Setup [[Organizations in the Portal]]&lt;br /&gt;
* Call Sign Verification [[Portal Call Sign Verification]]&lt;br /&gt;
&lt;br /&gt;
== How to connect to the 44Net ==&lt;br /&gt;
&lt;br /&gt;
* Instructions for [[IPIP Mesh/Linux|setting up a Linux gateway]]&lt;br /&gt;
* Instructions for [[IPIP Mesh/MikroTik|setting up a gateway on MikroTik Routers running ROS6]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/MikroTik RouterOS 7 Container|setting up a gateway on MikroTik Routers running ROS7 using a container on arm32, arm64 and x86-64]]&lt;br /&gt;
* Instructions for [[IPIP Mesh/OpenBSD|setting up an OpenBSD gateway]]&lt;br /&gt;
* Instructions for [[IPIP Mesh/Cisco|setting up a  gateway on Cisco Routers]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/OpenWrt|setting up a gateway on OpenWRT]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/Ubiquiti EdgeRouter|setting up a gateway on Ubiquiti EdgeRouter]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/VyOS|setting up a gateway on a VyOS instance]].&lt;br /&gt;
* Instructions for [[IPIP Mesh/Ubiquiti EdgeRouter with ampr-ripd|Installing ampr-ripd on a Ubiquiti EdgeRouter or EdgeRouter X]].&lt;br /&gt;
* Instructions for [[Announcing_your_allocation_directly|directly announcing your assignment via your Internet Service Provider (ISP)]].&lt;br /&gt;
* Instructions for [[OH7LZB_VPN|Accessing 44Net via VPN]] (experimental).&lt;br /&gt;
* &amp;lt;b&amp;gt;[[FAQ]]&amp;lt;/b&amp;gt;&lt;br /&gt;
* If you already operate a [[IPIP Mesh/Gateways|gateway]] please ensure you have registered on the [[Portal]] and &amp;quot;claimed&amp;quot; your [[IPIP Mesh/Gateways|gateway]].&lt;br /&gt;
* After your gateway is operational, consider &#039;&#039;&#039;[[IPIP Mesh/Firewalls|Firewalls]]&#039;&#039;&#039; and other best practices&lt;br /&gt;
&lt;br /&gt;
== Groups.io ==&lt;br /&gt;
We are now on Groups.io  Please consider joining https://ardc.groups.io/g/44net&lt;br /&gt;
&lt;br /&gt;
== Mailing list ==&lt;br /&gt;
To keep up-to-date on AMPRNet information please consider joining the [[44Net mailing list]].&lt;br /&gt;
&lt;br /&gt;
== Contribute! ==&lt;br /&gt;
If you wish to contribute to the wiki, please send an email to &amp;lt;tt&amp;gt;wiki (at) ampr.org&amp;lt;/tt&amp;gt; introducing yourself. Please specify your full name and your amateur radio callsign. A login will then be created for you.&lt;br /&gt;
&lt;br /&gt;
== Terms of service ==&lt;br /&gt;
Use of AMPRNet address space is governed by these [https://www.ampr.org/terms-of-service/ Terms of Service]&lt;br /&gt;
&lt;br /&gt;
== Other useful features ==&lt;br /&gt;
* Instruction on using the [[ampr-map]] position reporting&lt;br /&gt;
&lt;br /&gt;
== All pages ==&lt;br /&gt;
[https://wiki.ampr.org/wiki/Special:AllPages Here&#039;s a list of all pages currently on the 44Net Wiki]&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Archive]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=GetStarted&amp;diff=3061</id>
		<title>GetStarted</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=GetStarted&amp;diff=3061"/>
		<updated>2026-09-29T19:09:27Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Get Started with 44Net}}&lt;br /&gt;
&lt;br /&gt;
Welcome. This page helps you bring 44Net to your device or network and choose how you want to participate.&lt;br /&gt;
&lt;br /&gt;
Start by creating an account, then select the participation model that matches your environment.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Create your Portal account ==&lt;br /&gt;
&lt;br /&gt;
An account is required before requesting address space, managing DNS, or participating fully.&lt;br /&gt;
&lt;br /&gt;
* [[Portal/Sign Up|Create a Portal account and verify your callsign]]&lt;br /&gt;
&lt;br /&gt;
Once your account is ready, you can decide how you want to participate.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Choose an operating model ==&lt;br /&gt;
&lt;br /&gt;
44Net can be operated in several different ways. &lt;br /&gt;
These methods are independent by design; see [[Decentralization]] for a conceptual overview.&lt;br /&gt;
&lt;br /&gt;
If you want an overview of provisioning methods first, see [[Provisioning Methods|Provisioning Methods]].&lt;br /&gt;
&lt;br /&gt;
=== Get connected quickly: 44Net Connect ===&lt;br /&gt;
&lt;br /&gt;
Put 44Net on a single device or small network from almost any connection, including home networks, cloud hosts, or mobile devices.&lt;br /&gt;
&lt;br /&gt;
* Start here: [[44Net Connect/Quick Start|44Net Connect Quick Start]]&lt;br /&gt;
&lt;br /&gt;
Ideal when you want a flexible endpoint you control without operating shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
=== Participate via the IPIP Mesh ===&lt;br /&gt;
&lt;br /&gt;
Join the long‑standing shared 44Net community network built from interconnected tunnel endpoints and regional collaboration.&lt;br /&gt;
&lt;br /&gt;
* Start here: [[IPIP Mesh/Quick Start|IPIP Mesh Quick Start]]&lt;br /&gt;
&lt;br /&gt;
Well suited for persistent stations participating in community routing environments.&lt;br /&gt;
&lt;br /&gt;
=== Operate routed infrastructure: BGP announce ===&lt;br /&gt;
&lt;br /&gt;
Integrate 44Net directly into an independently operated routed network using BGP.&lt;br /&gt;
&lt;br /&gt;
* Start here: [[BGP/Quick Start|BGP Direct Announce Quick Start]]&lt;br /&gt;
&lt;br /&gt;
Appropriate when you already manage routing infrastructure and participate in Internet routing, or if you have access to an upstream provider that can announce on your behalf.&lt;br /&gt;
&lt;br /&gt;
=== Learn, explore, or contribute ===&lt;br /&gt;
&lt;br /&gt;
You do not need infrastructure to participate.&lt;br /&gt;
&lt;br /&gt;
* Browse documentation and projects&lt;br /&gt;
* Join discussions&lt;br /&gt;
* Help test, document, or support community efforts&lt;br /&gt;
&lt;br /&gt;
Start with:&lt;br /&gt;
&lt;br /&gt;
* [[Main Page|Explore the Wiki]]&lt;br /&gt;
* [https://ardc.groups.io/g/main ARDC 44Net discussion group]&lt;br /&gt;
&lt;br /&gt;
== Step 3: Head out ==&lt;br /&gt;
&lt;br /&gt;
After choosing a path, common next steps include:&lt;br /&gt;
&lt;br /&gt;
* Request address space: [[Portal/Request Address Space|Requesting Address Space]]&lt;br /&gt;
* Claim DNS under &amp;lt;code&amp;gt;&amp;amp;lt;callsign&amp;amp;gt;.ampr.org&amp;lt;/code&amp;gt;: [[DNS/Portal/Subdomains|Claiming DNS]]&lt;br /&gt;
* Continue with Portal documentation: [[Portal/Introduction|Portal Introduction]]&lt;br /&gt;
* Find specific topics: [[Special:Search|Search the Wiki]]&lt;br /&gt;
&lt;br /&gt;
== Older docs and notes ==&lt;br /&gt;
Earlier pages that may still be useful:&lt;br /&gt;
* [[IPIP Mesh/Quickstart|Quickstart]]&lt;br /&gt;
* [[Requesting a block]]&lt;br /&gt;
* [[Getting started with Linux and packet radio]]&lt;br /&gt;
* See [[Archive]] for more.&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Explanation]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/MikroTik_RouterOS_7_Container&amp;diff=3060</id>
		<title>IPIP Mesh/MikroTik RouterOS 7 Container</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/MikroTik_RouterOS_7_Container&amp;diff=3060"/>
		<updated>2026-09-29T19:09:26Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Section nav|hub=IPIP Mesh|title=IPIP Mesh|category=IPIP Mesh}}&lt;br /&gt;
&lt;br /&gt;
Setting up a gateway in a ROS7 Mikrotik router running in a container on arm and arm64 models and x86-64 CHR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;&#039;&#039;&#039;This is an experimental software build for the &#039;enthusiasts&#039; out there.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source code is available in git.ampr.org: https://git.ampr.org/yo2loj/ampr-ros7-container/-/tree/main&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Info&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are the steps for setting up a fully functional AMPR gateway on an arm/arm64 MikroTik router&lt;br /&gt;
Tested and found working on CRS2116 and RB3011 for now.&lt;br /&gt;
&lt;br /&gt;
MikroTik &amp;lt;b&amp;gt;ARM64&amp;lt;/b&amp;gt; devices:&lt;br /&gt;
 Routers: CCR2004, CCR2116, CCR2216, RB5009&lt;br /&gt;
 Switches: CRS520&lt;br /&gt;
 Wireless and 5G: Netmetal ax, LHG-LTE6, ATL-LTE18&lt;br /&gt;
 SOHO: hAP-ax2, cAP-ax, hAP-ax3, Chateau-ax&lt;br /&gt;
 Others: AMPERE&lt;br /&gt;
&lt;br /&gt;
MikroTik &amp;lt;b&amp;gt;ARM32&amp;lt;/b&amp;gt; devices:&lt;br /&gt;
 Routers: L009, RB3011, RB4011, RB1100AHx4, &lt;br /&gt;
 Switches: CRS305, CRS309, CRS310, CRS317, CRS320, CRS326, CRS328&lt;br /&gt;
 Wireless and 5G: SXTsq-5ac, NetBox-5ax, LHGXL-5ac&lt;br /&gt;
 SOHO: hAP-ax lite, hap-ac2, cAP-ac, wAP-ac, cAPXL-ac, hAP-ac3, Chateau&lt;br /&gt;
 Routerboard: L11UG, L23UGSR, RB450Gx4&lt;br /&gt;
&lt;br /&gt;
MikroTik &amp;lt;b&amp;gt;x86-64&amp;lt;/b&amp;gt; devices:&lt;br /&gt;
 Others: Cloud Hosted Router&lt;br /&gt;
&lt;br /&gt;
Containers are not available on MIPSBE, MMIPS, SMIPS, TILE or PPC architectures.&lt;br /&gt;
&lt;br /&gt;
== General concept ==&lt;br /&gt;
Mikrotik routers running ROS 7 (7.15.3 being current at the time of writing) based on arm and arm64 processor, as well as CHR setups are able to run software containers (similar to docker).&lt;br /&gt;
This opens the possibility to host a virtualized gateway in such a container, allowing a simple and efficient setup on modern systems.&lt;br /&gt;
&lt;br /&gt;
The gateway will be hosted in a VRF on the router, providing gateway services using policy routing.&lt;br /&gt;
&lt;br /&gt;
As a concept, the container has a single VETH interface which will decapsulate all incoming IPIP traffic from the tunnels, and encapsulate all outgoing traffic towards them.&lt;br /&gt;
The container itself is isolated behind a bridge and offers some basic filtering function (e.g. restrict access from internet hosts).&lt;br /&gt;
It will receive the RIPv2 broadcasts from the AMPR gateway and provide the obtained routes as RIP broadcasts to the router itself inside the mentioned VRF.&lt;br /&gt;
&lt;br /&gt;
The container does not save anything to disk (which would be a bad idea on the router&#039;s flash memory), so the AMPR routes are lost on container or router restart, and you need to wait the now classical 5 minutes. But this should be no problem on a 24/7 on router.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
The router does not forward multicast frames at all, nor does it send out broadcasts.&lt;br /&gt;
Incoming broadcasts are accepted and forwarded to the local VRF.&lt;br /&gt;
&lt;br /&gt;
The container itself needs to sit behind a bridge due to a kernel bug in the version used by Mikrotik which sends out &amp;quot;Port unreachable&amp;quot; ICMP messages on incoming IPIP traffic if it is handled in user space (The same thing causing the need of a kernel filter in amprd. This is fixed in newer kernel releases but it will take a while for it to make its way into ROS). Bridge filtering is used to mask those messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;New router 5 minutes set up&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a prerequisite, get your internet connection working based on the default mikrotik configuration.&lt;br /&gt;
Basically set up your ISP uplink either via DHCP or by setting up a PPPoE or similar connection.&lt;br /&gt;
Leave the default firewall rule as they are.&lt;br /&gt;
Alternatively, you can start with a completely empty router, with only a active internet connection.&lt;br /&gt;
&lt;br /&gt;
First you need to enable container support according to the info provided by Mikrotik.&lt;br /&gt;
In a console type in:&lt;br /&gt;
 /system/device-mode/update container=yes&lt;br /&gt;
The system will want you to do a hard reset at this point to confirm the request. This means you need physical access to the device.&lt;br /&gt;
&lt;br /&gt;
Next, you need to install the container package for your firmware version. Download the &amp;quot;extra&amp;quot; firmware package from MikroTik for your FW version and extract the &amp;quot;container-7.x.y-&amp;lt;arch&amp;gt;.npk&amp;quot; file. Upload it to your router and restart. This will install the package onto the router. After restart, you will have a new option available: /containers&lt;br /&gt;
&lt;br /&gt;
== Installation script ==&lt;br /&gt;
Next we need to install the container according to your hardware.&lt;br /&gt;
Please chose the correct setup script variant:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM32&amp;lt;/span&amp;gt; -  ampr_arm32.rsc&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM64&amp;lt;/span&amp;gt; -  ampr_arm64.rsc&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;CHRx86&amp;lt;/span&amp;gt; - ampr_x86_64.rsc&lt;br /&gt;
&lt;br /&gt;
Unfortunately, containers are not available on Mips, Tile or PowerPC devices.&lt;br /&gt;
&lt;br /&gt;
The example assumes you use an arm32 device. Please use the proper one...&lt;br /&gt;
&lt;br /&gt;
Open a route console window.&lt;br /&gt;
&lt;br /&gt;
1. Check is the remote server is available:&lt;br /&gt;
 [admin@MikroTik] &amp;gt; ping yo2loj.ro&lt;br /&gt;
  SEQ HOST                                     SIZE TTL TIME       STATUS                    &lt;br /&gt;
    0 89.33.44.100                               56  58 10ms574us &lt;br /&gt;
    1 89.33.44.100                               56  58 9ms141us  &lt;br /&gt;
    2 89.33.44.100                               56  58 9ms5us    &lt;br /&gt;
    sent=3 received=3 packet-loss=0% min-rtt=9ms5us avg-rtt=9ms573us max-rtt=10ms574us&lt;br /&gt;
&lt;br /&gt;
2. Download the configuration script&lt;br /&gt;
 [admin@MikroTik] &amp;gt; /tool fetch url=&amp;quot;http://yo2loj.ro/containers/&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;ampr_arm32.rsc&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
      status: finished&lt;br /&gt;
  downloaded: 5KiB&lt;br /&gt;
       total: 5KiB&lt;br /&gt;
    duration: 1s&lt;br /&gt;
&lt;br /&gt;
3. Run the configuration script&lt;br /&gt;
 [admin@MikroTik] &amp;gt; import &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;ampr_arm32.rsc&amp;lt;/span&amp;gt;&lt;br /&gt;
 AMPR: Creating bridge and VRF&lt;br /&gt;
 AMPR: Setting up RIP&lt;br /&gt;
 AMPR: Creating container envs&lt;br /&gt;
 AMPR: Setting up firewall rules&lt;br /&gt;
 AMPR: Creating container update script&lt;br /&gt;
 AMPR: Creating routing rules&lt;br /&gt;
 AMPR: Installing container&lt;br /&gt;
 No container is installed&lt;br /&gt;
      status: finished&lt;br /&gt;
  downloaded: 366KiB&lt;br /&gt;
       total: 366KiB&lt;br /&gt;
    duration: 1s&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;AMPR: Script finished successful&lt;br /&gt;
 AMPR: Now update your container envs and start the container&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your container is now installed.&lt;br /&gt;
You need to configure its environment variables according to the description given below.&lt;br /&gt;
&lt;br /&gt;
After configuration is complete, go to &amp;quot;containers&amp;quot; and star it up.&lt;br /&gt;
It should show &amp;quot;running&amp;quot; and you should see it&#039;s messages in the log window.&lt;br /&gt;
&lt;br /&gt;
After at most 5 minutes, you should get the tunnel routes in your vrf, and your gateway should be fully up and running.&lt;br /&gt;
&lt;br /&gt;
If logging/debugging is not needed anymore, please disable it by clicking on the container and unchecking te logging box.&lt;br /&gt;
&lt;br /&gt;
== Container configuration parameters ==&lt;br /&gt;
You need to adapt the pre-existing container environment variables to your particular gateway before starting it again.&lt;br /&gt;
The following ENV parameters are preset in Container-&amp;gt; Envs:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;AMPR_SUBNETS&amp;lt;/span&amp;gt; - holds your local subnets as defined in the Portal, as comma separated list of &amp;lt;SUBNET&amp;gt;/&amp;lt;MASK&amp;gt; tupples, e.g. &amp;quot;44.128.0.0/24,44.128.1.0/24&amp;quot;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ALL_VIA_AMPRGW&amp;lt;/span&amp;gt; - enables forwarding of all AMPR destinations via AMPRGW, values are &amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;FORWARD_INTERNET&amp;lt;/span&amp;gt; - enables forward of traffic from/to internet hosts, values are &amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;IGNORED_SUBNETS&amp;lt;/span&amp;gt; - allows you to ignore specific subnets provided by RIP, by &amp;lt;SUBNET&amp;gt;/&amp;lt;MASK&amp;gt; or gateway address e.g. &amp;quot;44.128.0.0/16&amp;quot;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;CALL_HOME&amp;lt;/span&amp;gt; - the classic string, &amp;lt;CALLSIGN&amp;gt;@&amp;lt;LOCATOR&amp;gt; to show up on the map. You will get a yellow dot. e.g. &amp;quot;YO2LOJ@KN05OR&amp;quot;. Leaving the field empty disables call home.&lt;br /&gt;
&lt;br /&gt;
Please note that the provided default will allow you to play around, but will not provide a working set up.&lt;br /&gt;
&lt;br /&gt;
Next, you need to set up a local AMPR LAN on your router router, or, if you have only a single IP address assigned, add it to one of your router&#039;s interfaces with a /32 netmask&lt;br /&gt;
Anyway, you need to add a src-nat rule to the router&#039;s IP address to get your traffic flowing (let&#039;s assume its 44.128.0.1).&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;The address shall be set on an interface OUTSIDE OF THE VRF&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For a single address:&lt;br /&gt;
 /ip address add address=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt; interface=bridge&lt;br /&gt;
or even on the loopback interface:&lt;br /&gt;
For a single address:&lt;br /&gt;
 /ip address add address=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt; interface=lo&lt;br /&gt;
&lt;br /&gt;
For a subnet:&lt;br /&gt;
 /ip address add address=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1/24&amp;lt;/span&amp;gt; interface=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&amp;lt;interface name&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And your src-nat NAT rules:&lt;br /&gt;
 /ip firewall nat add action=src-nat chain=srcnat out-interface=bridge-ampr-gw to-addresses=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;&lt;br /&gt;
 /ip firewall nat add action=src-nat chain=srcnat out-interface=vrf-ampr to-addresses=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course you need to set up additional firewall rules and stuff, but if you do not enable internet forwarding, you should be pretty safe being exposed only to AMPR partners.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;Please note that for your firewall rules the incoming interface from the tunnels is &amp;quot;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;vrf_ampr&amp;lt;/span&amp;gt;&amp;quot; and the outgoing interface is &amp;quot;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;bridge-ampr-gw&amp;lt;/span&amp;gt;&amp;quot; for forwarded and &amp;quot;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;vrf-ampr&amp;lt;/span&amp;gt;&amp;quot; for local outgoing data.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional optional configuration ==&lt;br /&gt;
&lt;br /&gt;
You may notice that on an external traceroute your router&#039;s IP address will show up as 172.17.0.1.&lt;br /&gt;
To fix this small glitch, you need to modify your existing &amp;quot;rip-ampr-in&amp;quot; RIP input filter rule to provide the correct preferred source address.&lt;br /&gt;
&lt;br /&gt;
Modify the existing rule from&lt;br /&gt;
 accept;&lt;br /&gt;
&lt;br /&gt;
to set your router&#039;s local AMPR IP as its preferred source&lt;br /&gt;
 set pref-src &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;;&lt;br /&gt;
 accept;&lt;br /&gt;
&lt;br /&gt;
Also, if you want to access the AMPR network from a LAN not using AMPR addresses, you need to set up a forwarding rule and a SRC-NAT one:&lt;br /&gt;
&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;from LAN&amp;quot; in-interface=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&amp;lt;YourLANInterface&amp;gt;&amp;lt;/span&amp;gt; dst-address-list=ampr_addr&lt;br /&gt;
and&lt;br /&gt;
 /ip firewall nat&lt;br /&gt;
 add action=src-nat chain=srcnat comment=&amp;quot;NAT to AMPR&amp;quot; dst-address-list=Ampr out-interface=bridge-ampr-gw \&lt;br /&gt;
    src-address-list=!ampr_addr to-addresses=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Configuration on an existing working router - 6 steps&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 1 - Bridge, VETH, VRF and interface setup&lt;br /&gt;
 2 - RIP setup&lt;br /&gt;
 3 - Firewall rules, Filter, NAT and Mangle&lt;br /&gt;
 4 - Container environment setup&lt;br /&gt;
 5 - Container installation (architecture dependent)&lt;br /&gt;
 6 - Container configuration and final touches&lt;br /&gt;
&lt;br /&gt;
== Preliminary: prepare the router to accept containers ==&lt;br /&gt;
First, you need to install container support on your router.&lt;br /&gt;
In a console issue:&lt;br /&gt;
 /system/device-mode/update container=yes&lt;br /&gt;
The system will want you to do a hard reset at this point to confirm the request.&lt;br /&gt;
This means you need physical access to the device.&lt;br /&gt;
&lt;br /&gt;
Next, you need to install the container package for your firmware version.&lt;br /&gt;
Download the &amp;quot;extra&amp;quot; firmware package from MikroTik for your FW version and extract the &amp;quot;container-7.x.y-&amp;lt;arch&amp;gt;.npk&amp;quot; file.&lt;br /&gt;
Upload it to your router and restart. This will install the package onto the router.&lt;br /&gt;
After restart, you will have a new option available: /containers&lt;br /&gt;
&lt;br /&gt;
== Step 1: Bridge, VETH, VRF and interface setup ==&lt;br /&gt;
&lt;br /&gt;
First create a bridge which will be used for your containr. Let&#039;s call it &#039;bridge-ampr-gw&#039;:&lt;br /&gt;
 /interface bridge add comment=&amp;quot;AMPR container&amp;quot; name=bridge-ampr-gw&lt;br /&gt;
Assign a network to it. The typical docker IP will be ok:&lt;br /&gt;
 /ip address add address=172.17.0.1/24 interface=bridge-ampr-gw&lt;br /&gt;
Create a virtual ethernet interface for the container itself (call it veth-ampr):&lt;br /&gt;
 /interface veth add name=veth-ampr address=172.17.0.2/24 comment=&amp;quot;AMPR container interface&amp;quot; \&lt;br /&gt;
    gateway=172.17.0.1&lt;br /&gt;
Add the VETH port to the bridge we created above:&lt;br /&gt;
 /interface bridge port add bridge=bridge-ampr-gw interface=veth-ampr&lt;br /&gt;
Because of a kernel anomaly preventing proper userspace IPIP handling, we need to filter icmp messages on the bridge from the container itself:&lt;br /&gt;
 /interface bridge filter add action=drop chain=input in-interface=veth-ampr ip-protocol=icmp \&lt;br /&gt;
    mac-protocol=ip src-address=172.17.0.2/32&lt;br /&gt;
Now we create a vrf called &amp;quot;vrf-ampr&amp;quot; and add the bridge to it:&lt;br /&gt;
 /ip vrf add interfaces=bridge-ampr-gw name=vrf-ampr&lt;br /&gt;
&lt;br /&gt;
All the above steps are available here as a rsc file: http://yo2loj.ro/containers/1_ampr_bridge_vrf.rsc&lt;br /&gt;
&lt;br /&gt;
== Step 2: RIP setup ==&lt;br /&gt;
&lt;br /&gt;
First, create a simple accept routing filter to be used by RIP:&lt;br /&gt;
 /routing filter rule add chain=rip-ampr-in disabled=no rule=&amp;quot;accept;&amp;quot;&lt;br /&gt;
Next, create a RIP instance for your VRF using the above filter and the defined VRF:&lt;br /&gt;
 /routing rip instance add afi=ipv4 in-filter-chain=rip-ampr-in name=rip-ampr vrf=vrf-ampr&lt;br /&gt;
And now add a passive (receive only) interface to our instance:&lt;br /&gt;
 /routing rip interface-template add instance=rip-ampr interfaces=bridge-ampr-gw mode=passive&lt;br /&gt;
&lt;br /&gt;
All the above steps are available here as a rsc file: http://yo2loj.ro/containers/2_rip.rsc&lt;br /&gt;
&lt;br /&gt;
== Step 3: Firewall rules, filter, NAT and mangle ==&lt;br /&gt;
&lt;br /&gt;
Now we need to forward out IPIP tunnels to the container, and extract our data from the VRF.&lt;br /&gt;
For our convenience we will set up an address list to handle AMPR space as one entity&lt;br /&gt;
(if you already have such a list on the router, you can use it)&lt;br /&gt;
 /ip firewall address-list&lt;br /&gt;
 add address=44.0.0.0/9 list=ampr_addr&lt;br /&gt;
 add address=44.128.0.0/10 list=ampr_addr&lt;br /&gt;
Also, we can use an interface list called WAN for the internet access interfaces (like the one in the default config).&lt;br /&gt;
If you prefer individual interfaces, you can of course use them in your rules.&lt;br /&gt;
&lt;br /&gt;
Filters are needed to allow data input and forward to/from the router.&lt;br /&gt;
Accept RIP from the VRF:&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=input comment=&amp;quot;RIP via VRF&amp;quot; dst-port=520 in-interface=vrf-ampr protocol=udp&lt;br /&gt;
Accept input from the AMPR address space to the router (important for ping and traceroute):&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=input comment=&amp;quot;AMPR via Tunnels&amp;quot; dst-address-list=ampr_addr in-interface=vrf-ampr \&lt;br /&gt;
    src-address-list=ampr_addr&lt;br /&gt;
And we need to accept some forwarding for the IPIP tunnels, from VRF to our AMPR space and between AMPR hosts:&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;IPIP Tunnels from ISP&amp;quot; in-interface-list=Internet protocol=ipencap&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;IPIP Tunnels from VRF&amp;quot; in-interface=vrf-ampr protocol=ipencap&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;VRF to AMPR&amp;quot; dst-address-list=ampr_addr in-interface=vrf-ampr&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;AMPR to AMPR&amp;quot; dst-address-list=ampr_addr src-address-list=ampr_addr&lt;br /&gt;
&lt;br /&gt;
Next, we need to forward incoming IPIP traffic to our container (note that WAN interface list, use your interface if you like):&lt;br /&gt;
 /ip firewall nat&lt;br /&gt;
 add action=dst-nat chain=dstnat comment=&amp;quot;NAT ENCAP&amp;quot; in-interface-list=WAN protocol=ipencap \&lt;br /&gt;
    to-addresses=172.17.0.2&lt;br /&gt;
&lt;br /&gt;
Now to be able to traverse int and from the VRF, we need some mangle rules.&lt;br /&gt;
&lt;br /&gt;
Incoming IPIP traffic will be marked with the vrf routing mark:&lt;br /&gt;
 /ip firewall mangle&lt;br /&gt;
 add action=mark-routing chain=prerouting comment=&amp;quot;AMPR IPIP incoming to VRF&amp;quot; in-interface-list=Internet \&lt;br /&gt;
    new-routing-mark=vrf-ampr passthrough=no protocol=ipencap&lt;br /&gt;
Outgoing IPIP traffic will be marked for the main routing table (or the one you need to reach your ISP)&lt;br /&gt;
 /ip firewall mangle&lt;br /&gt;
 add action=mark-routing chain=prerouting comment=&amp;quot;AMPR IPIP outgoing via ISP&amp;quot; in-interface=vrf-ampr \&lt;br /&gt;
    new-routing-mark=main passthrough=no protocol=ipencap&lt;br /&gt;
Traffic to our local router IPs will be directed via our bridge&lt;br /&gt;
 /ip firewall mangle&lt;br /&gt;
 add action=route chain=prerouting comment=&amp;quot;AMPR VRF route local&amp;quot; dst-address-type=local in-interface=vrf-ampr \&lt;br /&gt;
    passthrough=no route-dst=172.17.0.1&lt;br /&gt;
And finally, the incoming AMPR traffic will go to the main routing table&lt;br /&gt;
 /ip firewall mangle&lt;br /&gt;
 add action=mark-routing chain=prerouting comment=&amp;quot;AMPR VRF forward&amp;quot; in-interface=vrf-ampr new-routing-mark=main\&lt;br /&gt;
    passthrough=no&lt;br /&gt;
&lt;br /&gt;
All the above steps are available here as a rsc file: http://yo2loj.ro/containers/3_firewall.rsc&lt;br /&gt;
&lt;br /&gt;
== Step 4 - Container environment setup ==&lt;br /&gt;
This step prepares the environment variables for the container.&lt;br /&gt;
&lt;br /&gt;
/container envs&lt;br /&gt;
 add comment=&amp;quot;My subnets, as defined in the Portal&amp;quot; key=AMPR_SUBNETS name=ampr-cfg value=\&lt;br /&gt;
    44.128.0.0/24,44.128.1.0/24&lt;br /&gt;
 add comment=&amp;quot;Default gateway is AMPRGW instead of Internet&amp;quot; key=ALL_VIA_AMPRGW name=ampr-cfg value=0&lt;br /&gt;
 add comment=&amp;quot;Forward internet traffic&amp;quot; key=FORWARD_INTERNET name=ampr-cfg value=0&lt;br /&gt;
 add comment=&amp;quot;Call home callsign and locator&amp;quot; key=CALL_HOME name=ampr-cfg value=test@AA00aa&lt;br /&gt;
 add comment=&amp;quot;Ignored subnets in RIP&amp;quot; key=IGNORED_SUBNETS name=ampr-cfg value=44.128.0.0/16&lt;br /&gt;
&lt;br /&gt;
Just paste them into the console or import the rsc script as it is. You will edit those later.&lt;br /&gt;
&lt;br /&gt;
The rsc file is here: http://yo2loj.ro/containers/4_container_env.rsc&lt;br /&gt;
&lt;br /&gt;
== Step 5 - Container installation ==&lt;br /&gt;
Now you need to download the container which fits your architecture.&lt;br /&gt;
The following rsc files will install a script which, when run will import and install the container.&lt;br /&gt;
The same scripts will update and replace the container if run again.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM32&amp;lt;/span&amp;gt; -  http://yo2loj.ro/containers/5_container_arm32.rsc&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM64&amp;lt;/span&amp;gt; -  http://yo2loj.ro/containers/5_container_arm64.rsc&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;CHRx86&amp;lt;/span&amp;gt; - http://yo2loj.ro/containers/5_container_x86_64.rsc&lt;br /&gt;
&lt;br /&gt;
Of course, instead of the script, you can download the appropriate tar container files yourself:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM32&amp;lt;/span&amp;gt; -  http://yo2loj.ro/containers/ampr-arm32.tar&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM64&amp;lt;/span&amp;gt; -  http://yo2loj.ro/containers/ampr-arm64.tar&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;CHRx86&amp;lt;/span&amp;gt; - http://yo2loj.ro/containers/ampr-x86-64.tar&lt;br /&gt;
and install them manually. Please set them to use the env variables &amp;quot;ampr-cfg&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Or, you can compile and pack the container yourself from source. At the time of writing, the current version is 1.2.0:&lt;br /&gt;
 http://yo2loj.ro/containers/ampr-container-1.2.0-release.tgz&lt;br /&gt;
&lt;br /&gt;
== Step 6 - Container configuration and final touches ==&lt;br /&gt;
&lt;br /&gt;
You need to edit your env variables &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;according to the description given in the new router setup&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Start your container and wait 5 min. You should see AMPR routes showing up in the VRF&#039;s routing table&lt;br /&gt;
(Some 840 of them if ALL_VIA_AMPRGW is not enabled, otherwise you will get only 2 routes, 44.0.0.0/9 and 44.128.0.0/10).&lt;br /&gt;
&lt;br /&gt;
You may notice that on an external traceroute your router&#039;s IP address will show up as 172.17.0.1.&lt;br /&gt;
To fix this small glitch, you need to modify your existing &amp;quot;rip-ampr-in&amp;quot; RIP input filter rule to provide the correct preferred source address.&lt;br /&gt;
&lt;br /&gt;
Modify the existing rule from&lt;br /&gt;
 accept;&lt;br /&gt;
&lt;br /&gt;
to set your router&#039;s local AMPR IP as its preferred source&lt;br /&gt;
 set pref-src &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;;&lt;br /&gt;
 accept;&lt;br /&gt;
&lt;br /&gt;
Now, activate the use of the whole system.&lt;br /&gt;
Set up a routing rule set to force all outgoing AMPR traffic to do a lookup in the VRF routing table:&lt;br /&gt;
 /routing rule&lt;br /&gt;
 add action=lookup disabled=yes dst-address=44.0.0.0/9 table=vrf-ampr&lt;br /&gt;
 add action=lookup disabled=yes dst-address=44.128.0.0/10 table=vrf-ampr&lt;br /&gt;
If no route is found in that table, the lookup will continue via the main table towards your default route.&lt;br /&gt;
&lt;br /&gt;
Your local AMPR network and additional routing will go into the main table and the lookup will be done AFTER passing through the VRF&#039;s routing table.&lt;br /&gt;
This means that a matching route in the VRF, including a default 0.0.0.0/0 will take precedence over any route defined in the main table.&lt;br /&gt;
&lt;br /&gt;
Also, if you want to access the AMPR network from a LAN not using AMPR addresses, you need to set up a forwarding rule and a SRC-NAT one:&lt;br /&gt;
&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;from LAN&amp;quot; in-interface=LAN dst-address-list=ampr_addr&lt;br /&gt;
and&lt;br /&gt;
 /ip firewall nat&lt;br /&gt;
 add action=src-nat chain=srcnat comment=&amp;quot;NAT to AMPR&amp;quot; dst-address-list=Ampr out-interface=bridge-ampr-gw \&lt;br /&gt;
    src-address-list=!ampr_addr to-addresses=&amp;lt;your router&#039;s AMPR ip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional info ==&lt;br /&gt;
All available files are here: http://yo2loj.ro/containers/&lt;br /&gt;
&lt;br /&gt;
Rip Rip Hurray! de YO2LOJ&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:How-To Guides]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Gateways]]&lt;br /&gt;
[[Category:Device and platform guides]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Setting_up_a_gateway_in_a_ROS7_Mikrotik_router_container_on_arm32_arm64_and_x86-64&amp;diff=3059</id>
		<title>Setting up a gateway in a ROS7 Mikrotik router container on arm32 arm64 and x86-64</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Setting_up_a_gateway_in_a_ROS7_Mikrotik_router_container_on_arm32_arm64_and_x86-64&amp;diff=3059"/>
		<updated>2026-09-29T19:09:25Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page Setting up a gateway in a ROS7 Mikrotik router container on arm32 arm64 and x86-64 to IPIP Mesh/MikroTik RouterOS 7 Container: Group IPIP Mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IPIP Mesh/MikroTik RouterOS 7 Container]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/MikroTik_RouterOS_7_Container&amp;diff=3058</id>
		<title>IPIP Mesh/MikroTik RouterOS 7 Container</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/MikroTik_RouterOS_7_Container&amp;diff=3058"/>
		<updated>2026-09-29T19:09:25Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page Setting up a gateway in a ROS7 Mikrotik router container on arm32 arm64 and x86-64 to IPIP Mesh/MikroTik RouterOS 7 Container: Group IPIP Mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Setting up a gateway in a ROS7 Mikrotik router running in a container on arm and arm64 models and x86-64 CHR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;&#039;&#039;&#039;This is an experimental software build for the &#039;enthusiasts&#039; out there.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source code is available in git.ampr.org: https://git.ampr.org/yo2loj/ampr-ros7-container/-/tree/main&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Info&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are the steps for setting up a fully functional AMPR gateway on an arm/arm64 MikroTik router&lt;br /&gt;
Tested and found working on CRS2116 and RB3011 for now.&lt;br /&gt;
&lt;br /&gt;
MikroTik &amp;lt;b&amp;gt;ARM64&amp;lt;/b&amp;gt; devices:&lt;br /&gt;
 Routers: CCR2004, CCR2116, CCR2216, RB5009&lt;br /&gt;
 Switches: CRS520&lt;br /&gt;
 Wireless and 5G: Netmetal ax, LHG-LTE6, ATL-LTE18&lt;br /&gt;
 SOHO: hAP-ax2, cAP-ax, hAP-ax3, Chateau-ax&lt;br /&gt;
 Others: AMPERE&lt;br /&gt;
&lt;br /&gt;
MikroTik &amp;lt;b&amp;gt;ARM32&amp;lt;/b&amp;gt; devices:&lt;br /&gt;
 Routers: L009, RB3011, RB4011, RB1100AHx4, &lt;br /&gt;
 Switches: CRS305, CRS309, CRS310, CRS317, CRS320, CRS326, CRS328&lt;br /&gt;
 Wireless and 5G: SXTsq-5ac, NetBox-5ax, LHGXL-5ac&lt;br /&gt;
 SOHO: hAP-ax lite, hap-ac2, cAP-ac, wAP-ac, cAPXL-ac, hAP-ac3, Chateau&lt;br /&gt;
 Routerboard: L11UG, L23UGSR, RB450Gx4&lt;br /&gt;
&lt;br /&gt;
MikroTik &amp;lt;b&amp;gt;x86-64&amp;lt;/b&amp;gt; devices:&lt;br /&gt;
 Others: Cloud Hosted Router&lt;br /&gt;
&lt;br /&gt;
Containers are not available on MIPSBE, MMIPS, SMIPS, TILE or PPC architectures.&lt;br /&gt;
&lt;br /&gt;
== General concept ==&lt;br /&gt;
Mikrotik routers running ROS 7 (7.15.3 being current at the time of writing) based on arm and arm64 processor, as well as CHR setups are able to run software containers (similar to docker).&lt;br /&gt;
This opens the possibility to host a virtualized gateway in such a container, allowing a simple and efficient setup on modern systems.&lt;br /&gt;
&lt;br /&gt;
The gateway will be hosted in a VRF on the router, providing gateway services using policy routing.&lt;br /&gt;
&lt;br /&gt;
As a concept, the container has a single VETH interface which will decapsulate all incoming IPIP traffic from the tunnels, and encapsulate all outgoing traffic towards them.&lt;br /&gt;
The container itself is isolated behind a bridge and offers some basic filtering function (e.g. restrict access from internet hosts).&lt;br /&gt;
It will receive the RIPv2 broadcasts from the AMPR gateway and provide the obtained routes as RIP broadcasts to the router itself inside the mentioned VRF.&lt;br /&gt;
&lt;br /&gt;
The container does not save anything to disk (which would be a bad idea on the router&#039;s flash memory), so the AMPR routes are lost on container or router restart, and you need to wait the now classical 5 minutes. But this should be no problem on a 24/7 on router.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
The router does not forward multicast frames at all, nor does it send out broadcasts.&lt;br /&gt;
Incoming broadcasts are accepted and forwarded to the local VRF.&lt;br /&gt;
&lt;br /&gt;
The container itself needs to sit behind a bridge due to a kernel bug in the version used by Mikrotik which sends out &amp;quot;Port unreachable&amp;quot; ICMP messages on incoming IPIP traffic if it is handled in user space (The same thing causing the need of a kernel filter in amprd. This is fixed in newer kernel releases but it will take a while for it to make its way into ROS). Bridge filtering is used to mask those messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;New router 5 minutes set up&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a prerequisite, get your internet connection working based on the default mikrotik configuration.&lt;br /&gt;
Basically set up your ISP uplink either via DHCP or by setting up a PPPoE or similar connection.&lt;br /&gt;
Leave the default firewall rule as they are.&lt;br /&gt;
Alternatively, you can start with a completely empty router, with only a active internet connection.&lt;br /&gt;
&lt;br /&gt;
First you need to enable container support according to the info provided by Mikrotik.&lt;br /&gt;
In a console type in:&lt;br /&gt;
 /system/device-mode/update container=yes&lt;br /&gt;
The system will want you to do a hard reset at this point to confirm the request. This means you need physical access to the device.&lt;br /&gt;
&lt;br /&gt;
Next, you need to install the container package for your firmware version. Download the &amp;quot;extra&amp;quot; firmware package from MikroTik for your FW version and extract the &amp;quot;container-7.x.y-&amp;lt;arch&amp;gt;.npk&amp;quot; file. Upload it to your router and restart. This will install the package onto the router. After restart, you will have a new option available: /containers&lt;br /&gt;
&lt;br /&gt;
== Installation script ==&lt;br /&gt;
Next we need to install the container according to your hardware.&lt;br /&gt;
Please chose the correct setup script variant:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM32&amp;lt;/span&amp;gt; -  ampr_arm32.rsc&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM64&amp;lt;/span&amp;gt; -  ampr_arm64.rsc&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;CHRx86&amp;lt;/span&amp;gt; - ampr_x86_64.rsc&lt;br /&gt;
&lt;br /&gt;
Unfortunately, containers are not available on Mips, Tile or PowerPC devices.&lt;br /&gt;
&lt;br /&gt;
The example assumes you use an arm32 device. Please use the proper one...&lt;br /&gt;
&lt;br /&gt;
Open a route console window.&lt;br /&gt;
&lt;br /&gt;
1. Check is the remote server is available:&lt;br /&gt;
 [admin@MikroTik] &amp;gt; ping yo2loj.ro&lt;br /&gt;
  SEQ HOST                                     SIZE TTL TIME       STATUS                    &lt;br /&gt;
    0 89.33.44.100                               56  58 10ms574us &lt;br /&gt;
    1 89.33.44.100                               56  58 9ms141us  &lt;br /&gt;
    2 89.33.44.100                               56  58 9ms5us    &lt;br /&gt;
    sent=3 received=3 packet-loss=0% min-rtt=9ms5us avg-rtt=9ms573us max-rtt=10ms574us&lt;br /&gt;
&lt;br /&gt;
2. Download the configuration script&lt;br /&gt;
 [admin@MikroTik] &amp;gt; /tool fetch url=&amp;quot;http://yo2loj.ro/containers/&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;ampr_arm32.rsc&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
      status: finished&lt;br /&gt;
  downloaded: 5KiB&lt;br /&gt;
       total: 5KiB&lt;br /&gt;
    duration: 1s&lt;br /&gt;
&lt;br /&gt;
3. Run the configuration script&lt;br /&gt;
 [admin@MikroTik] &amp;gt; import &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;ampr_arm32.rsc&amp;lt;/span&amp;gt;&lt;br /&gt;
 AMPR: Creating bridge and VRF&lt;br /&gt;
 AMPR: Setting up RIP&lt;br /&gt;
 AMPR: Creating container envs&lt;br /&gt;
 AMPR: Setting up firewall rules&lt;br /&gt;
 AMPR: Creating container update script&lt;br /&gt;
 AMPR: Creating routing rules&lt;br /&gt;
 AMPR: Installing container&lt;br /&gt;
 No container is installed&lt;br /&gt;
      status: finished&lt;br /&gt;
  downloaded: 366KiB&lt;br /&gt;
       total: 366KiB&lt;br /&gt;
    duration: 1s&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;AMPR: Script finished successful&lt;br /&gt;
 AMPR: Now update your container envs and start the container&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your container is now installed.&lt;br /&gt;
You need to configure its environment variables according to the description given below.&lt;br /&gt;
&lt;br /&gt;
After configuration is complete, go to &amp;quot;containers&amp;quot; and star it up.&lt;br /&gt;
It should show &amp;quot;running&amp;quot; and you should see it&#039;s messages in the log window.&lt;br /&gt;
&lt;br /&gt;
After at most 5 minutes, you should get the tunnel routes in your vrf, and your gateway should be fully up and running.&lt;br /&gt;
&lt;br /&gt;
If logging/debugging is not needed anymore, please disable it by clicking on the container and unchecking te logging box.&lt;br /&gt;
&lt;br /&gt;
== Container configuration parameters ==&lt;br /&gt;
You need to adapt the pre-existing container environment variables to your particular gateway before starting it again.&lt;br /&gt;
The following ENV parameters are preset in Container-&amp;gt; Envs:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;AMPR_SUBNETS&amp;lt;/span&amp;gt; - holds your local subnets as defined in the Portal, as comma separated list of &amp;lt;SUBNET&amp;gt;/&amp;lt;MASK&amp;gt; tupples, e.g. &amp;quot;44.128.0.0/24,44.128.1.0/24&amp;quot;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ALL_VIA_AMPRGW&amp;lt;/span&amp;gt; - enables forwarding of all AMPR destinations via AMPRGW, values are &amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;FORWARD_INTERNET&amp;lt;/span&amp;gt; - enables forward of traffic from/to internet hosts, values are &amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;IGNORED_SUBNETS&amp;lt;/span&amp;gt; - allows you to ignore specific subnets provided by RIP, by &amp;lt;SUBNET&amp;gt;/&amp;lt;MASK&amp;gt; or gateway address e.g. &amp;quot;44.128.0.0/16&amp;quot;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;CALL_HOME&amp;lt;/span&amp;gt; - the classic string, &amp;lt;CALLSIGN&amp;gt;@&amp;lt;LOCATOR&amp;gt; to show up on the map. You will get a yellow dot. e.g. &amp;quot;YO2LOJ@KN05OR&amp;quot;. Leaving the field empty disables call home.&lt;br /&gt;
&lt;br /&gt;
Please note that the provided default will allow you to play around, but will not provide a working set up.&lt;br /&gt;
&lt;br /&gt;
Next, you need to set up a local AMPR LAN on your router router, or, if you have only a single IP address assigned, add it to one of your router&#039;s interfaces with a /32 netmask&lt;br /&gt;
Anyway, you need to add a src-nat rule to the router&#039;s IP address to get your traffic flowing (let&#039;s assume its 44.128.0.1).&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;The address shall be set on an interface OUTSIDE OF THE VRF&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For a single address:&lt;br /&gt;
 /ip address add address=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt; interface=bridge&lt;br /&gt;
or even on the loopback interface:&lt;br /&gt;
For a single address:&lt;br /&gt;
 /ip address add address=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt; interface=lo&lt;br /&gt;
&lt;br /&gt;
For a subnet:&lt;br /&gt;
 /ip address add address=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1/24&amp;lt;/span&amp;gt; interface=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&amp;lt;interface name&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And your src-nat NAT rules:&lt;br /&gt;
 /ip firewall nat add action=src-nat chain=srcnat out-interface=bridge-ampr-gw to-addresses=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;&lt;br /&gt;
 /ip firewall nat add action=src-nat chain=srcnat out-interface=vrf-ampr to-addresses=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course you need to set up additional firewall rules and stuff, but if you do not enable internet forwarding, you should be pretty safe being exposed only to AMPR partners.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;Please note that for your firewall rules the incoming interface from the tunnels is &amp;quot;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;vrf_ampr&amp;lt;/span&amp;gt;&amp;quot; and the outgoing interface is &amp;quot;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;bridge-ampr-gw&amp;lt;/span&amp;gt;&amp;quot; for forwarded and &amp;quot;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;vrf-ampr&amp;lt;/span&amp;gt;&amp;quot; for local outgoing data.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional optional configuration ==&lt;br /&gt;
&lt;br /&gt;
You may notice that on an external traceroute your router&#039;s IP address will show up as 172.17.0.1.&lt;br /&gt;
To fix this small glitch, you need to modify your existing &amp;quot;rip-ampr-in&amp;quot; RIP input filter rule to provide the correct preferred source address.&lt;br /&gt;
&lt;br /&gt;
Modify the existing rule from&lt;br /&gt;
 accept;&lt;br /&gt;
&lt;br /&gt;
to set your router&#039;s local AMPR IP as its preferred source&lt;br /&gt;
 set pref-src &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;;&lt;br /&gt;
 accept;&lt;br /&gt;
&lt;br /&gt;
Also, if you want to access the AMPR network from a LAN not using AMPR addresses, you need to set up a forwarding rule and a SRC-NAT one:&lt;br /&gt;
&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;from LAN&amp;quot; in-interface=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&amp;lt;YourLANInterface&amp;gt;&amp;lt;/span&amp;gt; dst-address-list=ampr_addr&lt;br /&gt;
and&lt;br /&gt;
 /ip firewall nat&lt;br /&gt;
 add action=src-nat chain=srcnat comment=&amp;quot;NAT to AMPR&amp;quot; dst-address-list=Ampr out-interface=bridge-ampr-gw \&lt;br /&gt;
    src-address-list=!ampr_addr to-addresses=&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Configuration on an existing working router - 6 steps&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 1 - Bridge, VETH, VRF and interface setup&lt;br /&gt;
 2 - RIP setup&lt;br /&gt;
 3 - Firewall rules, Filter, NAT and Mangle&lt;br /&gt;
 4 - Container environment setup&lt;br /&gt;
 5 - Container installation (architecture dependent)&lt;br /&gt;
 6 - Container configuration and final touches&lt;br /&gt;
&lt;br /&gt;
== Preliminary: prepare the router to accept containers ==&lt;br /&gt;
First, you need to install container support on your router.&lt;br /&gt;
In a console issue:&lt;br /&gt;
 /system/device-mode/update container=yes&lt;br /&gt;
The system will want you to do a hard reset at this point to confirm the request.&lt;br /&gt;
This means you need physical access to the device.&lt;br /&gt;
&lt;br /&gt;
Next, you need to install the container package for your firmware version.&lt;br /&gt;
Download the &amp;quot;extra&amp;quot; firmware package from MikroTik for your FW version and extract the &amp;quot;container-7.x.y-&amp;lt;arch&amp;gt;.npk&amp;quot; file.&lt;br /&gt;
Upload it to your router and restart. This will install the package onto the router.&lt;br /&gt;
After restart, you will have a new option available: /containers&lt;br /&gt;
&lt;br /&gt;
== Step 1: Bridge, VETH, VRF and interface setup ==&lt;br /&gt;
&lt;br /&gt;
First create a bridge which will be used for your containr. Let&#039;s call it &#039;bridge-ampr-gw&#039;:&lt;br /&gt;
 /interface bridge add comment=&amp;quot;AMPR container&amp;quot; name=bridge-ampr-gw&lt;br /&gt;
Assign a network to it. The typical docker IP will be ok:&lt;br /&gt;
 /ip address add address=172.17.0.1/24 interface=bridge-ampr-gw&lt;br /&gt;
Create a virtual ethernet interface for the container itself (call it veth-ampr):&lt;br /&gt;
 /interface veth add name=veth-ampr address=172.17.0.2/24 comment=&amp;quot;AMPR container interface&amp;quot; \&lt;br /&gt;
    gateway=172.17.0.1&lt;br /&gt;
Add the VETH port to the bridge we created above:&lt;br /&gt;
 /interface bridge port add bridge=bridge-ampr-gw interface=veth-ampr&lt;br /&gt;
Because of a kernel anomaly preventing proper userspace IPIP handling, we need to filter icmp messages on the bridge from the container itself:&lt;br /&gt;
 /interface bridge filter add action=drop chain=input in-interface=veth-ampr ip-protocol=icmp \&lt;br /&gt;
    mac-protocol=ip src-address=172.17.0.2/32&lt;br /&gt;
Now we create a vrf called &amp;quot;vrf-ampr&amp;quot; and add the bridge to it:&lt;br /&gt;
 /ip vrf add interfaces=bridge-ampr-gw name=vrf-ampr&lt;br /&gt;
&lt;br /&gt;
All the above steps are available here as a rsc file: http://yo2loj.ro/containers/1_ampr_bridge_vrf.rsc&lt;br /&gt;
&lt;br /&gt;
== Step 2: RIP setup ==&lt;br /&gt;
&lt;br /&gt;
First, create a simple accept routing filter to be used by RIP:&lt;br /&gt;
 /routing filter rule add chain=rip-ampr-in disabled=no rule=&amp;quot;accept;&amp;quot;&lt;br /&gt;
Next, create a RIP instance for your VRF using the above filter and the defined VRF:&lt;br /&gt;
 /routing rip instance add afi=ipv4 in-filter-chain=rip-ampr-in name=rip-ampr vrf=vrf-ampr&lt;br /&gt;
And now add a passive (receive only) interface to our instance:&lt;br /&gt;
 /routing rip interface-template add instance=rip-ampr interfaces=bridge-ampr-gw mode=passive&lt;br /&gt;
&lt;br /&gt;
All the above steps are available here as a rsc file: http://yo2loj.ro/containers/2_rip.rsc&lt;br /&gt;
&lt;br /&gt;
== Step 3: Firewall rules, filter, NAT and mangle ==&lt;br /&gt;
&lt;br /&gt;
Now we need to forward out IPIP tunnels to the container, and extract our data from the VRF.&lt;br /&gt;
For our convenience we will set up an address list to handle AMPR space as one entity&lt;br /&gt;
(if you already have such a list on the router, you can use it)&lt;br /&gt;
 /ip firewall address-list&lt;br /&gt;
 add address=44.0.0.0/9 list=ampr_addr&lt;br /&gt;
 add address=44.128.0.0/10 list=ampr_addr&lt;br /&gt;
Also, we can use an interface list called WAN for the internet access interfaces (like the one in the default config).&lt;br /&gt;
If you prefer individual interfaces, you can of course use them in your rules.&lt;br /&gt;
&lt;br /&gt;
Filters are needed to allow data input and forward to/from the router.&lt;br /&gt;
Accept RIP from the VRF:&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=input comment=&amp;quot;RIP via VRF&amp;quot; dst-port=520 in-interface=vrf-ampr protocol=udp&lt;br /&gt;
Accept input from the AMPR address space to the router (important for ping and traceroute):&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=input comment=&amp;quot;AMPR via Tunnels&amp;quot; dst-address-list=ampr_addr in-interface=vrf-ampr \&lt;br /&gt;
    src-address-list=ampr_addr&lt;br /&gt;
And we need to accept some forwarding for the IPIP tunnels, from VRF to our AMPR space and between AMPR hosts:&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;IPIP Tunnels from ISP&amp;quot; in-interface-list=Internet protocol=ipencap&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;IPIP Tunnels from VRF&amp;quot; in-interface=vrf-ampr protocol=ipencap&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;VRF to AMPR&amp;quot; dst-address-list=ampr_addr in-interface=vrf-ampr&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;AMPR to AMPR&amp;quot; dst-address-list=ampr_addr src-address-list=ampr_addr&lt;br /&gt;
&lt;br /&gt;
Next, we need to forward incoming IPIP traffic to our container (note that WAN interface list, use your interface if you like):&lt;br /&gt;
 /ip firewall nat&lt;br /&gt;
 add action=dst-nat chain=dstnat comment=&amp;quot;NAT ENCAP&amp;quot; in-interface-list=WAN protocol=ipencap \&lt;br /&gt;
    to-addresses=172.17.0.2&lt;br /&gt;
&lt;br /&gt;
Now to be able to traverse int and from the VRF, we need some mangle rules.&lt;br /&gt;
&lt;br /&gt;
Incoming IPIP traffic will be marked with the vrf routing mark:&lt;br /&gt;
 /ip firewall mangle&lt;br /&gt;
 add action=mark-routing chain=prerouting comment=&amp;quot;AMPR IPIP incoming to VRF&amp;quot; in-interface-list=Internet \&lt;br /&gt;
    new-routing-mark=vrf-ampr passthrough=no protocol=ipencap&lt;br /&gt;
Outgoing IPIP traffic will be marked for the main routing table (or the one you need to reach your ISP)&lt;br /&gt;
 /ip firewall mangle&lt;br /&gt;
 add action=mark-routing chain=prerouting comment=&amp;quot;AMPR IPIP outgoing via ISP&amp;quot; in-interface=vrf-ampr \&lt;br /&gt;
    new-routing-mark=main passthrough=no protocol=ipencap&lt;br /&gt;
Traffic to our local router IPs will be directed via our bridge&lt;br /&gt;
 /ip firewall mangle&lt;br /&gt;
 add action=route chain=prerouting comment=&amp;quot;AMPR VRF route local&amp;quot; dst-address-type=local in-interface=vrf-ampr \&lt;br /&gt;
    passthrough=no route-dst=172.17.0.1&lt;br /&gt;
And finally, the incoming AMPR traffic will go to the main routing table&lt;br /&gt;
 /ip firewall mangle&lt;br /&gt;
 add action=mark-routing chain=prerouting comment=&amp;quot;AMPR VRF forward&amp;quot; in-interface=vrf-ampr new-routing-mark=main\&lt;br /&gt;
    passthrough=no&lt;br /&gt;
&lt;br /&gt;
All the above steps are available here as a rsc file: http://yo2loj.ro/containers/3_firewall.rsc&lt;br /&gt;
&lt;br /&gt;
== Step 4 - Container environment setup ==&lt;br /&gt;
This step prepares the environment variables for the container.&lt;br /&gt;
&lt;br /&gt;
/container envs&lt;br /&gt;
 add comment=&amp;quot;My subnets, as defined in the Portal&amp;quot; key=AMPR_SUBNETS name=ampr-cfg value=\&lt;br /&gt;
    44.128.0.0/24,44.128.1.0/24&lt;br /&gt;
 add comment=&amp;quot;Default gateway is AMPRGW instead of Internet&amp;quot; key=ALL_VIA_AMPRGW name=ampr-cfg value=0&lt;br /&gt;
 add comment=&amp;quot;Forward internet traffic&amp;quot; key=FORWARD_INTERNET name=ampr-cfg value=0&lt;br /&gt;
 add comment=&amp;quot;Call home callsign and locator&amp;quot; key=CALL_HOME name=ampr-cfg value=test@AA00aa&lt;br /&gt;
 add comment=&amp;quot;Ignored subnets in RIP&amp;quot; key=IGNORED_SUBNETS name=ampr-cfg value=44.128.0.0/16&lt;br /&gt;
&lt;br /&gt;
Just paste them into the console or import the rsc script as it is. You will edit those later.&lt;br /&gt;
&lt;br /&gt;
The rsc file is here: http://yo2loj.ro/containers/4_container_env.rsc&lt;br /&gt;
&lt;br /&gt;
== Step 5 - Container installation ==&lt;br /&gt;
Now you need to download the container which fits your architecture.&lt;br /&gt;
The following rsc files will install a script which, when run will import and install the container.&lt;br /&gt;
The same scripts will update and replace the container if run again.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM32&amp;lt;/span&amp;gt; -  http://yo2loj.ro/containers/5_container_arm32.rsc&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM64&amp;lt;/span&amp;gt; -  http://yo2loj.ro/containers/5_container_arm64.rsc&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;CHRx86&amp;lt;/span&amp;gt; - http://yo2loj.ro/containers/5_container_x86_64.rsc&lt;br /&gt;
&lt;br /&gt;
Of course, instead of the script, you can download the appropriate tar container files yourself:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM32&amp;lt;/span&amp;gt; -  http://yo2loj.ro/containers/ampr-arm32.tar&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;ARM64&amp;lt;/span&amp;gt; -  http://yo2loj.ro/containers/ampr-arm64.tar&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;CHRx86&amp;lt;/span&amp;gt; - http://yo2loj.ro/containers/ampr-x86-64.tar&lt;br /&gt;
and install them manually. Please set them to use the env variables &amp;quot;ampr-cfg&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Or, you can compile and pack the container yourself from source. At the time of writing, the current version is 1.2.0:&lt;br /&gt;
 http://yo2loj.ro/containers/ampr-container-1.2.0-release.tgz&lt;br /&gt;
&lt;br /&gt;
== Step 6 - Container configuration and final touches ==&lt;br /&gt;
&lt;br /&gt;
You need to edit your env variables &amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;according to the description given in the new router setup&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Start your container and wait 5 min. You should see AMPR routes showing up in the VRF&#039;s routing table&lt;br /&gt;
(Some 840 of them if ALL_VIA_AMPRGW is not enabled, otherwise you will get only 2 routes, 44.0.0.0/9 and 44.128.0.0/10).&lt;br /&gt;
&lt;br /&gt;
You may notice that on an external traceroute your router&#039;s IP address will show up as 172.17.0.1.&lt;br /&gt;
To fix this small glitch, you need to modify your existing &amp;quot;rip-ampr-in&amp;quot; RIP input filter rule to provide the correct preferred source address.&lt;br /&gt;
&lt;br /&gt;
Modify the existing rule from&lt;br /&gt;
 accept;&lt;br /&gt;
&lt;br /&gt;
to set your router&#039;s local AMPR IP as its preferred source&lt;br /&gt;
 set pref-src &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;44.128.0.1&amp;lt;/span&amp;gt;;&lt;br /&gt;
 accept;&lt;br /&gt;
&lt;br /&gt;
Now, activate the use of the whole system.&lt;br /&gt;
Set up a routing rule set to force all outgoing AMPR traffic to do a lookup in the VRF routing table:&lt;br /&gt;
 /routing rule&lt;br /&gt;
 add action=lookup disabled=yes dst-address=44.0.0.0/9 table=vrf-ampr&lt;br /&gt;
 add action=lookup disabled=yes dst-address=44.128.0.0/10 table=vrf-ampr&lt;br /&gt;
If no route is found in that table, the lookup will continue via the main table towards your default route.&lt;br /&gt;
&lt;br /&gt;
Your local AMPR network and additional routing will go into the main table and the lookup will be done AFTER passing through the VRF&#039;s routing table.&lt;br /&gt;
This means that a matching route in the VRF, including a default 0.0.0.0/0 will take precedence over any route defined in the main table.&lt;br /&gt;
&lt;br /&gt;
Also, if you want to access the AMPR network from a LAN not using AMPR addresses, you need to set up a forwarding rule and a SRC-NAT one:&lt;br /&gt;
&lt;br /&gt;
 /ip firewall filter&lt;br /&gt;
 add action=accept chain=forward comment=&amp;quot;from LAN&amp;quot; in-interface=LAN dst-address-list=ampr_addr&lt;br /&gt;
and&lt;br /&gt;
 /ip firewall nat&lt;br /&gt;
 add action=src-nat chain=srcnat comment=&amp;quot;NAT to AMPR&amp;quot; dst-address-list=Ampr out-interface=bridge-ampr-gw \&lt;br /&gt;
    src-address-list=!ampr_addr to-addresses=&amp;lt;your router&#039;s AMPR ip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional info ==&lt;br /&gt;
All available files are here: http://yo2loj.ro/containers/&lt;br /&gt;
&lt;br /&gt;
Rip Rip Hurray! de YO2LOJ&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:How-To Guides]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Gateways]]&lt;br /&gt;
[[Category:Device and platform guides]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Linux&amp;diff=3057</id>
		<title>IPIP Mesh/Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=IPIP_Mesh/Linux&amp;diff=3057"/>
		<updated>2026-09-29T19:09:23Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: Organize IPIP Mesh documentation and navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Section nav|hub=IPIP Mesh|title=IPIP Mesh|category=IPIP Mesh}}&lt;br /&gt;
&lt;br /&gt;
There are a few different ways to run an AMPRnet gateway on a Linux system. Each has some benefits, so you&#039;ll need to pick your favourite.&lt;br /&gt;
&lt;br /&gt;
Before configuring the Linux gateway you&#039;ll need to:&lt;br /&gt;
# Using the [[Portal]], request an IP address (or addresses) by clicking on &amp;quot;Request address space&amp;quot; then selecting &amp;quot;IPIP Tunnel Mesh&amp;quot; as the Use Case.&lt;br /&gt;
# You will need to have a public static IP address for your gateway. &lt;br /&gt;
# Using the [[Portal]], create an entry for your gateway.&lt;br /&gt;
# Get some of your AMPRNet IP addresses registered in the [[ampr.org]] DNS.&lt;br /&gt;
&lt;br /&gt;
= Flavours of Linux gateways =&lt;br /&gt;
&lt;br /&gt;
== Native Linux kernel AX.25 and IPIP tunneling ==&lt;br /&gt;
&lt;br /&gt;
Linux contains the necessary building blocks for a gateway without much added software. Radio interfaces are configured much like any other network interfaces such as Ethernet, they&#039;re just given amateur radio callsigns in addition to an IP address (callsign will act the role of the Ethernet MAC address). If you&#039;re familiar with Linux configuration but have not heard of NOS, or if you wish to go with minimal amount of moving parts, this would probably be your choice.&lt;br /&gt;
&lt;br /&gt;
Setting up a native Linux gateway consists of two main steps:&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Setting up tunnel routing to the rest of the AMPRnet===&lt;br /&gt;
Configuring your Linux system to learn about other AMPRNet [[IPIP Mesh/Gateways| gateways]] can be done two ways:&lt;br /&gt;
&lt;br /&gt;
# Automatically learn about other gateways via modified RIPv2 advertisements. Two popular programs to do this are:&lt;br /&gt;
## Using [[IPIP Mesh/Ampr-ripd|ampr-ripd]], a C based routing daemon&lt;br /&gt;
## Using [[IPIP Mesh/Rip44d|rip44d]], a PERL based routing daemon&lt;br /&gt;
# Downloading an [[IPIP Mesh/Encap.txt|encap.txt]] file and setting up routes using a [[IPIP Mesh/Munge script|munge script]] is the traditional method&lt;br /&gt;
&lt;br /&gt;
==== Example gateway configuration instructions ====&lt;br /&gt;
* [[IPIP Mesh/Ubuntu Linux Gateway Example|Ubuntu Linux Gateway Example]]&lt;br /&gt;
* [http://www.qsl.net/k/kb9mwr//wapr/tcpip/ampr-ripd.html Two Interface Debian Linux Amprnet Gateway Example]&lt;br /&gt;
* [https://k7ilo.blogspot.com/p/server-setup.html K7ILO&#039;S Two Interface Debian 11 AmprNet Gateway Build in layman&#039;s terms]&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Setting up radio interfaces in Linux===&lt;br /&gt;
&lt;br /&gt;
* [http://www.tldp.org/HOWTO/AX25-HOWTO/ Linux AX.25 set-up]&lt;br /&gt;
* 802.11 WiFi on amateur frequencies (2.4 or 5 GHz) is a new popular way to set up fast links.&lt;br /&gt;
&lt;br /&gt;
== Running JNOS (or other NOS) on top of Linux ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re already familiar with running NOS on top of DOS or Linux, or wish to keep the AMPRnet IP packet routing away from the host Linux system, it might make sense to run JNOS as an application on top of Linux.&lt;br /&gt;
&lt;br /&gt;
The downside is that it&#039;ll have a slightly higher overhead (consumed memory and CPU), and you&#039;ll have two IP routers running on top of each other instead of just one, which is seen as slightly complicated by some.&lt;br /&gt;
&lt;br /&gt;
The upside is that you&#039;ll also get the JNOS BBS-type features, and some other traditional services without installing additional software on top.&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[IPIP Mesh/Ubuntu Linux Gateway Example|Ubuntu Linux Gateway Example]]&lt;br /&gt;
* [[IPIP Mesh/Startampr|startampr]]&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:How-To Guides]]&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Gateways]]&lt;br /&gt;
[[Category:Device and platform guides]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Setting_up_a_gateway_on_Linux&amp;diff=3056</id>
		<title>Setting up a gateway on Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Setting_up_a_gateway_on_Linux&amp;diff=3056"/>
		<updated>2026-09-29T19:09:22Z</updated>

		<summary type="html">&lt;p&gt;KI5QKX: KI5QKX moved page Setting up a gateway on Linux to IPIP Mesh/Linux: Group IPIP Mesh documentation under IPIP Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[IPIP Mesh/Linux]]&lt;/div&gt;</summary>
		<author><name>KI5QKX</name></author>
	</entry>
</feed>