<?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=KN6DWI</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=KN6DWI"/>
	<link rel="alternate" type="text/html" href="https://wiki.ampr.org/wiki/Special:Contributions/KN6DWI"/>
	<updated>2026-07-14T22:55:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2741</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2741"/>
		<updated>2026-07-14T16:33:16Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added troubleshooting section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_generate_keypair.png|A screenshot of the PFsense WireGuard tunnel configuration page. The button to generate a new WireGuard keypair is highlighted with a red box.]]&lt;br /&gt;
&lt;br /&gt;
Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Fill in interface ==&lt;br /&gt;
Copy the interface addresses from your config file into the Interface Addresses section in your PFsense WireGuard tunnel configuration. Adding the IPv6 address is optional but recommended. If you&#039;re doing so, click the &amp;lt;code&amp;gt;Add Address&amp;lt;/code&amp;gt; button to add another IP address field. For all entries, use the drop-down menu to configure the subnet. For the IPv4 address it should be /32, and for the IPv6 address it should be /64. There are some places on 44Net Connect that are labeled in a confusing way, and could be interpreted as your tunnel being allocated a /24 for IPv4, but a tunnel will always receive a /32 for IPv4.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_interface.png|A side-by-side view of the PFsense WireGuard interface configuration page, and a wg-quick config file opened in the Kate text editor. A red arrow indicates where one should copy the IP addresses from the config file into the configuration page.]]&lt;br /&gt;
&lt;br /&gt;
PFsense won&#039;t let you add peers until you save the tunnel. Click &amp;lt;code&amp;gt;Save Tunnel&amp;lt;/code&amp;gt; to save, and we&#039;ll add peers in the next step.&lt;br /&gt;
&lt;br /&gt;
== Add Peer ==&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Add Peer&amp;lt;/code&amp;gt; button. Uncheck the &amp;lt;code&amp;gt;Dynamic Endpoint&amp;lt;/code&amp;gt; box, as this will allow us to fill in a static IP and port for the endpoint. Fill in the endpoint IP and port from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of the WireGuard config file. Also copy in MTU, Keep Alive interval, the peer&#039;s public key, and if applicable, the pre-shared key. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_peer_configuration.png|A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red numbered dots indicate where to copy the information from the config file to the configuration page.]]&lt;br /&gt;
&lt;br /&gt;
Fill in the Allowed IPs section at the bottom using the values from the config file, which by default is &amp;lt;code&amp;gt;0.0.0.0/0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;::/0&amp;lt;/code&amp;gt;. This configuration allows all addresses, and will let you pass all traffic through the tunnel. If you want only traffic to and from your 44Net IP to go through the tunnel, change your AllowedIPs to &amp;lt;code&amp;gt;44.0.0.0/9&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;44.128.0.0/10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_peer_allowed_ips.png|A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red arrows show where to copy allowed IPs from the configuration file to the PFsense configuration page.]]&lt;br /&gt;
&lt;br /&gt;
== Enable WireGuard == &lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Settings&amp;lt;/code&amp;gt; and check the &amp;lt;code&amp;gt;Enable WireGuard&amp;lt;/code&amp;gt; box, then save your changes. If prompted with a banner at the top to save your WireGuard settings before applying, do so. Check the status of your tunnel by going to &amp;lt;code&amp;gt;Status &amp;gt; WireGuard&amp;lt;/code&amp;gt;, clicking the arrow next to your tunnel to expand its section, and verifying that it&#039;s performed a handshake with the endpoint.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_wireguard_status.png|A screenshot of the PFSense WireGuard status page. There is a green handshake icon, and the latest handshake was 1 minute 54 seconds ago.]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tunnel is up but peer is not === &lt;br /&gt;
If your tunnel is up (indicated by the green up arrow) but your peer connection is not, there may be something wrong with your peer configuration. Double check it against the config file. Ensure your allowed IPs are set correctly, and that the subnet size is correctly selected in the drop-down menu. &lt;br /&gt;
&lt;br /&gt;
=== Tunnel will not connect === &lt;br /&gt;
Ensure that the dynamic endpoint checkbox is unchecked. Verify that the tunnel&#039;s endpoint IP, endpoint port, keep alive time, and public key are correct. If you are using a pre-shared key, make sure that it matches the one set in 44Net connect.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2740</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2740"/>
		<updated>2026-07-14T04:53:04Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: /* Enable WireGuard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_generate_keypair.png|A screenshot of the PFsense WireGuard tunnel configuration page. The button to generate a new WireGuard keypair is highlighted with a red box.]]&lt;br /&gt;
&lt;br /&gt;
Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Fill in interface ==&lt;br /&gt;
Copy the interface addresses from your config file into the Interface Addresses section in your PFsense WireGuard tunnel configuration. Adding the IPv6 address is optional but recommended. If you&#039;re doing so, click the &amp;lt;code&amp;gt;Add Address&amp;lt;/code&amp;gt; button to add another IP address field. For all entries, use the drop-down menu to configure the subnet. For the IPv4 address it should be /32, and for the IPv6 address it should be /64. There are some places on 44Net Connect that are labeled in a confusing way, and could be interpreted as your tunnel being allocated a /24 for IPv4, but a tunnel will always receive a /32 for IPv4.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_interface.png|A side-by-side view of the PFsense WireGuard interface configuration page, and a wg-quick config file opened in the Kate text editor. A red arrow indicates where one should copy the IP addresses from the config file into the configuration page.]]&lt;br /&gt;
&lt;br /&gt;
PFsense won&#039;t let you add peers until you save the tunnel. Click &amp;lt;code&amp;gt;Save Tunnel&amp;lt;/code&amp;gt; to save, and we&#039;ll add peers in the next step.&lt;br /&gt;
&lt;br /&gt;
== Add Peer ==&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Add Peer&amp;lt;/code&amp;gt; button. Uncheck the &amp;lt;code&amp;gt;Dynamic Endpoint&amp;lt;/code&amp;gt; box, as this will allow us to fill in a static IP and port for the endpoint. Fill in the endpoint IP and port from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of the WireGuard config file. Also copy in MTU, Keep Alive interval, the peer&#039;s public key, and if applicable, the pre-shared key. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_peer_configuration.png|A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red numbered dots indicate where to copy the information from the config file to the configuration page.]]&lt;br /&gt;
&lt;br /&gt;
Fill in the Allowed IPs section at the bottom using the values from the config file, which by default is &amp;lt;code&amp;gt;0.0.0.0/0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;::/0&amp;lt;/code&amp;gt;. This configuration allows all addresses, and will let you pass all traffic through the tunnel. If you want only traffic to and from your 44Net IP to go through the tunnel, change your AllowedIPs to &amp;lt;code&amp;gt;44.0.0.0/9&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;44.128.0.0/10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_peer_allowed_ips.png|A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red arrows show where to copy allowed IPs from the configuration file to the PFsense configuration page.]]&lt;br /&gt;
&lt;br /&gt;
== Enable WireGuard == &lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Settings&amp;lt;/code&amp;gt; and check the &amp;lt;code&amp;gt;Enable WireGuard&amp;lt;/code&amp;gt; box, then save your changes. If prompted with a banner at the top to save your WireGuard settings before applying, do so. Check the status of your tunnel by going to &amp;lt;code&amp;gt;Status &amp;gt; WireGuard&amp;lt;/code&amp;gt;, clicking the arrow next to your tunnel to expand its section, and verifying that it&#039;s performed a handshake with the endpoint.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_wireguard_status.png|A screenshot of the PFSense WireGuard status page. There is a green handshake icon, and the latest handshake was 1 minute 54 seconds ago.]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Pfsense_wireguard_status.png&amp;diff=2739</id>
		<title>File:Pfsense wireguard status.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Pfsense_wireguard_status.png&amp;diff=2739"/>
		<updated>2026-07-14T00:10:45Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A screenshot of the PFSense WireGuard status page. There is a green handshake icon, and the latest handshake was 1 minute 54 seconds ago.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of the PFSense WireGuard status page. There is a green handshake icon, and the latest handshake was 1 minute 54 seconds ago.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2738</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2738"/>
		<updated>2026-07-14T00:07:24Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added picture for filling in allowed IPs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_generate_keypair.png|A screenshot of the PFsense WireGuard tunnel configuration page. The button to generate a new WireGuard keypair is highlighted with a red box.]]&lt;br /&gt;
&lt;br /&gt;
Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Fill in interface ==&lt;br /&gt;
Copy the interface addresses from your config file into the Interface Addresses section in your PFsense WireGuard tunnel configuration. Adding the IPv6 address is optional but recommended. If you&#039;re doing so, click the &amp;lt;code&amp;gt;Add Address&amp;lt;/code&amp;gt; button to add another IP address field. For all entries, use the drop-down menu to configure the subnet. For the IPv4 address it should be /32, and for the IPv6 address it should be /64. There are some places on 44Net Connect that are labeled in a confusing way, and could be interpreted as your tunnel being allocated a /24 for IPv4, but a tunnel will always receive a /32 for IPv4.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_interface.png|A side-by-side view of the PFsense WireGuard interface configuration page, and a wg-quick config file opened in the Kate text editor. A red arrow indicates where one should copy the IP addresses from the config file into the configuration page.]]&lt;br /&gt;
&lt;br /&gt;
PFsense won&#039;t let you add peers until you save the tunnel. Click &amp;lt;code&amp;gt;Save Tunnel&amp;lt;/code&amp;gt; to save, and we&#039;ll add peers in the next step.&lt;br /&gt;
&lt;br /&gt;
== Add Peer ==&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Add Peer&amp;lt;/code&amp;gt; button. Uncheck the &amp;lt;code&amp;gt;Dynamic Endpoint&amp;lt;/code&amp;gt; box, as this will allow us to fill in a static IP and port for the endpoint. Fill in the endpoint IP and port from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of the WireGuard config file. Also copy in MTU, Keep Alive interval, the peer&#039;s public key, and if applicable, the pre-shared key. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_peer_configuration.png|A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red numbered dots indicate where to copy the information from the config file to the configuration page.]]&lt;br /&gt;
&lt;br /&gt;
Fill in the Allowed IPs section at the bottom using the values from the config file, which by default is &amp;lt;code&amp;gt;0.0.0.0/0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;::/0&amp;lt;/code&amp;gt;. This configuration allows all addresses, and will let you pass all traffic through the tunnel. If you want only traffic to and from your 44Net IP to go through the tunnel, change your AllowedIPs to &amp;lt;code&amp;gt;44.0.0.0/9&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;44.128.0.0/10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_peer_allowed_ips.png|A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red arrows show where to copy allowed IPs from the configuration file to the PFsense configuration page.]]&lt;br /&gt;
&lt;br /&gt;
== Enable WireGuard == &lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Settings&amp;lt;/code&amp;gt; and check the &amp;lt;code&amp;gt;Enable WireGuard&amp;lt;/code&amp;gt; box, then save your changes. If prompted with a banner at the top to save your WireGuard settings before applying, do so. Check the status of your tunnel by going to &amp;lt;code&amp;gt;Status &amp;gt; WireGuard&amp;lt;/code&amp;gt;, clicking the arrow next to your tunnel to expand its section, and verifying that it&#039;s performed a handshake with the endpoint.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Pfsense_peer_allowed_ips.png&amp;diff=2737</id>
		<title>File:Pfsense peer allowed ips.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Pfsense_peer_allowed_ips.png&amp;diff=2737"/>
		<updated>2026-07-14T00:07:14Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red arrows show where to copy allowed IPs from the configuration file to the PFsense configuration page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red arrows show where to copy allowed IPs from the configuration file to the PFsense configuration page.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Pfsense_peer_configuration.png&amp;diff=2736</id>
		<title>File:Pfsense peer configuration.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Pfsense_peer_configuration.png&amp;diff=2736"/>
		<updated>2026-07-14T00:02:39Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: KN6DWI uploaded a new version of File:Pfsense peer configuration.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red numbered dots indicate where to copy the information from the config file to the configuration page.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Pfsense_peer_configuration.png&amp;diff=2735</id>
		<title>File:Pfsense peer configuration.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Pfsense_peer_configuration.png&amp;diff=2735"/>
		<updated>2026-07-13T18:52:07Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red numbered dots indicate where to copy the information from the config file to the configuration page.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2734</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2734"/>
		<updated>2026-07-13T18:51:56Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added image for peer configuration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_generate_keypair.png|A screenshot of the PFsense WireGuard tunnel configuration page. The button to generate a new WireGuard keypair is highlighted with a red box.]]&lt;br /&gt;
&lt;br /&gt;
Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Fill in interface ==&lt;br /&gt;
Copy the interface addresses from your config file into the Interface Addresses section in your PFsense WireGuard tunnel configuration. Adding the IPv6 address is optional but recommended. If you&#039;re doing so, click the &amp;lt;code&amp;gt;Add Address&amp;lt;/code&amp;gt; button to add another IP address field. For all entries, use the drop-down menu to configure the subnet. For the IPv4 address it should be /32, and for the IPv6 address it should be /64. There are some places on 44Net Connect that are labeled in a confusing way, and could be interpreted as your tunnel being allocated a /24 for IPv4, but a tunnel will always receive a /32 for IPv4.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_interface.png|A side-by-side view of the PFsense WireGuard interface configuration page, and a wg-quick config file opened in the Kate text editor. A red arrow indicates where one should copy the IP addresses from the config file into the configuration page.]]&lt;br /&gt;
&lt;br /&gt;
PFsense won&#039;t let you add peers until you save the tunnel. Click &amp;lt;code&amp;gt;Save Tunnel&amp;lt;/code&amp;gt; to save, and we&#039;ll add peers in the next step.&lt;br /&gt;
&lt;br /&gt;
== Add Peer ==&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Add Peer&amp;lt;/code&amp;gt; button. Uncheck the &amp;lt;code&amp;gt;Dynamic Endpoint&amp;lt;/code&amp;gt; box, as this will allow us to fill in a static IP and port for the endpoint. Fill in the endpoint IP and port from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of the WireGuard config file. Also copy in MTU, Keep Alive interval, the peer&#039;s public key, and if applicable, the pre-shared key. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_peer_configuration.png|A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red numbered dots indicate where to copy the information from the config file to the configuration page.]]&lt;br /&gt;
&lt;br /&gt;
Fill in the Allowed IPs section at the bottom using the values from the config file, which by default is &amp;lt;code&amp;gt;0.0.0.0/0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;::/0&amp;lt;/code&amp;gt;. This configuration allows all addresses, and will let you pass all traffic through the tunnel. If you want only traffic to and from your 44Net IP to go through the tunnel, change your AllowedIPs to &amp;lt;code&amp;gt;44.0.0.0/9&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;44.128.0.0/10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Enable WireGuard == &lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Settings&amp;lt;/code&amp;gt; and check the &amp;lt;code&amp;gt;Enable WireGuard&amp;lt;/code&amp;gt; box, then save your changes. If prompted with a banner at the top to save your WireGuard settings before applying, do so. Check the status of your tunnel by going to &amp;lt;code&amp;gt;Status &amp;gt; WireGuard&amp;lt;/code&amp;gt;, clicking the arrow next to your tunnel to expand its section, and verifying that it&#039;s performed a handshake with the endpoint.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Pfsense_peer_configuration.png&amp;diff=2733</id>
		<title>File:Pfsense peer configuration.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Pfsense_peer_configuration.png&amp;diff=2733"/>
		<updated>2026-07-13T18:48:48Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red numbered dots indicate where to copy the information from the config file to the configuration page.t&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A side-by-side view of the PFsense WireGuard peer configuration page and a wg-quick configuration file. Red numbered dots indicate where to copy the information from the config file to the configuration page.t&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2732</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2732"/>
		<updated>2026-07-13T18:10:31Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added picture for filling in the tunnel IPs and made a minor grammatical edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_generate_keypair.png|A screenshot of the PFsense WireGuard tunnel configuration page. The button to generate a new WireGuard keypair is highlighted with a red box.]]&lt;br /&gt;
&lt;br /&gt;
Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Fill in interface ==&lt;br /&gt;
Copy the interface addresses from your config file into the Interface Addresses section in your PFsense WireGuard tunnel configuration. Adding the IPv6 address is optional but recommended. If you&#039;re doing so, click the &amp;lt;code&amp;gt;Add Address&amp;lt;/code&amp;gt; button to add another IP address field. For all entries, use the drop-down menu to configure the subnet. For the IPv4 address it should be /32, and for the IPv6 address it should be /64. There are some places on 44Net Connect that are labeled in a confusing way, and could be interpreted as your tunnel being allocated a /24 for IPv4, but a tunnel will always receive a /32 for IPv4.&lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_interface.png|A side-by-side view of the PFsense WireGuard interface configuration page, and a wg-quick config file opened in the Kate text editor. A red arrow indicates where one should copy the IP addresses from the config file into the configuration page.]]&lt;br /&gt;
&lt;br /&gt;
PFsense won&#039;t let you add peers until you save the tunnel. Click &amp;lt;code&amp;gt;Save Tunnel&amp;lt;/code&amp;gt; to save, and we&#039;ll add peers in the next step.&lt;br /&gt;
&lt;br /&gt;
== Add Peer ==&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Add Peer&amp;lt;/code&amp;gt; button. Uncheck the &amp;lt;code&amp;gt;Dynamic Endpoint&amp;lt;/code&amp;gt; box, as this will allow us to fill in a static IP and port for the endpoint. Fill in the endpoint IP and port from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of the WireGuard config file. Also copy in MTU, Keep Alive interval, the peer&#039;s public key, and if applicable, the pre-shared key. &lt;br /&gt;
&lt;br /&gt;
Fill in the Allowed IPs section at the bottom using the values from the config file, which by default is &amp;lt;code&amp;gt;0.0.0.0/0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;::/0&amp;lt;/code&amp;gt;. This configuration allows all addresses, and will let you pass all traffic through the tunnel. If you want only traffic to and from your 44Net IP to go through the tunnel, change your AllowedIPs to &amp;lt;code&amp;gt;44.0.0.0/9&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;44.128.0.0/10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Enable WireGuard == &lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Settings&amp;lt;/code&amp;gt; and check the &amp;lt;code&amp;gt;Enable WireGuard&amp;lt;/code&amp;gt; box, then save your changes. If prompted with a banner at the top to save your WireGuard settings before applying, do so. Check the status of your tunnel by going to &amp;lt;code&amp;gt;Status &amp;gt; WireGuard&amp;lt;/code&amp;gt;, clicking the arrow next to your tunnel to expand its section, and verifying that it&#039;s performed a handshake with the endpoint.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Pfsense_interface.png&amp;diff=2731</id>
		<title>File:Pfsense interface.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Pfsense_interface.png&amp;diff=2731"/>
		<updated>2026-07-13T18:08:57Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A side-by-side view of the PFsense WireGuard interface configuration page, and a wg-quick config file opened in the Kate text editor. A red arrow indicates where one should copy the IP addresses from the config file into the configuration page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A side-by-side view of the PFsense WireGuard interface configuration page, and a wg-quick config file opened in the Kate text editor. A red arrow indicates where one should copy the IP addresses from the config file into the configuration page.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2730</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2730"/>
		<updated>2026-07-13T17:53:50Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added picture of keypair generation button&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. &lt;br /&gt;
&lt;br /&gt;
[[File:pfsense_generate_keypair.png|A screenshot of the PFsense WireGuard tunnel configuration page. The button to generate a new WireGuard keypair is highlighted with a red box.]]&lt;br /&gt;
&lt;br /&gt;
Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Fill in interface ==&lt;br /&gt;
Copy the interface addresses from your config file into the Interface Addresses section in your PFsense WireGuard tunnel configuration. Adding the IPv6 address is optional but recommended. If you&#039;re doing so, click the &amp;lt;code&amp;gt;Add Address&amp;lt;/code&amp;gt; button to add another IP address field. For all entries, use the drop-down menu to configure the subnet. For the IPv4 address it should be /32, and for the IPv6 address it should be /64. There are some places on 44Net Connect that are labeled in a confusing way, and could be interpreted as your tunnel being allocated a /24 for IPv4, but a tunnel will always receive a /32 for IPv4.&lt;br /&gt;
&lt;br /&gt;
Click &amp;lt;code&amp;gt;Save Tunnel&amp;lt;/code&amp;gt;. PFsense won&#039;t let you add peers until you save the tunnel. In the next step, we&#039;ll edit the tunnel to add a peer. &lt;br /&gt;
&lt;br /&gt;
== Add Peer ==&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Add Peer&amp;lt;/code&amp;gt; button. Uncheck the &amp;lt;code&amp;gt;Dynamic Endpoint&amp;lt;/code&amp;gt; box, as this will allow us to fill in a static IP and port for the endpoint. Fill in the endpoint IP and port from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of the WireGuard config file. Also copy in MTU, Keep Alive interval, the peer&#039;s public key, and if applicable, the pre-shared key. &lt;br /&gt;
&lt;br /&gt;
Fill in the Allowed IPs section at the bottom using the values from the config file, which by default is &amp;lt;code&amp;gt;0.0.0.0/0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;::/0&amp;lt;/code&amp;gt;. This configuration allows all addresses, and will let you pass all traffic through the tunnel. If you want only traffic to and from your 44Net IP to go through the tunnel, change your AllowedIPs to &amp;lt;code&amp;gt;44.0.0.0/9&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;44.128.0.0/10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Enable WireGuard == &lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Settings&amp;lt;/code&amp;gt; and check the &amp;lt;code&amp;gt;Enable WireGuard&amp;lt;/code&amp;gt; box, then save your changes. If prompted with a banner at the top to save your WireGuard settings before applying, do so. Check the status of your tunnel by going to &amp;lt;code&amp;gt;Status &amp;gt; WireGuard&amp;lt;/code&amp;gt;, clicking the arrow next to your tunnel to expand its section, and verifying that it&#039;s performed a handshake with the endpoint.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Pfsense_generate_keypair.png&amp;diff=2729</id>
		<title>File:Pfsense generate keypair.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Pfsense_generate_keypair.png&amp;diff=2729"/>
		<updated>2026-07-13T17:52:50Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A screenshot of the PFsense WireGuard tunnel configuration page. The button to generate a new WireGuard keypair is highlighted with a red box.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of the PFsense WireGuard tunnel configuration page. The button to generate a new WireGuard keypair is highlighted with a red box.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2728</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2728"/>
		<updated>2026-07-09T19:21:32Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Wrote Enable WireGuard section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Fill in interface ==&lt;br /&gt;
Copy the interface addresses from your config file into the Interface Addresses section in your PFsense WireGuard tunnel configuration. Adding the IPv6 address is optional but recommended. If you&#039;re doing so, click the &amp;lt;code&amp;gt;Add Address&amp;lt;/code&amp;gt; button to add another IP address field. For all entries, use the drop-down menu to configure the subnet. For the IPv4 address it should be /32, and for the IPv6 address it should be /64. There are some places on 44Net Connect that are labeled in a confusing way, and could be interpreted as your tunnel being allocated a /24 for IPv4, but a tunnel will always receive a /32 for IPv4.&lt;br /&gt;
&lt;br /&gt;
Click &amp;lt;code&amp;gt;Save Tunnel&amp;lt;/code&amp;gt;. PFsense won&#039;t let you add peers until you save the tunnel. In the next step, we&#039;ll edit the tunnel to add a peer. &lt;br /&gt;
&lt;br /&gt;
== Add Peer ==&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Add Peer&amp;lt;/code&amp;gt; button. Uncheck the &amp;lt;code&amp;gt;Dynamic Endpoint&amp;lt;/code&amp;gt; box, as this will allow us to fill in a static IP and port for the endpoint. Fill in the endpoint IP and port from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of the WireGuard config file. Also copy in MTU, Keep Alive interval, the peer&#039;s public key, and if applicable, the pre-shared key. &lt;br /&gt;
&lt;br /&gt;
Fill in the Allowed IPs section at the bottom using the values from the config file, which by default is &amp;lt;code&amp;gt;0.0.0.0/0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;::/0&amp;lt;/code&amp;gt;. This configuration allows all addresses, and will let you pass all traffic through the tunnel. If you want only traffic to and from your 44Net IP to go through the tunnel, change your AllowedIPs to &amp;lt;code&amp;gt;44.0.0.0/9&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;44.128.0.0/10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Enable WireGuard == &lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Settings&amp;lt;/code&amp;gt; and check the &amp;lt;code&amp;gt;Enable WireGuard&amp;lt;/code&amp;gt; box, then save your changes. If prompted with a banner at the top to save your WireGuard settings before applying, do so. Check the status of your tunnel by going to &amp;lt;code&amp;gt;Status &amp;gt; WireGuard&amp;lt;/code&amp;gt;, clicking the arrow next to your tunnel to expand its section, and verifying that it&#039;s performed a handshake with the endpoint.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2727</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2727"/>
		<updated>2026-07-09T19:18:44Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Wrote section on adding peer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Fill in interface ==&lt;br /&gt;
Copy the interface addresses from your config file into the Interface Addresses section in your PFsense WireGuard tunnel configuration. Adding the IPv6 address is optional but recommended. If you&#039;re doing so, click the &amp;lt;code&amp;gt;Add Address&amp;lt;/code&amp;gt; button to add another IP address field. For all entries, use the drop-down menu to configure the subnet. For the IPv4 address it should be /32, and for the IPv6 address it should be /64. There are some places on 44Net Connect that are labeled in a confusing way, and could be interpreted as your tunnel being allocated a /24 for IPv4, but a tunnel will always receive a /32 for IPv4.&lt;br /&gt;
&lt;br /&gt;
Click &amp;lt;code&amp;gt;Save Tunnel&amp;lt;/code&amp;gt;. PFsense won&#039;t let you add peers until you save the tunnel. In the next step, we&#039;ll edit the tunnel to add a peer. &lt;br /&gt;
&lt;br /&gt;
== Add Peer ==&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Add Peer&amp;lt;/code&amp;gt; button. Uncheck the &amp;lt;code&amp;gt;Dynamic Endpoint&amp;lt;/code&amp;gt; box, as this will allow us to fill in a static IP and port for the endpoint. Fill in the endpoint IP and port from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of the WireGuard config file. Also copy in MTU, Keep Alive interval, the peer&#039;s public key, and if applicable, the pre-shared key. &lt;br /&gt;
&lt;br /&gt;
Fill in the Allowed IPs section at the bottom using the values from the config file, which by default is &amp;lt;code&amp;gt;0.0.0.0/0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;::/0&amp;lt;/code&amp;gt;. This configuration allows all addresses, and will let you pass all traffic through the tunnel. If you want only traffic to and from your 44Net IP to go through the tunnel, change your AllowedIPs to &amp;lt;code&amp;gt;44.0.0.0/9&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;44.128.0.0/10&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2726</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2726"/>
		<updated>2026-07-09T18:51:48Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Wrote section on filling in interface&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Fill in interface ==&lt;br /&gt;
Copy the interface addresses from your config file into the Interface Addresses section in your PFsense WireGuard tunnel configuration. Adding the IPv6 address is optional but recommended. If you&#039;re doing so, click the &amp;lt;code&amp;gt;Add Address&amp;lt;/code&amp;gt; button to add another IP address field. For all entries, use the drop-down menu to configure the subnet. For the IPv4 address it should be /32, and for the IPv6 address it should be /64. There are some places on 44Net Connect that are labeled in a confusing way, and could be interpreted as your tunnel being allocated a /24 for IPv4, but a tunnel will always receive a /32 for IPv4.&lt;br /&gt;
&lt;br /&gt;
Click &amp;lt;code&amp;gt;Save Tunnel&amp;lt;/code&amp;gt;. PFsense won&#039;t let you add peers until you save the tunnel. In the next step, we&#039;ll edit the tunnel to add a peer. &lt;br /&gt;
&lt;br /&gt;
== Add Peer ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2725</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2725"/>
		<updated>2026-07-09T18:01:23Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Wrote section on generating keypair and creating tunnel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate keypair and create tunnel ==&lt;br /&gt;
After installing WireGuard, go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Tunnels&amp;lt;/code&amp;gt; and click the &amp;lt;code&amp;gt;Add Tunnel&amp;lt;/code&amp;gt; button.&lt;br /&gt;
Click the &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button to generate a new keypair. Then, open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect], request a new tunnel, and select your preferred server. &lt;br /&gt;
In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in PFsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Retain the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
&lt;br /&gt;
== Copy tunnel details into PFsense ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2724</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2724"/>
		<updated>2026-07-09T18:00:07Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Grammatical improvement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_keypair_generation.png|500px|A screenshot of the OPNsense edit instance dialogue, with the gear button next to the public key field circled in red.]]&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
Open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect] and click &amp;lt;code&amp;gt;Request a Tunnel&amp;lt;/code&amp;gt;. Select your preferred server. In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in OPNsense, then click &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt; to save. Save the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
[[File:request_tunnel_44net_connect.png|A screenshot of the 44Net Connect tunnel page header with the Request Tunnel button highlighted in a red box]]&lt;br /&gt;
&lt;br /&gt;
== Copy the tunnel details into OPNsense ==&lt;br /&gt;
=== Fill out instance ===&lt;br /&gt;
Go back to your OPNsense Web UI. Give your instance a name, and fill out the &amp;lt;code&amp;gt;Tunnel address&amp;lt;/code&amp;gt; field with the addresses from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of the config. Check the &amp;lt;code&amp;gt;Disable routes&amp;lt;/code&amp;gt; checkbox, then save your instance. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_instance.png| A screenshot with a side by side view of a WireGuard config file and an OPNsense WireGuard instance configuration page. A red arrow indicates how to copy the tunnel addresses from the config file to the OPNsense configuration page. A red rectangle indicates that the user should check the &amp;quot;Disable Routes&amp;quot; box.]]&lt;br /&gt;
&lt;br /&gt;
=== Fill out peer ===&lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Peers&amp;lt;/code&amp;gt; in your OPNsense Web UI, and click the orange &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button in the bottom right to create a new peer. Give it a name, and paste the &amp;lt;code&amp;gt;PublicKey&amp;lt;/code&amp;gt; value from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file into the peer&#039;s &amp;lt;code&amp;gt;Public key&amp;lt;/code&amp;gt; field. If you configured a pre-shared key when creating your tunnel, enter it in &lt;br /&gt;
the &amp;lt;code&amp;gt;Pre-shared key&amp;lt;/code&amp;gt; field. Also copy in &amp;lt;code&amp;gt;Allowed IPs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint port&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Keepalive interval&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_peer_endpoint.png|A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Two red arrows indicate where to copy the endpoint IP and port from the config file to the OPNsense configuration dialogue.]]&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_peer_keepalive_addresses.png|A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Red arrows indicate where to copy the public key, keepalive interval, and allowed IPs from the config file to the OPNsense configuration dialogue.]]&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;Instances&amp;lt;/code&amp;gt; field, use the drop-down menu to select the instance you created earlier in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Finally, save your peer, go back to the configuration for your instance, and add the peer you just created.&lt;br /&gt;
&lt;br /&gt;
=== Activate Instance ===&lt;br /&gt;
On the instances page, ensure your instance is enabled, check the box to enable WireGuard, then apply your changes. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_enable_instance.png|A screenshot of the OPNsense WireGuard instances page, with the &amp;quot;Enable WireGuard&amp;quot; checkbox and enable instance checkbox highlighted with red rectangles.]]&lt;br /&gt;
&lt;br /&gt;
Go to &amp;lt;code&amp;gt;WireGuard &amp;gt; Status&amp;lt;/code&amp;gt; and ensure that both your instance and your peer display green checkmarks. If they do, you&#039;re good to go! &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_wireguard_status.png|A screenshot of the OPNsense WireGuard status page. Both the interface and the peer show green checkmarks in the status column.]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Peer status displays a question mark === &lt;br /&gt;
Minor misconfiguration of the peer can cause a question mark in the status page and a nonfunctional tunnel. Double check that the peer&#039;s configuration matches the WireGuard config file, and make sure your peer is configured with a /32. There are some places on 44Net Connect that are labeled in a confusing way and could be interpreted as your tunnel being allocated a /24, but a tunnel will always receive a /32.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2723</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2723"/>
		<updated>2026-07-09T17:56:20Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Created Install WireGuard section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Install the WireGuard Package ==&lt;br /&gt;
WireGuard is not installed by default on PFsense, so we need to install it. Go to &amp;lt;code&amp;gt;System &amp;gt; Package Manager &amp;gt; Available Packages&amp;lt;/code&amp;gt; and install WireGuard.&lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in PFsense == &lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
&lt;br /&gt;
== Copy tunnel details into PFsense ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2722</id>
		<title>44Net Connect/Quick Start/PFsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/PFsense&amp;diff=2722"/>
		<updated>2026-07-09T17:17:10Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Created page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running PFsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in PFsense == &lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
&lt;br /&gt;
== Copy tunnel details into PFsense ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2721</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2721"/>
		<updated>2026-07-09T17:16:29Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Grammatical improvement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_keypair_generation.png|500px|A screenshot of the OPNsense edit instance dialogue, with the gear button next to the public key field circled in red.]]&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
Open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect] and click &amp;lt;code&amp;gt;Request a Tunnel&amp;lt;/code&amp;gt;. Select your preferred server. In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in OPNsense, then &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt;. Save the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
[[File:request_tunnel_44net_connect.png|A screenshot of the 44Net Connect tunnel page header with the Request Tunnel button highlighted in a red box]]&lt;br /&gt;
&lt;br /&gt;
== Copy the tunnel details into OPNsense ==&lt;br /&gt;
=== Fill out instance ===&lt;br /&gt;
Go back to your OPNsense Web UI. Give your instance a name, and fill out the &amp;lt;code&amp;gt;Tunnel address&amp;lt;/code&amp;gt; field with the addresses from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of the config. Check the &amp;lt;code&amp;gt;Disable routes&amp;lt;/code&amp;gt; checkbox, then save your instance. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_instance.png| A screenshot with a side by side view of a WireGuard config file and an OPNsense WireGuard instance configuration page. A red arrow indicates how to copy the tunnel addresses from the config file to the OPNsense configuration page. A red rectangle indicates that the user should check the &amp;quot;Disable Routes&amp;quot; box.]]&lt;br /&gt;
&lt;br /&gt;
=== Fill out peer ===&lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Peers&amp;lt;/code&amp;gt; in your OPNsense Web UI, and click the orange &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button in the bottom right to create a new peer. Give it a name, and paste the &amp;lt;code&amp;gt;PublicKey&amp;lt;/code&amp;gt; value from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file into the peer&#039;s &amp;lt;code&amp;gt;Public key&amp;lt;/code&amp;gt; field. If you configured a pre-shared key when creating your tunnel, enter it in &lt;br /&gt;
the &amp;lt;code&amp;gt;Pre-shared key&amp;lt;/code&amp;gt; field. Also copy in &amp;lt;code&amp;gt;Allowed IPs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint port&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Keepalive interval&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_peer_endpoint.png|A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Two red arrows indicate where to copy the endpoint IP and port from the config file to the OPNsense configuration dialogue.]]&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_peer_keepalive_addresses.png|A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Red arrows indicate where to copy the public key, keepalive interval, and allowed IPs from the config file to the OPNsense configuration dialogue.]]&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;Instances&amp;lt;/code&amp;gt; field, use the drop-down menu to select the instance you created earlier in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Finally, save your peer, go back to the configuration for your instance, and add the peer you just created.&lt;br /&gt;
&lt;br /&gt;
=== Activate Instance ===&lt;br /&gt;
On the instances page, ensure your instance is enabled, check the box to enable WireGuard, then apply your changes. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_enable_instance.png|A screenshot of the OPNsense WireGuard instances page, with the &amp;quot;Enable WireGuard&amp;quot; checkbox and enable instance checkbox highlighted with red rectangles.]]&lt;br /&gt;
&lt;br /&gt;
Go to &amp;lt;code&amp;gt;WireGuard &amp;gt; Status&amp;lt;/code&amp;gt; and ensure that both your instance and your peer display green checkmarks. If they do, you&#039;re good to go! &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_wireguard_status.png|A screenshot of the OPNsense WireGuard status page. Both the interface and the peer show green checkmarks in the status column.]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Peer status displays a question mark === &lt;br /&gt;
Minor misconfiguration of the peer can cause a question mark in the status page and a nonfunctional tunnel. Double check that the peer&#039;s configuration matches the WireGuard config file, and make sure your peer is configured with a /32. There are some places on 44Net Connect that are labeled in a confusing way and could be interpreted as your tunnel being allocated a /24, but a tunnel will always receive a /32.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Single_Device_Tunnel&amp;diff=2720</id>
		<title>44Net Connect/Single Device Tunnel</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Single_Device_Tunnel&amp;diff=2720"/>
		<updated>2026-07-09T17:15:23Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added link to PFsense quick start page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
{{DISPLAYTITLE:Single Device Tunnel - 44Net Connect}}&lt;br /&gt;
&lt;br /&gt;
This page discusses the single device tunnel configuration for connecting a device to 44Net via 44Net Connect. &lt;br /&gt;
&lt;br /&gt;
== What is a single device tunnel? ==&lt;br /&gt;
A single device tunnel is a configuration where one device can send and receive traffic from its 44Net address via one of ARDC&#039;s endpoint nodes. This is done using a WireGuard tunnel, with a configuration file issued by [[44Net Connect]]. Each device connected in this manner is issued a single IPv4 address and a single IPv6 address, and it does not depend on a local gateway for connection to 44Net. A host using a single device tunnel may choose whether or not to route non-44Net traffic via the tunnel. Routing only 44Net traffic over the tunnel is a common configuration, and is called a &amp;quot;split tunnel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Single_device_tunnel.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== When should I use a single device tunnel? == &lt;br /&gt;
If you only have a few devices to manage, you are not comfortable with router and firewall configuration, or you&#039;re not sure where to start, a single device tunnel is a good choice. Mobile devices, such as phones and laptops, cannot rely on always being behind an appropriate gateway or router, so they work best with a single device tunnel. &lt;br /&gt;
&lt;br /&gt;
Devices that cannot run WireGuard, such as some embedded devices, do not support a single device tunnel. These should be placed in a [[44Net_Connect/Routed_Subnet|routed subnet]] where the router connects them to 44Net.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
* [[44Net_Connect/Quick_Start/Debian_based_distributions|44Net Connect Quick Start: Debian-based distributions]]&lt;br /&gt;
* [[44Net_Connect/Quick_Start/Raspberry_Pi|44Net Connect Quick Start: Raspberry Pi]]&lt;br /&gt;
* [[44Net_Connect/Quick_Start/Fedora|44Net Connect Quick Start: Fedora]]&lt;br /&gt;
* [[44Net_Connect/Quick_Start/OPNsense|44Net Connect Quick Start: OPNsense]]&lt;br /&gt;
* [[44Net_Connect/Quick_Start/PFsense|44Net Connect Quick Start: PFsense]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Topology]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2719</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2719"/>
		<updated>2026-07-08T17:37:24Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added Activate Instance section and Troubleshooting section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike the other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial. &lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_keypair_generation.png|500px|A screenshot of the OPNsense edit instance dialogue, with the gear button next to the public key field circled in red.]]&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
Open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect] and click &amp;lt;code&amp;gt;Request a Tunnel&amp;lt;/code&amp;gt;. Select your preferred server. In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in OPNsense, then &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt;. Save the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
[[File:request_tunnel_44net_connect.png|A screenshot of the 44Net Connect tunnel page header with the Request Tunnel button highlighted in a red box]]&lt;br /&gt;
&lt;br /&gt;
== Copy the tunnel details into OPNsense ==&lt;br /&gt;
=== Fill out instance ===&lt;br /&gt;
Go back to your OPNsense Web UI. Give your instance a name, and fill out the &amp;lt;code&amp;gt;Tunnel address&amp;lt;/code&amp;gt; field with the addresses from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of the config. Check the &amp;lt;code&amp;gt;Disable routes&amp;lt;/code&amp;gt; checkbox, then save your instance. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_instance.png| A screenshot with a side by side view of a WireGuard config file and an OPNsense WireGuard instance configuration page. A red arrow indicates how to copy the tunnel addresses from the config file to the OPNsense configuration page. A red rectangle indicates that the user should check the &amp;quot;Disable Routes&amp;quot; box.]]&lt;br /&gt;
&lt;br /&gt;
=== Fill out peer ===&lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Peers&amp;lt;/code&amp;gt; in your OPNsense Web UI, and click the orange &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button in the bottom right to create a new peer. Give it a name, and paste the &amp;lt;code&amp;gt;PublicKey&amp;lt;/code&amp;gt; value from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file into the peer&#039;s &amp;lt;code&amp;gt;Public key&amp;lt;/code&amp;gt; field. If you configured a pre-shared key when creating your tunnel, enter it in &lt;br /&gt;
the &amp;lt;code&amp;gt;Pre-shared key&amp;lt;/code&amp;gt; field. Also copy in &amp;lt;code&amp;gt;Allowed IPs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint port&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Keepalive interval&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_peer_endpoint.png|A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Two red arrows indicate where to copy the endpoint IP and port from the config file to the OPNsense configuration dialogue.]]&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_peer_keepalive_addresses.png|A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Red arrows indicate where to copy the public key, keepalive interval, and allowed IPs from the config file to the OPNsense configuration dialogue.]]&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;Instances&amp;lt;/code&amp;gt; field, use the drop-down menu to select the instance you created earlier in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Finally, save your peer, go back to the configuration for your instance, and add the peer you just created.&lt;br /&gt;
&lt;br /&gt;
=== Activate Instance ===&lt;br /&gt;
On the instances page, ensure your instance is enabled, check the box to enable WireGuard, then apply your changes. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_enable_instance.png|A screenshot of the OPNsense WireGuard instances page, with the &amp;quot;Enable WireGuard&amp;quot; checkbox and enable instance checkbox highlighted with red rectangles.]]&lt;br /&gt;
&lt;br /&gt;
Go to &amp;lt;code&amp;gt;WireGuard &amp;gt; Status&amp;lt;/code&amp;gt; and ensure that both your instance and your peer display green checkmarks. If they do, you&#039;re good to go! &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_wireguard_status.png|A screenshot of the OPNsense WireGuard status page. Both the interface and the peer show green checkmarks in the status column.]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Peer status displays a question mark === &lt;br /&gt;
Minor misconfiguration of the peer can cause a question mark in the status page and a nonfunctional tunnel. Double check that the peer&#039;s configuration matches the WireGuard config file, and make sure your peer is configured with a /32. There are some places on 44Net Connect that are labeled in a confusing way and could be interpreted as your tunnel being allocated a /24, but a tunnel will always receive a /32.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Opnsense_wireguard_status.png&amp;diff=2718</id>
		<title>File:Opnsense wireguard status.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Opnsense_wireguard_status.png&amp;diff=2718"/>
		<updated>2026-07-08T17:33:32Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A screenshot of the OPNsense WireGuard status page. Both the interface and the peer show green checkmarks in the status column.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of the OPNsense WireGuard status page. Both the interface and the peer show green checkmarks in the status column.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Opnsense_enable_instance.png&amp;diff=2717</id>
		<title>File:Opnsense enable instance.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Opnsense_enable_instance.png&amp;diff=2717"/>
		<updated>2026-07-08T17:26:20Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A screenshot of the OPNsense WireGuard instances page, with the &amp;quot;Enable WireGuard&amp;quot; checkbox and enable instance checkbox highlighted with red rectangles.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of the OPNsense WireGuard instances page, with the &amp;quot;Enable WireGuard&amp;quot; checkbox and enable instance checkbox highlighted with red rectangles.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Raspberry_Pi&amp;diff=2716</id>
		<title>44Net Connect/Routed Subnet/Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Raspberry_Pi&amp;diff=2716"/>
		<updated>2026-07-07T23:31:37Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added recommendations about priority and using ip rule over ip route&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
{{DISPLAYTITLE:44Net Connect Routed Subnet: Raspberry Pi}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Raspberry_Pi | single-device tunnel to your Raspberry Pi]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field. &lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to use a Raspberry Pi as the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter or an ethernet hat. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included&lt;br /&gt;
in Raspberry Pi OS and many other Linux distributions. These configuration steps can be completed using the NetworkManager GUI, but many people operate their Raspberry Pis in &amp;quot;headless&amp;quot; mode (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Pi over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: Setting Up A Wireless Access Point ==&lt;br /&gt;
&lt;br /&gt;
If you have wireless only clients or wish not to purchase additional hardware, the Raspberry Pi&#039;s WiFi interface can be configured as an access point. &lt;br /&gt;
&lt;br /&gt;
After your subnet is approved, you must attach it to your tunnel. Go to your Tunnels tab on 44Net Connect, and click Edit on the tunnel for your routing device. Go to the &amp;quot;Route additional Networks Through This Tunnel&amp;quot; section, and check the box for the subnet you want to use for this tunnel. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Set your wireless regulatory domain === &lt;br /&gt;
Different countries have different rules about which frequencies and bandwidths devices are allowed to use for WiFi.&lt;br /&gt;
Setting the regulatory domain ensures that your Pi will use the right ones, making it work best with nearby devices&lt;br /&gt;
and ensuring regulatory compliance. &lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi OS imager asks you to set the wireless regulatory domain during setup, but does not require it.&lt;br /&gt;
If you didn&#039;t set the regulatory domain in the imager configuration, set it now by running &lt;br /&gt;
&amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; and going to &amp;lt;code&amp;gt;Localisation Options &amp;gt; WLAN Country&amp;lt;/code&amp;gt;. Select your country, confirm, and exit. If you&#039;re not sure whether you set the&lt;br /&gt;
wireless regulatory domain, run the command &amp;lt;code&amp;gt;sudo iw reg get&amp;lt;/code&amp;gt;. Look at the country&lt;br /&gt;
set under &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;. If it says &amp;lt;code&amp;gt;unset&amp;lt;/code&amp;gt;, you have not set the regulatory domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure WiFi settings for your nmcli connection ===&lt;br /&gt;
Set the access point security and password. First, we set the &amp;lt;code&amp;gt;wifi-sec.key-mgmt&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;wpa-psk&amp;lt;/code&amp;gt; to disable the older insecure WEP encryption method. At this point, you will also need to set a password. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.key-mgmt wpa-psk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.psk &amp;lt;password&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For security, leave only WPA2 enabled. By default, the older WPA protocol is enabled for compatibility, but it only supports the less secure TKIP encryption algorithm. Disable it by setting &amp;lt;code&amp;gt;wifi-sec.proto&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;rsn&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.proto rsn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even after disabling the older WPA protocol, WPA2 supports TKIP for compatibility. As an additional security measure, enable only the CCMP encryption algorithm, disabling TKIP. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.pairwise ccmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, set the connection to access point mode and configure it to use your subnet assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; 802-11-wireless.mode ap 802-11-wireless.band &amp;lt;band&amp;gt; ipv4.method manual ipv4.addr &amp;lt;subnet in CIDR notation&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;802-11-wireless.band&amp;lt;/code&amp;gt; setting, choose either &amp;lt;code&amp;gt;bg&amp;lt;/code&amp;gt; for 2.4 GHz or &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; for 5 GHz.&lt;br /&gt;
&lt;br /&gt;
Now we need to disable the current &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; connection and enable our new one. Current connections can be viewed by running &amp;lt;code&amp;gt;nmcli connection&amp;lt;/code&amp;gt;. If your Pi is currently connected to a WiFi network, you&#039;ll see something like &amp;lt;code&amp;gt;netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;. Disable that connection by running the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli conn down netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, enable your new connection by running &amp;lt;code&amp;gt;sudo nmcli conn up &amp;lt;name of connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up DHCP ==&lt;br /&gt;
[https://www.isc.org/kea/ Kea] is the recommended DHCP server for setting up a routed subnet. &amp;lt;code&amp;gt;dhcpd&amp;lt;/code&amp;gt; is deprecated as of 2022. &lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install kea&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After installing, configure its settings by editing &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. This file uses an extended JSON syntax that supports shell style comments using &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, C style single line comments with &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;, and C style multi-line comments with &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Configure Interface ===&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt;, add the interface you want your DHCP server to operate on to the &amp;lt;code&amp;gt;interfaces&amp;lt;/code&amp;gt; list. For example, in a setup using 2 ethernet interfaces, you might have &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; connected to your LAN and &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; connected to your client devices. In this case, you would use &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;. If you&#039;re using the built-in wireless card to broadcast an access point, use &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [ &amp;quot;eth1&amp;quot; ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure DNS === &lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; set at least one DNS server. Cloudflare&#039;s DNS servers are &amp;lt;code&amp;gt;1.1.1.1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.0.0.1&amp;lt;/code&amp;gt;. Google&#039;s DNS servers are &amp;lt;code&amp;gt;8.8.8.8&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;8.8.4.4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domain-name-servers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
    ],&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your subnet === &lt;br /&gt;
&amp;lt;code&amp;gt;subnet4&amp;lt;/code&amp;gt; is a list (denoted with brackets) of structures (denoted with curly brackets) where each structure is one subnet. Inside each subnet structure, set the client IP range(s) in &amp;lt;code&amp;gt;pools&amp;lt;/code&amp;gt;, and define at least one router in the &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; field. Comment out or delete the example DHCP reservations in the &amp;lt;code&amp;gt;reservations&amp;lt;/code&amp;gt; field, since they&#039;re for the wrong subnet. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;subnet4&amp;quot;: [&lt;br /&gt;
    // Put your subnet here in CIDR notation.&lt;br /&gt;
    &amp;quot;subnet&amp;quot;: &amp;quot;44.27.45.128/29&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    // Define the range of client IP addresses here.&lt;br /&gt;
    &amp;quot;pools&amp;quot;: [ { &amp;quot;pool&amp;quot;: &amp;quot;44.27.45.129 - 44.27.45.133&amp;quot; } ],&lt;br /&gt;
&lt;br /&gt;
    // These options are subnet specific. You must configure at least one router.&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;routers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;44.27.45.129&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;reservations&amp;quot;: [&lt;br /&gt;
        // Comment out or delete the examples in this list, since they are for the wrong subnet.&lt;br /&gt;
    ]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Hot Plugging Workaround ===&lt;br /&gt;
At present, &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; does not support hot plugging interfaces. This means that ethernet devices must have at least one client at the time the DHCP server starts, otherwise it will not properly bind to the interface. If you plan on hot plugging ethernet devices on your Pi, this can be worked around by configuring &amp;lt;code&amp;gt;service-sockets-max-retries&amp;lt;/code&amp;gt; to an extremely large number such as 9223372036854775807, the upper limit of a signed 64-bit integer. You may also wish to increase &amp;lt;code&amp;gt;service-sockets-retry-wait-time&amp;lt;/code&amp;gt;, which specifies the retry time in milliseconds, though the default time of 5000 ms is typically fine. These options should go in the &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt; section at the top of your &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; section in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. Here is an example: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    // Add names of your network interfaces to listen on.&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        // See section 8.2.4 for more details. You probably want to add just&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0&amp;quot; or specific IPv4 address on that&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0/192.0.2.1&amp;quot;).&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [&amp;quot;eth1&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
        // max retries is set to int64 max as a workaround for kea not supporting&lt;br /&gt;
        // hot plugging of interfaces.&lt;br /&gt;
        &amp;quot;service-sockets-max-retries&amp;quot;: 9223372036854775807,&lt;br /&gt;
        &amp;quot;service-sockets-retry-wait-time&amp;quot;: 2000&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // The rest of this config is omitted for brevity.&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up Routing ==&lt;br /&gt;
=== Enable IP Forwarding ===&lt;br /&gt;
To allow packets to be forwarded between different network interfaces on your Pi, we must enable IP forwarding in the kernel. Do this by adding the line &amp;lt;code&amp;gt;net.ipv4.ip_forward=1&amp;lt;/code&amp;gt; to one of the drop-in files in &amp;lt;code&amp;gt;/etc/sysctl.d/&amp;lt;/code&amp;gt;. The file &amp;lt;code&amp;gt;98-rpi.conf&amp;lt;/code&amp;gt; exists by default, so&lt;br /&gt;
add the line to that file using your editor of choice. It will require superuser privileges. For example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/sysctl.d/98-rpi.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, reload your system configuration from config files by running &amp;lt;code&amp;gt;sudo sysctl --system&amp;lt;/code&amp;gt;. Verify that IP forwarding has been successfully enabled&lt;br /&gt;
by running &amp;lt;code&amp;gt;sysctl net.ipv4.ip_forward&amp;lt;/code&amp;gt;, which should print &amp;lt;code&amp;gt;net.ipv4.ip_forward = 1&amp;lt;/code&amp;gt;. If the number is 0 instead of 1, IP forwarding has not been properly enabled, and you should check your drop-in file &amp;lt;code&amp;gt;/etc/sysctl.d/98-rpi.conf&amp;lt;/code&amp;gt; for typos.&lt;br /&gt;
&lt;br /&gt;
=== Add the routing rule ===&lt;br /&gt;
Next, we need to add a routing rule to allow the clients on the routed subnet to exit via the WireGuard tunnel. The setup steps for creating the tunnel should have created the routing table &amp;lt;code&amp;gt;51820&amp;lt;/code&amp;gt; where the default route is via the WireGuard interface, whatever you&#039;ve named it. Verify that it exists by running the command &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt;. It should have a single line that says something like &amp;lt;code&amp;gt;default dev wg0 scope link&amp;lt;/code&amp;gt;. In this case, &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; is the example WireGuard interface name. Yours may be different. &lt;br /&gt;
&lt;br /&gt;
Run the command &amp;lt;code&amp;gt;sudo ip rule add from &amp;lt;subnet&amp;gt; table 51820&amp;lt;/code&amp;gt;. Replace &amp;lt;code&amp;gt;&amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt; with your routed subnet in CIDR notation. If you have other rules with desired priority order, set your priority in the above command accordingly. Though it&#039;s possible to do the same thing as this rule using &amp;lt;code&amp;gt;ip route&amp;lt;/code&amp;gt;, it&#039;s much more difficult and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Verify that your routing is working correctly by running the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip route get 1.1.1.1 from &amp;lt;address&amp;gt; iif &amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; should be replaced by an address in your subnet, and &amp;lt;code&amp;gt;&amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt; with the interface your routed subnet clients are connected to. This command will attempt to find the route to 1.1.1.1 (Cloudflare&#039;s DNS server, an arbitrary test IP) from an IP in the routed subnet. The output should look like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;1.1.1.1 from &amp;lt;address&amp;gt; dev wg0 table 51820&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output indicates that there is no route to host, or that your route does not proceed via the WireGuard interface, you may have an issue with your routing configuration. &lt;br /&gt;
&lt;br /&gt;
This routing rule will not persist between reboots. To make it persist, we can add it to the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit created for the tunnel. After the existing &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; line, add another that executes the rule we just added. Immediately after that one, before the existing &amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line, add an&lt;br /&gt;
&amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line that deletes the rule. This is done by running &amp;lt;code&amp;gt;ip rule del&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;ip rule add&amp;lt;/code&amp;gt;. Your unit should look something like this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=WireGuard single device 44Net Connect tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=true&lt;br /&gt;
&lt;br /&gt;
# Edit these lines if your config file is named differently.&lt;br /&gt;
ExecStart=wg-quick up /etc/wireguard/wg0.conf&lt;br /&gt;
ExecStart=ip rule add from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=ip rule del from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=wg-quick down /etc/wireguard/wg0.conf&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Devices connected to the Pi are not receiving DHCP addresses === &lt;br /&gt;
Verify that the Kea DHCP server is running: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl status kea-dhcp4-server&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If it&#039;s not running, read its logs on the status screen to see if there were any errors in the configuration file.&lt;br /&gt;
Forgetting to delete the default DHCP reservation examples will cause errors, because those are not in your subnet.&lt;br /&gt;
&lt;br /&gt;
If the DHCP server has started properly, check your &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; configuration in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt; and ensure that your interface, router IP, and IP ranges are set properly. Check the logs in &amp;lt;code&amp;gt;systemctl status kea-dhcp4-server&amp;lt;/code&amp;gt; for warnings that &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; failed to bind to an interface.&lt;br /&gt;
&lt;br /&gt;
=== Clients cannot find route to hosts ===&lt;br /&gt;
Run &amp;lt;code&amp;gt;ip rule show&amp;lt;/code&amp;gt; and ensure that: &lt;br /&gt;
# The rule directing your routed subnet to the 51820 table exists &lt;br /&gt;
# That rule&#039;s priority is a lower number (and thus higher priority) than any other rules that would override it, such as the default rule &amp;lt;code&amp;gt;from all lookup main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, inspect the table using &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt; and ensure that its default route is through the WireGuard interface.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2715</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2715"/>
		<updated>2026-07-07T22:53:36Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added pictures for populating OPNsense peer page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike the other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial. &lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_keypair_generation.png|500px|A screenshot of the OPNsense edit instance dialogue, with the gear button next to the public key field circled in red.]]&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
Open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect] and click &amp;lt;code&amp;gt;Request a Tunnel&amp;lt;/code&amp;gt;. Select your preferred server. In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in OPNsense, then &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt;. Save the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
[[File:request_tunnel_44net_connect.png|A screenshot of the 44Net Connect tunnel page header with the Request Tunnel button highlighted in a red box]]&lt;br /&gt;
&lt;br /&gt;
== Copy the tunnel details into OPNsense ==&lt;br /&gt;
=== Fill out instance ===&lt;br /&gt;
Go back to your OPNsense Web UI. Give your instance a name, and fill out the &amp;lt;code&amp;gt;Tunnel address&amp;lt;/code&amp;gt; field with the addresses from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of the config. Check the &amp;lt;code&amp;gt;Disable routes&amp;lt;/code&amp;gt; checkbox, then save your instance. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_instance.png| A screenshot with a side by side view of a WireGuard config file and an OPNsense WireGuard instance configuration page. A red arrow indicates how to copy the tunnel addresses from the config file to the OPNsense configuration page. A red rectangle indicates that the user should check the &amp;quot;Disable Routes&amp;quot; box.]]&lt;br /&gt;
&lt;br /&gt;
=== Fill out peer ===&lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Peers&amp;lt;/code&amp;gt; in your OPNsense Web UI, and click the orange &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button in the bottom right to create a new peer. Give it a name, and paste the &amp;lt;code&amp;gt;PublicKey&amp;lt;/code&amp;gt; value from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file into the peer&#039;s &amp;lt;code&amp;gt;Public key&amp;lt;/code&amp;gt; field. If you configured a pre-shared key when creating your tunnel, enter it in &lt;br /&gt;
the &amp;lt;code&amp;gt;Pre-shared key&amp;lt;/code&amp;gt; field. Also copy in &amp;lt;code&amp;gt;Allowed IPs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint port&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Keepalive interval&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_peer_endpoint.png|A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Two red arrows indicate where to copy the endpoint IP and port from the config file to the OPNsense configuration dialogue.]]&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_peer_keepalive_addresses.png|A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Red arrows indicate where to copy the public key, keepalive interval, and allowed IPs from the config file to the OPNsense configuration dialogue.]]&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;Instances&amp;lt;/code&amp;gt; field, use the drop-down menu to select the instance you created earlier in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Finally, save your peer, go back to the configuration for your instance, and add the peer you just created.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Opnsense_populate_peer_keepalive_addresses.png&amp;diff=2714</id>
		<title>File:Opnsense populate peer keepalive addresses.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Opnsense_populate_peer_keepalive_addresses.png&amp;diff=2714"/>
		<updated>2026-07-07T22:52:43Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Red arrows indicate where to copy the public key, keepalive interval, and allowed IPs from the config file to the OPNsense configuration dialogue.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Red arrows indicate where to copy the public key, keepalive interval, and allowed IPs from the config file to the OPNsense configuration dialogue.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Opnsense_populate_peer_endpoint.png&amp;diff=2713</id>
		<title>File:Opnsense populate peer endpoint.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Opnsense_populate_peer_endpoint.png&amp;diff=2713"/>
		<updated>2026-07-07T22:29:23Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Two red arrows indicate where to copy the endpoint IP and port from the config file to the OPNsense configuration dialogue.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A side by side screenshot of the OPNsense peer configuration dialogue next to a WireGuard configuration file. Two red arrows indicate where to copy the endpoint IP and port from the config file to the OPNsense configuration dialogue.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2712</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2712"/>
		<updated>2026-07-07T21:59:33Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added image for filling out instance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike the other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial. &lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_keypair_generation.png|500px|A screenshot of the OPNsense edit instance dialogue, with the gear button next to the public key field circled in red.]]&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
Open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect] and click &amp;lt;code&amp;gt;Request a Tunnel&amp;lt;/code&amp;gt;. Select your preferred server. In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in OPNsense, then &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt;. Save the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
[[File:request_tunnel_44net_connect.png|A screenshot of the 44Net Connect tunnel page header with the Request Tunnel button highlighted in a red box]]&lt;br /&gt;
&lt;br /&gt;
== Copy the tunnel details into OPNsense ==&lt;br /&gt;
=== Fill out instance ===&lt;br /&gt;
Go back to your OPNsense Web UI. Give your instance a name, and fill out the &amp;lt;code&amp;gt;Tunnel address&amp;lt;/code&amp;gt; field with the addresses from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of the config. Check the &amp;lt;code&amp;gt;Disable routes&amp;lt;/code&amp;gt; checkbox, then save your instance. &lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_populate_instance.png| A screenshot with a side by side view of a WireGuard config file and an OPNsense WireGuard instance configuration page. A red arrow indicates how to copy the tunnel addresses from the config file to the OPNsense configuration page. A red rectangle indicates that the user should check the &amp;quot;Disable Routes&amp;quot; box.]]&lt;br /&gt;
&lt;br /&gt;
=== Fill out peer ===&lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Peers&amp;lt;/code&amp;gt; in your OPNsense Web UI, and click the orange &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button in the bottom right to create a new peer. Give it a name, and paste the &amp;lt;code&amp;gt;PublicKey&amp;lt;/code&amp;gt; value from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file into the peer&#039;s &amp;lt;code&amp;gt;Public key&amp;lt;/code&amp;gt; field. If you configured a pre-shared key when creating your tunnel, enter it in &lt;br /&gt;
the &amp;lt;code&amp;gt;Pre-shared key&amp;lt;/code&amp;gt; field. Also copy in &amp;lt;code&amp;gt;Allowed IPs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint port&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Keepalive interval&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file. &lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;Instances&amp;lt;/code&amp;gt; field, use the drop-down menu to select the instance you created earlier in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Finally, save your peer, go back to the configuration for your instance, and add the peer you just created.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Opnsense_populate_instance.png&amp;diff=2711</id>
		<title>File:Opnsense populate instance.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Opnsense_populate_instance.png&amp;diff=2711"/>
		<updated>2026-07-07T21:57:57Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A screenshot with a side by side view of a WireGuard config file and an OPNsense WireGuard instance configuration page. A red arrow indicates how to copy the tunnel addresses from the config file to the OPNsense configuration page. A red rectangle indicates that the user should check the &amp;quot;Disable Routes&amp;quot; box.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot with a side by side view of a WireGuard config file and an OPNsense WireGuard instance configuration page. A red arrow indicates how to copy the tunnel addresses from the config file to the OPNsense configuration page. A red rectangle indicates that the user should check the &amp;quot;Disable Routes&amp;quot; box.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2710</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2710"/>
		<updated>2026-07-07T18:45:53Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added caption to image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike the other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial. &lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_keypair_generation.png|500px|A screenshot of the OPNsense edit instance dialogue, with the gear button next to the public key field circled in red.]]&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
Open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect] and click &amp;lt;code&amp;gt;Request a Tunnel&amp;lt;/code&amp;gt;. Select your preferred server. In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in OPNsense, then &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt;. Save the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
[[File:request_tunnel_44net_connect.png|A screenshot of the 44Net Connect tunnel page header with the Request Tunnel button highlighted in a red box]]&lt;br /&gt;
&lt;br /&gt;
== Copy the tunnel details into OPNsense ==&lt;br /&gt;
=== Fill out instance ===&lt;br /&gt;
Go back to your OPNsense Web UI. Give your instance a name, and fill out the &amp;lt;code&amp;gt;Tunnel address&amp;lt;/code&amp;gt; field with the addresses from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of the config. Check the &amp;lt;code&amp;gt;Disable routes&amp;lt;/code&amp;gt; checkbox, then save your instance. &lt;br /&gt;
&lt;br /&gt;
=== Fill out peer ===&lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Peers&amp;lt;/code&amp;gt; in your OPNsense Web UI, and click the orange &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button in the bottom right to create a new peer. Give it a name, and paste the &amp;lt;code&amp;gt;PublicKey&amp;lt;/code&amp;gt; value from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file into the peer&#039;s &amp;lt;code&amp;gt;Public key&amp;lt;/code&amp;gt; field. If you configured a pre-shared key when creating your tunnel, enter it in &lt;br /&gt;
the &amp;lt;code&amp;gt;Pre-shared key&amp;lt;/code&amp;gt; field. Also copy in &amp;lt;code&amp;gt;Allowed IPs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint port&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Keepalive interval&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file. &lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;Instances&amp;lt;/code&amp;gt; field, use the drop-down menu to select the instance you created earlier in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Finally, save your peer, go back to the configuration for your instance, and add the peer you just created.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2709</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2709"/>
		<updated>2026-07-07T18:45:24Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added picture for requesting a tunnel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike the other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial. &lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_keypair_generation.png|500px|A screenshot of the OPNsense edit instance dialogue, with the gear button next to the public key field circled in red.]]&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
Open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect] and click &amp;lt;code&amp;gt;Request a Tunnel&amp;lt;/code&amp;gt;. Select your preferred server. In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in OPNsense, then &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt;. Save the wg-quick WireGuard config for use in later steps.&lt;br /&gt;
&lt;br /&gt;
[[File:request_tunnel_44net_connect.png]]&lt;br /&gt;
&lt;br /&gt;
== Copy the tunnel details into OPNsense ==&lt;br /&gt;
=== Fill out instance ===&lt;br /&gt;
Go back to your OPNsense Web UI. Give your instance a name, and fill out the &amp;lt;code&amp;gt;Tunnel address&amp;lt;/code&amp;gt; field with the addresses from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of the config. Check the &amp;lt;code&amp;gt;Disable routes&amp;lt;/code&amp;gt; checkbox, then save your instance. &lt;br /&gt;
&lt;br /&gt;
=== Fill out peer ===&lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Peers&amp;lt;/code&amp;gt; in your OPNsense Web UI, and click the orange &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button in the bottom right to create a new peer. Give it a name, and paste the &amp;lt;code&amp;gt;PublicKey&amp;lt;/code&amp;gt; value from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file into the peer&#039;s &amp;lt;code&amp;gt;Public key&amp;lt;/code&amp;gt; field. If you configured a pre-shared key when creating your tunnel, enter it in &lt;br /&gt;
the &amp;lt;code&amp;gt;Pre-shared key&amp;lt;/code&amp;gt; field. Also copy in &amp;lt;code&amp;gt;Allowed IPs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint port&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Keepalive interval&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file. &lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;Instances&amp;lt;/code&amp;gt; field, use the drop-down menu to select the instance you created earlier in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Finally, save your peer, go back to the configuration for your instance, and add the peer you just created.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Request_tunnel_44net_connect.png&amp;diff=2708</id>
		<title>File:Request tunnel 44net connect.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Request_tunnel_44net_connect.png&amp;diff=2708"/>
		<updated>2026-07-07T18:44:47Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Screenshot of the 44Net Connect tunnel page header with the Request Tunnel button highlighted in a red box.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Screenshot of the 44Net Connect tunnel page header with the Request Tunnel button highlighted in a red box.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2707</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2707"/>
		<updated>2026-07-07T18:00:00Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added screenshot for keypair generation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike the other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial. &lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;br /&gt;
&lt;br /&gt;
[[File:opnsense_keypair_generation.png|500px|A screenshot of the OPNsense edit instance dialogue, with the gear button next to the public key field circled in red.]]&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
Open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect] and click &amp;lt;code&amp;gt;Request a Tunnel&amp;lt;/code&amp;gt;. Select your preferred server. In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in OPNsense, then &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt;. Save the wg-quick WireGuard config for use in later steps. &lt;br /&gt;
&lt;br /&gt;
== Copy the tunnel details into OPNsense ==&lt;br /&gt;
=== Fill out instance ===&lt;br /&gt;
Go back to your OPNsense Web UI. Give your instance a name, and fill out the &amp;lt;code&amp;gt;Tunnel address&amp;lt;/code&amp;gt; field with the addresses from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of the config. Check the &amp;lt;code&amp;gt;Disable routes&amp;lt;/code&amp;gt; checkbox, then save your instance. &lt;br /&gt;
&lt;br /&gt;
=== Fill out peer ===&lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Peers&amp;lt;/code&amp;gt; in your OPNsense Web UI, and click the orange &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button in the bottom right to create a new peer. Give it a name, and paste the &amp;lt;code&amp;gt;PublicKey&amp;lt;/code&amp;gt; value from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file into the peer&#039;s &amp;lt;code&amp;gt;Public key&amp;lt;/code&amp;gt; field. If you configured a pre-shared key when creating your tunnel, enter it in &lt;br /&gt;
the &amp;lt;code&amp;gt;Pre-shared key&amp;lt;/code&amp;gt; field. Also copy in &amp;lt;code&amp;gt;Allowed IPs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint port&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Keepalive interval&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file. &lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;Instances&amp;lt;/code&amp;gt; field, use the drop-down menu to select the instance you created earlier in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Finally, save your peer, go back to the configuration for your instance, and add the peer you just created.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Opnsense_keypair_generation.png&amp;diff=2706</id>
		<title>File:Opnsense keypair generation.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Opnsense_keypair_generation.png&amp;diff=2706"/>
		<updated>2026-07-07T17:50:55Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A screenshot of the OPNsense Edit Instance dialogue with the button for generating a WireGuard keypair circled in red.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of the OPNsense Edit Instance dialogue with the button for generating a WireGuard keypair circled in red.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2705</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2705"/>
		<updated>2026-07-03T00:50:42Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Wrote section on copying tunnel details into OPNsense&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike the other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial. &lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;br /&gt;
&lt;br /&gt;
== Create a tunnel in 44Net Connect ==&lt;br /&gt;
Open your [https://connect.44net.cloud/tunnels tunnels page in 44Net Connect] and click &amp;lt;code&amp;gt;Request a Tunnel&amp;lt;/code&amp;gt;. Select your preferred server. In the &amp;lt;code&amp;gt;Public Key&amp;lt;/code&amp;gt; field, paste the public key generated in OPNsense, then &amp;lt;code&amp;gt;Create Tunnel&amp;lt;/code&amp;gt;. Save the wg-quick WireGuard config for use in later steps. &lt;br /&gt;
&lt;br /&gt;
== Copy the tunnel details into OPNsense ==&lt;br /&gt;
=== Fill out instance ===&lt;br /&gt;
Go back to your OPNsense Web UI. Give your instance a name, and fill out the &amp;lt;code&amp;gt;Tunnel address&amp;lt;/code&amp;gt; field with the addresses from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of the config. Check the &amp;lt;code&amp;gt;Disable routes&amp;lt;/code&amp;gt; checkbox, then save your instance. &lt;br /&gt;
&lt;br /&gt;
=== Fill out peer ===&lt;br /&gt;
Go to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Peers&amp;lt;/code&amp;gt; in your OPNsense Web UI, and click the orange &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button in the bottom right to create a new peer. Give it a name, and paste the &amp;lt;code&amp;gt;PublicKey&amp;lt;/code&amp;gt; value from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file into the peer&#039;s &amp;lt;code&amp;gt;Public key&amp;lt;/code&amp;gt; field. If you configured a pre-shared key when creating your tunnel, enter it in &lt;br /&gt;
the &amp;lt;code&amp;gt;Pre-shared key&amp;lt;/code&amp;gt; field. Also copy in &amp;lt;code&amp;gt;Allowed IPs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint address&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Endpoint port&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Keepalive interval&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;[Peer]&amp;lt;/code&amp;gt; section of your config file. &lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;Instances&amp;lt;/code&amp;gt; field, use the drop-down menu to select the instance you created earlier in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Finally, save your peer, go back to the configuration for your instance, and add the peer you just created.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2704</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2704"/>
		<updated>2026-07-02T23:51:50Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Changed section title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike the other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial. &lt;br /&gt;
&lt;br /&gt;
== Generate a keypair in OPNsense ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2703</id>
		<title>44Net Connect/Quick Start/OPNsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start/OPNsense&amp;diff=2703"/>
		<updated>2026-07-02T23:35:32Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Created page and what you need section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What you need ===&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A machine running OPNsense&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. If you haven&#039;t obtained a WireGuard tunnel configuration file from 44Net Connect, get one using the [[44Net_Connect/Quick_Start|the 44Net Connect quick start guide]]&lt;br /&gt;
&lt;br /&gt;
Unlike the other Quick Start guides, we aren&#039;t starting with a configuration file from 44Net Connect. Instead, we will be creating one during the course of this tutorial. &lt;br /&gt;
&lt;br /&gt;
== Create a WireGuard instance ==&lt;br /&gt;
Navigate to &amp;lt;code&amp;gt;VPN &amp;gt; WireGuard &amp;gt; Instances&amp;lt;/code&amp;gt; in your OPNsense web GUI and create a new instance. Click the gear button to generate a public key/private key keypair.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Single_Device_Tunnel&amp;diff=2702</id>
		<title>44Net Connect/Single Device Tunnel</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Single_Device_Tunnel&amp;diff=2702"/>
		<updated>2026-07-02T23:27:46Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added link to OPNsense quick start page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
{{DISPLAYTITLE:Single Device Tunnel - 44Net Connect}}&lt;br /&gt;
&lt;br /&gt;
This page discusses the single device tunnel configuration for connecting a device to 44Net via 44Net Connect. &lt;br /&gt;
&lt;br /&gt;
== What is a single device tunnel? ==&lt;br /&gt;
A single device tunnel is a configuration where one device can send and receive traffic from its 44Net address via one of ARDC&#039;s endpoint nodes. This is done using a WireGuard tunnel, with a configuration file issued by [[44Net Connect]]. Each device connected in this manner is issued a single IPv4 address and a single IPv6 address, and it does not depend on a local gateway for connection to 44Net. A host using a single device tunnel may choose whether or not to route non-44Net traffic via the tunnel. Routing only 44Net traffic over the tunnel is a common configuration, and is called a &amp;quot;split tunnel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Single_device_tunnel.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== When should I use a single device tunnel? == &lt;br /&gt;
If you only have a few devices to manage, you are not comfortable with router and firewall configuration, or you&#039;re not sure where to start, a single device tunnel is a good choice. Mobile devices, such as phones and laptops, cannot rely on always being behind an appropriate gateway or router, so they work best with a single device tunnel. &lt;br /&gt;
&lt;br /&gt;
Devices that cannot run WireGuard, such as some embedded devices, do not support a single device tunnel. These should be placed in a [[44Net_Connect/Routed_Subnet|routed subnet]] where the router connects them to 44Net.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
* [[44Net_Connect/Quick_Start/Debian_based_distributions|44Net Connect Quick Start: Debian-based distributions]]&lt;br /&gt;
* [[44Net_Connect/Quick_Start/Raspberry_Pi|44Net Connect Quick Start: Raspberry Pi]]&lt;br /&gt;
* [[44Net_Connect/Quick_Start/Fedora|44Net Connect Quick Start: Fedora]]&lt;br /&gt;
* [[44Net_Connect/Quick_Start/OPNsense|44Net Connect Quick Start: OPNsense]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Topology]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Raspberry_Pi&amp;diff=2701</id>
		<title>44Net Connect/Routed Subnet/Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Raspberry_Pi&amp;diff=2701"/>
		<updated>2026-06-30T23:09:10Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Instructed user to check for kea failing to bind to interface when troubleshooting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
{{DISPLAYTITLE:44Net Connect Routed Subnet: Raspberry Pi}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Raspberry_Pi | single-device tunnel to your Raspberry Pi]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field. &lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to use a Raspberry Pi as the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter or an ethernet hat. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included&lt;br /&gt;
in Raspberry Pi OS and many other Linux distributions. These configuration steps can be completed using the NetworkManager GUI, but many people operate their Raspberry Pis in &amp;quot;headless&amp;quot; mode (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Pi over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: Setting Up A Wireless Access Point ==&lt;br /&gt;
&lt;br /&gt;
If you have wireless only clients or wish not to purchase additional hardware, the Raspberry Pi&#039;s WiFi interface can be configured as an access point. &lt;br /&gt;
&lt;br /&gt;
After your subnet is approved, you must attach it to your tunnel. Go to your Tunnels tab on 44Net Connect, and click Edit on the tunnel for your routing device. Go to the &amp;quot;Route additional Networks Through This Tunnel&amp;quot; section, and check the box for the subnet you want to use for this tunnel. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Set your wireless regulatory domain === &lt;br /&gt;
Different countries have different rules about which frequencies and bandwidths devices are allowed to use for WiFi.&lt;br /&gt;
Setting the regulatory domain ensures that your Pi will use the right ones, making it work best with nearby devices&lt;br /&gt;
and ensuring regulatory compliance. &lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi OS imager asks you to set the wireless regulatory domain during setup, but does not require it.&lt;br /&gt;
If you didn&#039;t set the regulatory domain in the imager configuration, set it now by running &lt;br /&gt;
&amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; and going to &amp;lt;code&amp;gt;Localisation Options &amp;gt; WLAN Country&amp;lt;/code&amp;gt;. Select your country, confirm, and exit. If you&#039;re not sure whether you set the&lt;br /&gt;
wireless regulatory domain, run the command &amp;lt;code&amp;gt;sudo iw reg get&amp;lt;/code&amp;gt;. Look at the country&lt;br /&gt;
set under &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;. If it says &amp;lt;code&amp;gt;unset&amp;lt;/code&amp;gt;, you have not set the regulatory domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure WiFi settings for your nmcli connection ===&lt;br /&gt;
Set the access point security and password. First, we set the &amp;lt;code&amp;gt;wifi-sec.key-mgmt&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;wpa-psk&amp;lt;/code&amp;gt; to disable the older insecure WEP encryption method. At this point, you will also need to set a password. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.key-mgmt wpa-psk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.psk &amp;lt;password&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For security, leave only WPA2 enabled. By default, the older WPA protocol is enabled for compatibility, but it only supports the less secure TKIP encryption algorithm. Disable it by setting &amp;lt;code&amp;gt;wifi-sec.proto&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;rsn&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.proto rsn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even after disabling the older WPA protocol, WPA2 supports TKIP for compatibility. As an additional security measure, enable only the CCMP encryption algorithm, disabling TKIP. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.pairwise ccmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, set the connection to access point mode and configure it to use your subnet assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; 802-11-wireless.mode ap 802-11-wireless.band &amp;lt;band&amp;gt; ipv4.method manual ipv4.addr &amp;lt;subnet in CIDR notation&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;802-11-wireless.band&amp;lt;/code&amp;gt; setting, choose either &amp;lt;code&amp;gt;bg&amp;lt;/code&amp;gt; for 2.4 GHz or &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; for 5 GHz.&lt;br /&gt;
&lt;br /&gt;
Now we need to disable the current &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; connection and enable our new one. Current connections can be viewed by running &amp;lt;code&amp;gt;nmcli connection&amp;lt;/code&amp;gt;. If your Pi is currently connected to a WiFi network, you&#039;ll see something like &amp;lt;code&amp;gt;netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;. Disable that connection by running the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli conn down netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, enable your new connection by running &amp;lt;code&amp;gt;sudo nmcli conn up &amp;lt;name of connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up DHCP ==&lt;br /&gt;
[https://www.isc.org/kea/ Kea] is the recommended DHCP server for setting up a routed subnet. &amp;lt;code&amp;gt;dhcpd&amp;lt;/code&amp;gt; is deprecated as of 2022. &lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install kea&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After installing, configure its settings by editing &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. This file uses an extended JSON syntax that supports shell style comments using &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, C style single line comments with &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;, and C style multi-line comments with &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Configure Interface ===&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt;, add the interface you want your DHCP server to operate on to the &amp;lt;code&amp;gt;interfaces&amp;lt;/code&amp;gt; list. For example, in a setup using 2 ethernet interfaces, you might have &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; connected to your LAN and &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; connected to your client devices. In this case, you would use &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;. If you&#039;re using the built-in wireless card to broadcast an access point, use &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [ &amp;quot;eth1&amp;quot; ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure DNS === &lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; set at least one DNS server. Cloudflare&#039;s DNS servers are &amp;lt;code&amp;gt;1.1.1.1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.0.0.1&amp;lt;/code&amp;gt;. Google&#039;s DNS servers are &amp;lt;code&amp;gt;8.8.8.8&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;8.8.4.4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domain-name-servers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
    ],&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your subnet === &lt;br /&gt;
&amp;lt;code&amp;gt;subnet4&amp;lt;/code&amp;gt; is a list (denoted with brackets) of structures (denoted with curly brackets) where each structure is one subnet. Inside each subnet structure, set the client IP range(s) in &amp;lt;code&amp;gt;pools&amp;lt;/code&amp;gt;, and define at least one router in the &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; field. Comment out or delete the example DHCP reservations in the &amp;lt;code&amp;gt;reservations&amp;lt;/code&amp;gt; field, since they&#039;re for the wrong subnet. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;subnet4&amp;quot;: [&lt;br /&gt;
    // Put your subnet here in CIDR notation.&lt;br /&gt;
    &amp;quot;subnet&amp;quot;: &amp;quot;44.27.45.128/29&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    // Define the range of client IP addresses here.&lt;br /&gt;
    &amp;quot;pools&amp;quot;: [ { &amp;quot;pool&amp;quot;: &amp;quot;44.27.45.129 - 44.27.45.133&amp;quot; } ],&lt;br /&gt;
&lt;br /&gt;
    // These options are subnet specific. You must configure at least one router.&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;routers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;44.27.45.129&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;reservations&amp;quot;: [&lt;br /&gt;
        // Comment out or delete the examples in this list, since they are for the wrong subnet.&lt;br /&gt;
    ]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Hot Plugging Workaround ===&lt;br /&gt;
At present, &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; does not support hot plugging interfaces. This means that ethernet devices must have at least one client at the time the DHCP server starts, otherwise it will not properly bind to the interface. If you plan on hot plugging ethernet devices on your Pi, this can be worked around by configuring &amp;lt;code&amp;gt;service-sockets-max-retries&amp;lt;/code&amp;gt; to an extremely large number such as 9223372036854775807, the upper limit of a signed 64-bit integer. You may also wish to increase &amp;lt;code&amp;gt;service-sockets-retry-wait-time&amp;lt;/code&amp;gt;, which specifies the retry time in milliseconds, though the default time of 5000 ms is typically fine. These options should go in the &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt; section at the top of your &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; section in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. Here is an example: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    // Add names of your network interfaces to listen on.&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        // See section 8.2.4 for more details. You probably want to add just&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0&amp;quot; or specific IPv4 address on that&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0/192.0.2.1&amp;quot;).&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [&amp;quot;eth1&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
        // max retries is set to int64 max as a workaround for kea not supporting&lt;br /&gt;
        // hot plugging of interfaces.&lt;br /&gt;
        &amp;quot;service-sockets-max-retries&amp;quot;: 9223372036854775807,&lt;br /&gt;
        &amp;quot;service-sockets-retry-wait-time&amp;quot;: 2000&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // The rest of this config is omitted for brevity.&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up Routing ==&lt;br /&gt;
=== Enable IP Forwarding ===&lt;br /&gt;
To allow packets to be forwarded between different network interfaces on your Pi, we must enable IP forwarding in the kernel. Do this by adding the line &amp;lt;code&amp;gt;net.ipv4.ip_forward=1&amp;lt;/code&amp;gt; to one of the drop-in files in &amp;lt;code&amp;gt;/etc/sysctl.d/&amp;lt;/code&amp;gt;. The file &amp;lt;code&amp;gt;98-rpi.conf&amp;lt;/code&amp;gt; exists by default, so&lt;br /&gt;
add the line to that file using your editor of choice. It will require superuser privileges. For example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/sysctl.d/98-rpi.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, reload your system configuration from config files by running &amp;lt;code&amp;gt;sudo sysctl --system&amp;lt;/code&amp;gt;. Verify that IP forwarding has been successfully enabled&lt;br /&gt;
by running &amp;lt;code&amp;gt;sysctl net.ipv4.ip_forward&amp;lt;/code&amp;gt;, which should print &amp;lt;code&amp;gt;net.ipv4.ip_forward = 1&amp;lt;/code&amp;gt;. If the number is 0 instead of 1, IP forwarding has not been properly enabled, and you should check your drop-in file &amp;lt;code&amp;gt;/etc/sysctl.d/98-rpi.conf&amp;lt;/code&amp;gt; for typos.&lt;br /&gt;
&lt;br /&gt;
=== Add the routing rule ===&lt;br /&gt;
Next, we need to add a routing rule to allow the clients on the routed subnet to exit via the WireGuard tunnel. The setup steps for creating the tunnel should have created the routing table &amp;lt;code&amp;gt;51820&amp;lt;/code&amp;gt; where the default route is via the WireGuard interface, whatever you&#039;ve named it. Verify that it exists by running the command &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt;. It should have a single line that says something like &amp;lt;code&amp;gt;default dev wg0 scope link&amp;lt;/code&amp;gt;. In this case, &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; is the example WireGuard interface name. Yours may be different. &lt;br /&gt;
&lt;br /&gt;
Run the command &amp;lt;code&amp;gt;sudo ip rule add from &amp;lt;subnet&amp;gt; table 51820&amp;lt;/code&amp;gt;. Replace &amp;lt;code&amp;gt;&amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt; with your routed subnet in CIDR notation. &lt;br /&gt;
&lt;br /&gt;
Verify that your routing is working correctly by running the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip route get 1.1.1.1 from &amp;lt;address&amp;gt; iif &amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; should be replaced by an address in your subnet, and &amp;lt;code&amp;gt;&amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt; with the interface your routed subnet clients are connected to. This command will attempt to find the route to 1.1.1.1 (Cloudflare&#039;s DNS server, an arbitrary test IP) from an IP in the routed subnet. The output should look like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;1.1.1.1 from &amp;lt;address&amp;gt; dev wg0 table 51820&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output indicates that there is no route to host, or that your route does not proceed via the WireGuard interface, you may have an issue with your routing configuration. &lt;br /&gt;
&lt;br /&gt;
This routing rule will not persist between reboots. To make it persist, we can add it to the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit created for the tunnel. After the existing &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; line, add another that executes the rule we just added. Immediately after that one, before the existing &amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line, add an&lt;br /&gt;
&amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line that deletes the rule. This is done by running &amp;lt;code&amp;gt;ip rule del&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;ip rule add&amp;lt;/code&amp;gt;. Your unit should look something like this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=WireGuard single device 44Net Connect tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=true&lt;br /&gt;
&lt;br /&gt;
# Edit these lines if your config file is named differently.&lt;br /&gt;
ExecStart=wg-quick up /etc/wireguard/wg0.conf&lt;br /&gt;
ExecStart=ip rule add from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=ip rule del from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=wg-quick down /etc/wireguard/wg0.conf&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Devices connected to the Pi are not receiving DHCP addresses === &lt;br /&gt;
Verify that the Kea DHCP server is running: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl status kea-dhcp4-server&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If it&#039;s not running, read its logs on the status screen to see if there were any errors in the configuration file.&lt;br /&gt;
Forgetting to delete the default DHCP reservation examples will cause errors, because those are not in your subnet.&lt;br /&gt;
&lt;br /&gt;
If the DHCP server has started properly, check your &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; configuration in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt; and ensure that your interface, router IP, and IP ranges are set properly. Check the logs in &amp;lt;code&amp;gt;systemctl status kea-dhcp4-server&amp;lt;/code&amp;gt; for warnings that &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; failed to bind to an interface.&lt;br /&gt;
&lt;br /&gt;
=== Clients cannot find route to hosts ===&lt;br /&gt;
Run &amp;lt;code&amp;gt;ip rule show&amp;lt;/code&amp;gt; and ensure that: &lt;br /&gt;
# The rule directing your routed subnet to the 51820 table exists &lt;br /&gt;
# That rule&#039;s priority is a lower number (and thus higher priority) than any other rules that would override it, such as the default rule &amp;lt;code&amp;gt;from all lookup main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, inspect the table using &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt; and ensure that its default route is through the WireGuard interface.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2700</id>
		<title>44Net Connect/Routed Subnet/Debian based distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2700"/>
		<updated>2026-06-30T23:08:33Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Pasted in troubleshooting section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Debian_based_distributions | single-device tunnel to your machine]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to set up the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter if necessary. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included in most Debian-based distributions by default. These configuration steps can be completed using the NetworkManager GUI, but many people operate a &amp;quot;headless&amp;quot; machine (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Debian machine over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: Setting Up A Wireless Access Point ==&lt;br /&gt;
&lt;br /&gt;
If you have wireless only clients, or wish to utilize an existing WiFi interface in lieu of an additional ethernet interface, you can configure the interface as an access point. &lt;br /&gt;
&lt;br /&gt;
After your subnet is approved, you must attach it to your tunnel. Go to your Tunnels tab on 44Net Connect, and click Edit on the tunnel for your routing device. Go to the &amp;quot;Route additional Networks Through This Tunnel&amp;quot; section, and check the box for the subnet you want to use for this tunnel. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Set your wireless regulatory domain === &lt;br /&gt;
Different countries have different rules about which frequencies and bandwidths devices are allowed to use for WiFi.&lt;br /&gt;
Setting the regulatory domain ensures that your device will use the right ones, making it work best with nearby devices and ensuring regulatory compliance. &lt;br /&gt;
&lt;br /&gt;
Your regulatory domain may have already been set during OS installation. Run&lt;br /&gt;
&amp;lt;code&amp;gt;sudo iw reg get&amp;lt;/code&amp;gt; to check whether it&#039;s been set. Look at the country set under &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;. If it says &amp;lt;code&amp;gt;unset&amp;lt;/code&amp;gt;, you have not set the regulatory domain. &lt;br /&gt;
&lt;br /&gt;
If your regulatory domain has not been set, set it with &amp;lt;code&amp;gt;sudo iw reg set &amp;lt;country code&amp;gt;&amp;lt;/code&amp;gt; where the country code is your [https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 two letter ISO country code].&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure WiFi settings for your nmcli connection ===&lt;br /&gt;
Set the access point security and password. First, we set the &amp;lt;code&amp;gt;wifi-sec.key-mgmt&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;wpa-psk&amp;lt;/code&amp;gt; to disable the older insecure WEP encryption method. At this point, you will also need to set a password. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.key-mgmt wpa-psk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.psk &amp;lt;password&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For security, leave only WPA2 enabled. By default, the older WPA protocol is enabled for compatibility, but it only supports the less secure TKIP encryption algorithm. Disable it by setting &amp;lt;code&amp;gt;wifi-sec.proto&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;rsn&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.proto rsn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even after disabling the older WPA protocol, WPA2 supports TKIP for compatibility. As an additional security measure, enable only the CCMP encryption algorithm, disabling TKIP. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.pairwise ccmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, set the connection to access point mode and configure it to use your subnet assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; 802-11-wireless.mode ap 802-11-wireless.band &amp;lt;band&amp;gt; ipv4.method manual ipv4.addr &amp;lt;subnet in CIDR notation&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;802-11-wireless.band&amp;lt;/code&amp;gt; setting, choose either &amp;lt;code&amp;gt;bg&amp;lt;/code&amp;gt; for 2.4 GHz or &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; for 5 GHz.&lt;br /&gt;
&lt;br /&gt;
Now we need to disable the current &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; connection and enable our new one. Current connections can be viewed by running &amp;lt;code&amp;gt;nmcli connection&amp;lt;/code&amp;gt;. If your device is currently connected to a WiFi network, you&#039;ll see something like &amp;lt;code&amp;gt;netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;. Disable that connection by running the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli conn down netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, enable your new connection by running &amp;lt;code&amp;gt;sudo nmcli conn up &amp;lt;name of connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up DHCP ==&lt;br /&gt;
[https://www.isc.org/kea/ Kea] is the recommended DHCP server for setting up a routed subnet. &amp;lt;code&amp;gt;dhcpd&amp;lt;/code&amp;gt; is deprecated as of 2022. &lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install kea&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After installing, configure its settings by editing &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. This file uses an extended JSON syntax that supports shell style comments using &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, C style single line comments with &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;, and C style multi-line comments with &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Configure Interface ===&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt;, add the interface you want your DHCP server to operate on to the &amp;lt;code&amp;gt;interfaces&amp;lt;/code&amp;gt; list. For example, in a setup using 2 ethernet interfaces, you might have &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; connected to your LAN and &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; connected to your client devices. In this case, you would use &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;. If you&#039;re using the built-in wireless card to broadcast an access point, use &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [ &amp;quot;eth1&amp;quot; ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure DNS === &lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; set at least one DNS server. Cloudflare&#039;s DNS servers are &amp;lt;code&amp;gt;1.1.1.1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.0.0.1&amp;lt;/code&amp;gt;. Google&#039;s DNS servers are &amp;lt;code&amp;gt;8.8.8.8&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;8.8.4.4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domain-name-servers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
    ],&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your subnet === &lt;br /&gt;
&amp;lt;code&amp;gt;subnet4&amp;lt;/code&amp;gt; is a list (denoted with brackets) of structures (denoted with curly brackets) where each structure is one subnet. Inside each subnet structure, set the client IP range(s) in &amp;lt;code&amp;gt;pools&amp;lt;/code&amp;gt;, and define at least one router in the &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; field. Comment out or delete the example DHCP reservations in the &amp;lt;code&amp;gt;reservations&amp;lt;/code&amp;gt; field, since they&#039;re for the wrong subnet. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;subnet4&amp;quot;: [&lt;br /&gt;
    // Put your subnet here in CIDR notation.&lt;br /&gt;
    &amp;quot;subnet&amp;quot;: &amp;quot;44.27.45.128/29&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    // Define the range of client IP addresses here.&lt;br /&gt;
    &amp;quot;pools&amp;quot;: [ { &amp;quot;pool&amp;quot;: &amp;quot;44.27.45.129 - 44.27.45.133&amp;quot; } ],&lt;br /&gt;
&lt;br /&gt;
    // These options are subnet specific. You must configure at least one router.&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;routers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;44.27.45.129&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;reservations&amp;quot;: [&lt;br /&gt;
        // Comment out or delete the examples in this list, since they are for the wrong subnet.&lt;br /&gt;
    ]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Hot Plugging Workaround ===&lt;br /&gt;
At present, &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; does not support hot plugging interfaces. This means that ethernet devices must have at least one client at the time the DHCP server starts, otherwise it will not properly bind to the interface. If you plan on hot plugging ethernet devices on your Pi, this can be worked around by configuring &amp;lt;code&amp;gt;service-sockets-max-retries&amp;lt;/code&amp;gt; to an extremely large number such as 9223372036854775807, the upper limit of a signed 64-bit integer. You may also wish to increase &amp;lt;code&amp;gt;service-sockets-retry-wait-time&amp;lt;/code&amp;gt;, which specifies the retry time in milliseconds, though the default time of 5000 ms is typically fine. These options should go in the &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt; section at the top of your &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; section in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. Here is an example: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    // Add names of your network interfaces to listen on.&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        // See section 8.2.4 for more details. You probably want to add just&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0&amp;quot; or specific IPv4 address on that&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0/192.0.2.1&amp;quot;).&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [&amp;quot;eth1&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
        // max retries is set to int64 max as a workaround for kea not supporting&lt;br /&gt;
        // hot plugging of interfaces.&lt;br /&gt;
        &amp;quot;service-sockets-max-retries&amp;quot;: 9223372036854775807,&lt;br /&gt;
        &amp;quot;service-sockets-retry-wait-time&amp;quot;: 2000&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // The rest of this config is omitted for brevity.&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up Routing ==&lt;br /&gt;
=== Enable IP Forwarding ===&lt;br /&gt;
To allow packets to be forwarded between different network interfaces on your Pi, we must enable IP forwarding in the kernel. Do this by adding the line &amp;lt;code&amp;gt;net.ipv4.ip_forward=1&amp;lt;/code&amp;gt; to one of the drop-in files in &amp;lt;code&amp;gt;/etc/sysctl.d/&amp;lt;/code&amp;gt;, or create one and add this line. It&#039;s customary to prefix drop-in file names with a number indicating their priority.&lt;br /&gt;
Editing or creating the drop-in file will require superuser privileges. For example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/sysctl.d/98-ipforward.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, reload your system configuration from config files by running &amp;lt;code&amp;gt;sudo sysctl --system&amp;lt;/code&amp;gt;. Verify that IP forwarding has been successfully enabled&lt;br /&gt;
by running &amp;lt;code&amp;gt;sysctl net.ipv4.ip_forward&amp;lt;/code&amp;gt;, which should print &amp;lt;code&amp;gt;net.ipv4.ip_forward = 1&amp;lt;/code&amp;gt;. If the number is 0 instead of 1, IP forwarding has not been properly enabled, and you should check your drop-in file for typos.&lt;br /&gt;
&lt;br /&gt;
=== Add the routing rule ===&lt;br /&gt;
Next, we need to add a routing rule to allow the clients on the routed subnet to exit via the WireGuard tunnel. The setup steps for creating the tunnel should have created the routing table &amp;lt;code&amp;gt;51820&amp;lt;/code&amp;gt; where the default route is via the WireGuard interface, whatever you&#039;ve named it. Verify that it exists by running the command &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt;. It should have a single line that says something like &amp;lt;code&amp;gt;default dev wg0 scope link&amp;lt;/code&amp;gt;. In this case, &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; is the example WireGuard interface name. Yours may be different. &lt;br /&gt;
&lt;br /&gt;
Run the command &amp;lt;code&amp;gt;sudo ip rule add from &amp;lt;subnet&amp;gt; table 51820&amp;lt;/code&amp;gt;. Replace &amp;lt;code&amp;gt;&amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt; with your routed subnet in CIDR notation. &lt;br /&gt;
&lt;br /&gt;
Verify that your routing is working correctly by running the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip route get 1.1.1.1 from &amp;lt;address&amp;gt; iif &amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; should be replaced by an address in your subnet, and &amp;lt;code&amp;gt;&amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt; with the interface your routed subnet clients are connected to. This command will attempt to find the route to 1.1.1.1 (Cloudflare&#039;s DNS server, an arbitrary test IP) from an IP in the routed subnet. The output should look like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;1.1.1.1 from &amp;lt;address&amp;gt; dev wg0 table 51820&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output indicates that there is no route to host, or that your route does not proceed via the WireGuard interface, you may have an issue with your routing configuration. &lt;br /&gt;
&lt;br /&gt;
This routing rule will not persist between reboots. To make it persist, we can add it to the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit created for the tunnel. After the existing &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; line, add another that executes the rule we just added. Immediately after that one, before the existing &amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line, add an&lt;br /&gt;
&amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line that deletes the rule. This is done by running &amp;lt;code&amp;gt;ip rule del&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;ip rule add&amp;lt;/code&amp;gt;. Your unit should look something like this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=WireGuard single device 44Net Connect tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=true&lt;br /&gt;
&lt;br /&gt;
# Edit these lines if your config file is named differently.&lt;br /&gt;
ExecStart=wg-quick up /etc/wireguard/wg0.conf&lt;br /&gt;
ExecStart=ip rule add from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=ip rule del from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=wg-quick down /etc/wireguard/wg0.conf&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Devices connected to the Pi are not receiving DHCP addresses === &lt;br /&gt;
Verify that the Kea DHCP server is running: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl status kea-dhcp4-server&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If it&#039;s not running, read its logs on the status screen to see if there were any errors in the configuration file.&lt;br /&gt;
Forgetting to delete the default DHCP reservation examples will cause errors, because those are not in your subnet.&lt;br /&gt;
&lt;br /&gt;
If the DHCP server has started properly, check your &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; configuration in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt; and ensure that your interface, router IP, and IP ranges are set properly. Check the logs in &amp;lt;code&amp;gt;systemctl status kea-dhcp4-server&amp;lt;/code&amp;gt; for warnings that &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; failed to bind to an interface.&lt;br /&gt;
&lt;br /&gt;
=== Clients cannot find route to hosts ===&lt;br /&gt;
Run &amp;lt;code&amp;gt;ip rule show&amp;lt;/code&amp;gt; and ensure that: &lt;br /&gt;
# The rule directing your routed subnet to the 51820 table exists &lt;br /&gt;
# That rule&#039;s priority is a lower number (and thus higher priority) than any other rules that would override it, such as the default rule &amp;lt;code&amp;gt;from all lookup main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, inspect the table using &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt; and ensure that its default route is through the WireGuard interface.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2699</id>
		<title>44Net Connect/Routed Subnet/Debian based distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2699"/>
		<updated>2026-06-30T23:06:34Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Filled out the section on setting up routing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Debian_based_distributions | single-device tunnel to your machine]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to set up the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter if necessary. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included in most Debian-based distributions by default. These configuration steps can be completed using the NetworkManager GUI, but many people operate a &amp;quot;headless&amp;quot; machine (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Debian machine over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: Setting Up A Wireless Access Point ==&lt;br /&gt;
&lt;br /&gt;
If you have wireless only clients, or wish to utilize an existing WiFi interface in lieu of an additional ethernet interface, you can configure the interface as an access point. &lt;br /&gt;
&lt;br /&gt;
After your subnet is approved, you must attach it to your tunnel. Go to your Tunnels tab on 44Net Connect, and click Edit on the tunnel for your routing device. Go to the &amp;quot;Route additional Networks Through This Tunnel&amp;quot; section, and check the box for the subnet you want to use for this tunnel. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Set your wireless regulatory domain === &lt;br /&gt;
Different countries have different rules about which frequencies and bandwidths devices are allowed to use for WiFi.&lt;br /&gt;
Setting the regulatory domain ensures that your device will use the right ones, making it work best with nearby devices and ensuring regulatory compliance. &lt;br /&gt;
&lt;br /&gt;
Your regulatory domain may have already been set during OS installation. Run&lt;br /&gt;
&amp;lt;code&amp;gt;sudo iw reg get&amp;lt;/code&amp;gt; to check whether it&#039;s been set. Look at the country set under &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;. If it says &amp;lt;code&amp;gt;unset&amp;lt;/code&amp;gt;, you have not set the regulatory domain. &lt;br /&gt;
&lt;br /&gt;
If your regulatory domain has not been set, set it with &amp;lt;code&amp;gt;sudo iw reg set &amp;lt;country code&amp;gt;&amp;lt;/code&amp;gt; where the country code is your [https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 two letter ISO country code].&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure WiFi settings for your nmcli connection ===&lt;br /&gt;
Set the access point security and password. First, we set the &amp;lt;code&amp;gt;wifi-sec.key-mgmt&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;wpa-psk&amp;lt;/code&amp;gt; to disable the older insecure WEP encryption method. At this point, you will also need to set a password. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.key-mgmt wpa-psk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.psk &amp;lt;password&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For security, leave only WPA2 enabled. By default, the older WPA protocol is enabled for compatibility, but it only supports the less secure TKIP encryption algorithm. Disable it by setting &amp;lt;code&amp;gt;wifi-sec.proto&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;rsn&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.proto rsn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even after disabling the older WPA protocol, WPA2 supports TKIP for compatibility. As an additional security measure, enable only the CCMP encryption algorithm, disabling TKIP. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.pairwise ccmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, set the connection to access point mode and configure it to use your subnet assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; 802-11-wireless.mode ap 802-11-wireless.band &amp;lt;band&amp;gt; ipv4.method manual ipv4.addr &amp;lt;subnet in CIDR notation&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;802-11-wireless.band&amp;lt;/code&amp;gt; setting, choose either &amp;lt;code&amp;gt;bg&amp;lt;/code&amp;gt; for 2.4 GHz or &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; for 5 GHz.&lt;br /&gt;
&lt;br /&gt;
Now we need to disable the current &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; connection and enable our new one. Current connections can be viewed by running &amp;lt;code&amp;gt;nmcli connection&amp;lt;/code&amp;gt;. If your device is currently connected to a WiFi network, you&#039;ll see something like &amp;lt;code&amp;gt;netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;. Disable that connection by running the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli conn down netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, enable your new connection by running &amp;lt;code&amp;gt;sudo nmcli conn up &amp;lt;name of connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up DHCP ==&lt;br /&gt;
[https://www.isc.org/kea/ Kea] is the recommended DHCP server for setting up a routed subnet. &amp;lt;code&amp;gt;dhcpd&amp;lt;/code&amp;gt; is deprecated as of 2022. &lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install kea&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After installing, configure its settings by editing &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. This file uses an extended JSON syntax that supports shell style comments using &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, C style single line comments with &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;, and C style multi-line comments with &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Configure Interface ===&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt;, add the interface you want your DHCP server to operate on to the &amp;lt;code&amp;gt;interfaces&amp;lt;/code&amp;gt; list. For example, in a setup using 2 ethernet interfaces, you might have &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; connected to your LAN and &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; connected to your client devices. In this case, you would use &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;. If you&#039;re using the built-in wireless card to broadcast an access point, use &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [ &amp;quot;eth1&amp;quot; ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure DNS === &lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; set at least one DNS server. Cloudflare&#039;s DNS servers are &amp;lt;code&amp;gt;1.1.1.1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.0.0.1&amp;lt;/code&amp;gt;. Google&#039;s DNS servers are &amp;lt;code&amp;gt;8.8.8.8&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;8.8.4.4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domain-name-servers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
    ],&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your subnet === &lt;br /&gt;
&amp;lt;code&amp;gt;subnet4&amp;lt;/code&amp;gt; is a list (denoted with brackets) of structures (denoted with curly brackets) where each structure is one subnet. Inside each subnet structure, set the client IP range(s) in &amp;lt;code&amp;gt;pools&amp;lt;/code&amp;gt;, and define at least one router in the &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; field. Comment out or delete the example DHCP reservations in the &amp;lt;code&amp;gt;reservations&amp;lt;/code&amp;gt; field, since they&#039;re for the wrong subnet. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;subnet4&amp;quot;: [&lt;br /&gt;
    // Put your subnet here in CIDR notation.&lt;br /&gt;
    &amp;quot;subnet&amp;quot;: &amp;quot;44.27.45.128/29&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    // Define the range of client IP addresses here.&lt;br /&gt;
    &amp;quot;pools&amp;quot;: [ { &amp;quot;pool&amp;quot;: &amp;quot;44.27.45.129 - 44.27.45.133&amp;quot; } ],&lt;br /&gt;
&lt;br /&gt;
    // These options are subnet specific. You must configure at least one router.&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;routers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;44.27.45.129&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;reservations&amp;quot;: [&lt;br /&gt;
        // Comment out or delete the examples in this list, since they are for the wrong subnet.&lt;br /&gt;
    ]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Hot Plugging Workaround ===&lt;br /&gt;
At present, &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; does not support hot plugging interfaces. This means that ethernet devices must have at least one client at the time the DHCP server starts, otherwise it will not properly bind to the interface. If you plan on hot plugging ethernet devices on your Pi, this can be worked around by configuring &amp;lt;code&amp;gt;service-sockets-max-retries&amp;lt;/code&amp;gt; to an extremely large number such as 9223372036854775807, the upper limit of a signed 64-bit integer. You may also wish to increase &amp;lt;code&amp;gt;service-sockets-retry-wait-time&amp;lt;/code&amp;gt;, which specifies the retry time in milliseconds, though the default time of 5000 ms is typically fine. These options should go in the &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt; section at the top of your &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; section in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. Here is an example: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    // Add names of your network interfaces to listen on.&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        // See section 8.2.4 for more details. You probably want to add just&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0&amp;quot; or specific IPv4 address on that&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0/192.0.2.1&amp;quot;).&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [&amp;quot;eth1&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
        // max retries is set to int64 max as a workaround for kea not supporting&lt;br /&gt;
        // hot plugging of interfaces.&lt;br /&gt;
        &amp;quot;service-sockets-max-retries&amp;quot;: 9223372036854775807,&lt;br /&gt;
        &amp;quot;service-sockets-retry-wait-time&amp;quot;: 2000&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // The rest of this config is omitted for brevity.&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up Routing ==&lt;br /&gt;
=== Enable IP Forwarding ===&lt;br /&gt;
To allow packets to be forwarded between different network interfaces on your Pi, we must enable IP forwarding in the kernel. Do this by adding the line &amp;lt;code&amp;gt;net.ipv4.ip_forward=1&amp;lt;/code&amp;gt; to one of the drop-in files in &amp;lt;code&amp;gt;/etc/sysctl.d/&amp;lt;/code&amp;gt;, or create one and add this line. It&#039;s customary to prefix drop-in file names with a number indicating their priority.&lt;br /&gt;
Editing or creating the drop-in file will require superuser privileges. For example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/sysctl.d/98-ipforward.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, reload your system configuration from config files by running &amp;lt;code&amp;gt;sudo sysctl --system&amp;lt;/code&amp;gt;. Verify that IP forwarding has been successfully enabled&lt;br /&gt;
by running &amp;lt;code&amp;gt;sysctl net.ipv4.ip_forward&amp;lt;/code&amp;gt;, which should print &amp;lt;code&amp;gt;net.ipv4.ip_forward = 1&amp;lt;/code&amp;gt;. If the number is 0 instead of 1, IP forwarding has not been properly enabled, and you should check your drop-in file for typos.&lt;br /&gt;
&lt;br /&gt;
=== Add the routing rule ===&lt;br /&gt;
Next, we need to add a routing rule to allow the clients on the routed subnet to exit via the WireGuard tunnel. The setup steps for creating the tunnel should have created the routing table &amp;lt;code&amp;gt;51820&amp;lt;/code&amp;gt; where the default route is via the WireGuard interface, whatever you&#039;ve named it. Verify that it exists by running the command &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt;. It should have a single line that says something like &amp;lt;code&amp;gt;default dev wg0 scope link&amp;lt;/code&amp;gt;. In this case, &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; is the example WireGuard interface name. Yours may be different. &lt;br /&gt;
&lt;br /&gt;
Run the command &amp;lt;code&amp;gt;sudo ip rule add from &amp;lt;subnet&amp;gt; table 51820&amp;lt;/code&amp;gt;. Replace &amp;lt;code&amp;gt;&amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt; with your routed subnet in CIDR notation. &lt;br /&gt;
&lt;br /&gt;
Verify that your routing is working correctly by running the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip route get 1.1.1.1 from &amp;lt;address&amp;gt; iif &amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; should be replaced by an address in your subnet, and &amp;lt;code&amp;gt;&amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt; with the interface your routed subnet clients are connected to. This command will attempt to find the route to 1.1.1.1 (Cloudflare&#039;s DNS server, an arbitrary test IP) from an IP in the routed subnet. The output should look like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;1.1.1.1 from &amp;lt;address&amp;gt; dev wg0 table 51820&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output indicates that there is no route to host, or that your route does not proceed via the WireGuard interface, you may have an issue with your routing configuration. &lt;br /&gt;
&lt;br /&gt;
This routing rule will not persist between reboots. To make it persist, we can add it to the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit created for the tunnel. After the existing &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; line, add another that executes the rule we just added. Immediately after that one, before the existing &amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line, add an&lt;br /&gt;
&amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line that deletes the rule. This is done by running &amp;lt;code&amp;gt;ip rule del&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;ip rule add&amp;lt;/code&amp;gt;. Your unit should look something like this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=WireGuard single device 44Net Connect tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=true&lt;br /&gt;
&lt;br /&gt;
# Edit these lines if your config file is named differently.&lt;br /&gt;
ExecStart=wg-quick up /etc/wireguard/wg0.conf&lt;br /&gt;
ExecStart=ip rule add from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=ip rule del from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=wg-quick down /etc/wireguard/wg0.conf&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Raspberry_Pi&amp;diff=2698</id>
		<title>44Net Connect/Routed Subnet/Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Raspberry_Pi&amp;diff=2698"/>
		<updated>2026-06-30T23:01:33Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added missing space&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
{{DISPLAYTITLE:44Net Connect Routed Subnet: Raspberry Pi}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Raspberry_Pi | single-device tunnel to your Raspberry Pi]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field. &lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to use a Raspberry Pi as the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter or an ethernet hat. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included&lt;br /&gt;
in Raspberry Pi OS and many other Linux distributions. These configuration steps can be completed using the NetworkManager GUI, but many people operate their Raspberry Pis in &amp;quot;headless&amp;quot; mode (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Pi over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: Setting Up A Wireless Access Point ==&lt;br /&gt;
&lt;br /&gt;
If you have wireless only clients or wish not to purchase additional hardware, the Raspberry Pi&#039;s WiFi interface can be configured as an access point. &lt;br /&gt;
&lt;br /&gt;
After your subnet is approved, you must attach it to your tunnel. Go to your Tunnels tab on 44Net Connect, and click Edit on the tunnel for your routing device. Go to the &amp;quot;Route additional Networks Through This Tunnel&amp;quot; section, and check the box for the subnet you want to use for this tunnel. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Set your wireless regulatory domain === &lt;br /&gt;
Different countries have different rules about which frequencies and bandwidths devices are allowed to use for WiFi.&lt;br /&gt;
Setting the regulatory domain ensures that your Pi will use the right ones, making it work best with nearby devices&lt;br /&gt;
and ensuring regulatory compliance. &lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi OS imager asks you to set the wireless regulatory domain during setup, but does not require it.&lt;br /&gt;
If you didn&#039;t set the regulatory domain in the imager configuration, set it now by running &lt;br /&gt;
&amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; and going to &amp;lt;code&amp;gt;Localisation Options &amp;gt; WLAN Country&amp;lt;/code&amp;gt;. Select your country, confirm, and exit. If you&#039;re not sure whether you set the&lt;br /&gt;
wireless regulatory domain, run the command &amp;lt;code&amp;gt;sudo iw reg get&amp;lt;/code&amp;gt;. Look at the country&lt;br /&gt;
set under &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;. If it says &amp;lt;code&amp;gt;unset&amp;lt;/code&amp;gt;, you have not set the regulatory domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure WiFi settings for your nmcli connection ===&lt;br /&gt;
Set the access point security and password. First, we set the &amp;lt;code&amp;gt;wifi-sec.key-mgmt&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;wpa-psk&amp;lt;/code&amp;gt; to disable the older insecure WEP encryption method. At this point, you will also need to set a password. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.key-mgmt wpa-psk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.psk &amp;lt;password&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For security, leave only WPA2 enabled. By default, the older WPA protocol is enabled for compatibility, but it only supports the less secure TKIP encryption algorithm. Disable it by setting &amp;lt;code&amp;gt;wifi-sec.proto&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;rsn&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.proto rsn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even after disabling the older WPA protocol, WPA2 supports TKIP for compatibility. As an additional security measure, enable only the CCMP encryption algorithm, disabling TKIP. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.pairwise ccmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, set the connection to access point mode and configure it to use your subnet assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; 802-11-wireless.mode ap 802-11-wireless.band &amp;lt;band&amp;gt; ipv4.method manual ipv4.addr &amp;lt;subnet in CIDR notation&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;802-11-wireless.band&amp;lt;/code&amp;gt; setting, choose either &amp;lt;code&amp;gt;bg&amp;lt;/code&amp;gt; for 2.4 GHz or &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; for 5 GHz.&lt;br /&gt;
&lt;br /&gt;
Now we need to disable the current &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; connection and enable our new one. Current connections can be viewed by running &amp;lt;code&amp;gt;nmcli connection&amp;lt;/code&amp;gt;. If your Pi is currently connected to a WiFi network, you&#039;ll see something like &amp;lt;code&amp;gt;netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;. Disable that connection by running the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli conn down netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, enable your new connection by running &amp;lt;code&amp;gt;sudo nmcli conn up &amp;lt;name of connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up DHCP ==&lt;br /&gt;
[https://www.isc.org/kea/ Kea] is the recommended DHCP server for setting up a routed subnet. &amp;lt;code&amp;gt;dhcpd&amp;lt;/code&amp;gt; is deprecated as of 2022. &lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install kea&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After installing, configure its settings by editing &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. This file uses an extended JSON syntax that supports shell style comments using &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, C style single line comments with &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;, and C style multi-line comments with &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Configure Interface ===&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt;, add the interface you want your DHCP server to operate on to the &amp;lt;code&amp;gt;interfaces&amp;lt;/code&amp;gt; list. For example, in a setup using 2 ethernet interfaces, you might have &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; connected to your LAN and &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; connected to your client devices. In this case, you would use &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;. If you&#039;re using the built-in wireless card to broadcast an access point, use &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [ &amp;quot;eth1&amp;quot; ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure DNS === &lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; set at least one DNS server. Cloudflare&#039;s DNS servers are &amp;lt;code&amp;gt;1.1.1.1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.0.0.1&amp;lt;/code&amp;gt;. Google&#039;s DNS servers are &amp;lt;code&amp;gt;8.8.8.8&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;8.8.4.4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domain-name-servers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
    ],&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your subnet === &lt;br /&gt;
&amp;lt;code&amp;gt;subnet4&amp;lt;/code&amp;gt; is a list (denoted with brackets) of structures (denoted with curly brackets) where each structure is one subnet. Inside each subnet structure, set the client IP range(s) in &amp;lt;code&amp;gt;pools&amp;lt;/code&amp;gt;, and define at least one router in the &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; field. Comment out or delete the example DHCP reservations in the &amp;lt;code&amp;gt;reservations&amp;lt;/code&amp;gt; field, since they&#039;re for the wrong subnet. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;subnet4&amp;quot;: [&lt;br /&gt;
    // Put your subnet here in CIDR notation.&lt;br /&gt;
    &amp;quot;subnet&amp;quot;: &amp;quot;44.27.45.128/29&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    // Define the range of client IP addresses here.&lt;br /&gt;
    &amp;quot;pools&amp;quot;: [ { &amp;quot;pool&amp;quot;: &amp;quot;44.27.45.129 - 44.27.45.133&amp;quot; } ],&lt;br /&gt;
&lt;br /&gt;
    // These options are subnet specific. You must configure at least one router.&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;routers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;44.27.45.129&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;reservations&amp;quot;: [&lt;br /&gt;
        // Comment out or delete the examples in this list, since they are for the wrong subnet.&lt;br /&gt;
    ]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Hot Plugging Workaround ===&lt;br /&gt;
At present, &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; does not support hot plugging interfaces. This means that ethernet devices must have at least one client at the time the DHCP server starts, otherwise it will not properly bind to the interface. If you plan on hot plugging ethernet devices on your Pi, this can be worked around by configuring &amp;lt;code&amp;gt;service-sockets-max-retries&amp;lt;/code&amp;gt; to an extremely large number such as 9223372036854775807, the upper limit of a signed 64-bit integer. You may also wish to increase &amp;lt;code&amp;gt;service-sockets-retry-wait-time&amp;lt;/code&amp;gt;, which specifies the retry time in milliseconds, though the default time of 5000 ms is typically fine. These options should go in the &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt; section at the top of your &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; section in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. Here is an example: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    // Add names of your network interfaces to listen on.&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        // See section 8.2.4 for more details. You probably want to add just&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0&amp;quot; or specific IPv4 address on that&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0/192.0.2.1&amp;quot;).&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [&amp;quot;eth1&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
        // max retries is set to int64 max as a workaround for kea not supporting&lt;br /&gt;
        // hot plugging of interfaces.&lt;br /&gt;
        &amp;quot;service-sockets-max-retries&amp;quot;: 9223372036854775807,&lt;br /&gt;
        &amp;quot;service-sockets-retry-wait-time&amp;quot;: 2000&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // The rest of this config is omitted for brevity.&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up Routing ==&lt;br /&gt;
=== Enable IP Forwarding ===&lt;br /&gt;
To allow packets to be forwarded between different network interfaces on your Pi, we must enable IP forwarding in the kernel. Do this by adding the line &amp;lt;code&amp;gt;net.ipv4.ip_forward=1&amp;lt;/code&amp;gt; to one of the drop-in files in &amp;lt;code&amp;gt;/etc/sysctl.d/&amp;lt;/code&amp;gt;. The file &amp;lt;code&amp;gt;98-rpi.conf&amp;lt;/code&amp;gt; exists by default, so&lt;br /&gt;
add the line to that file using your editor of choice. It will require superuser privileges. For example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/sysctl.d/98-rpi.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, reload your system configuration from config files by running &amp;lt;code&amp;gt;sudo sysctl --system&amp;lt;/code&amp;gt;. Verify that IP forwarding has been successfully enabled&lt;br /&gt;
by running &amp;lt;code&amp;gt;sysctl net.ipv4.ip_forward&amp;lt;/code&amp;gt;, which should print &amp;lt;code&amp;gt;net.ipv4.ip_forward = 1&amp;lt;/code&amp;gt;. If the number is 0 instead of 1, IP forwarding has not been properly enabled, and you should check your drop-in file &amp;lt;code&amp;gt;/etc/sysctl.d/98-rpi.conf&amp;lt;/code&amp;gt; for typos.&lt;br /&gt;
&lt;br /&gt;
=== Add the routing rule ===&lt;br /&gt;
Next, we need to add a routing rule to allow the clients on the routed subnet to exit via the WireGuard tunnel. The setup steps for creating the tunnel should have created the routing table &amp;lt;code&amp;gt;51820&amp;lt;/code&amp;gt; where the default route is via the WireGuard interface, whatever you&#039;ve named it. Verify that it exists by running the command &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt;. It should have a single line that says something like &amp;lt;code&amp;gt;default dev wg0 scope link&amp;lt;/code&amp;gt;. In this case, &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; is the example WireGuard interface name. Yours may be different. &lt;br /&gt;
&lt;br /&gt;
Run the command &amp;lt;code&amp;gt;sudo ip rule add from &amp;lt;subnet&amp;gt; table 51820&amp;lt;/code&amp;gt;. Replace &amp;lt;code&amp;gt;&amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt; with your routed subnet in CIDR notation. &lt;br /&gt;
&lt;br /&gt;
Verify that your routing is working correctly by running the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip route get 1.1.1.1 from &amp;lt;address&amp;gt; iif &amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; should be replaced by an address in your subnet, and &amp;lt;code&amp;gt;&amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt; with the interface your routed subnet clients are connected to. This command will attempt to find the route to 1.1.1.1 (Cloudflare&#039;s DNS server, an arbitrary test IP) from an IP in the routed subnet. The output should look like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;1.1.1.1 from &amp;lt;address&amp;gt; dev wg0 table 51820&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output indicates that there is no route to host, or that your route does not proceed via the WireGuard interface, you may have an issue with your routing configuration. &lt;br /&gt;
&lt;br /&gt;
This routing rule will not persist between reboots. To make it persist, we can add it to the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit created for the tunnel. After the existing &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; line, add another that executes the rule we just added. Immediately after that one, before the existing &amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line, add an&lt;br /&gt;
&amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line that deletes the rule. This is done by running &amp;lt;code&amp;gt;ip rule del&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;ip rule add&amp;lt;/code&amp;gt;. Your unit should look something like this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=WireGuard single device 44Net Connect tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=true&lt;br /&gt;
&lt;br /&gt;
# Edit these lines if your config file is named differently.&lt;br /&gt;
ExecStart=wg-quick up /etc/wireguard/wg0.conf&lt;br /&gt;
ExecStart=ip rule add from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=ip rule del from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=wg-quick down /etc/wireguard/wg0.conf&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Devices connected to the Pi are not receiving DHCP addresses === &lt;br /&gt;
Verify that the Kea DHCP server is running: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl status kea-dhcp4-server&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If it&#039;s not running, read its logs on the status screen to see if there were any errors in the configuration file.&lt;br /&gt;
Forgetting to delete the default DHCP reservation examples will cause errors, because those are not in your subnet.&lt;br /&gt;
&lt;br /&gt;
If the DHCP server has started properly, check your &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; configuration in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt; and ensure that your interface, router IP, and IP ranges are set properly.&lt;br /&gt;
&lt;br /&gt;
=== Clients cannot find route to hosts ===&lt;br /&gt;
Run &amp;lt;code&amp;gt;ip rule show&amp;lt;/code&amp;gt; and ensure that: &lt;br /&gt;
# The rule directing your routed subnet to the 51820 table exists &lt;br /&gt;
# That rule&#039;s priority is a lower number (and thus higher priority) than any other rules that would override it, such as the default rule &amp;lt;code&amp;gt;from all lookup main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, inspect the table using &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt; and ensure that its default route is through the WireGuard interface.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2697</id>
		<title>44Net Connect/Routed Subnet/Debian based distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2697"/>
		<updated>2026-06-30T18:47:56Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Pasted in section on configuring DHCP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Debian_based_distributions | single-device tunnel to your machine]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to set up the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter if necessary. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included in most Debian-based distributions by default. These configuration steps can be completed using the NetworkManager GUI, but many people operate a &amp;quot;headless&amp;quot; machine (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Debian machine over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: Setting Up A Wireless Access Point ==&lt;br /&gt;
&lt;br /&gt;
If you have wireless only clients, or wish to utilize an existing WiFi interface in lieu of an additional ethernet interface, you can configure the interface as an access point. &lt;br /&gt;
&lt;br /&gt;
After your subnet is approved, you must attach it to your tunnel. Go to your Tunnels tab on 44Net Connect, and click Edit on the tunnel for your routing device. Go to the &amp;quot;Route additional Networks Through This Tunnel&amp;quot; section, and check the box for the subnet you want to use for this tunnel. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Set your wireless regulatory domain === &lt;br /&gt;
Different countries have different rules about which frequencies and bandwidths devices are allowed to use for WiFi.&lt;br /&gt;
Setting the regulatory domain ensures that your device will use the right ones, making it work best with nearby devices and ensuring regulatory compliance. &lt;br /&gt;
&lt;br /&gt;
Your regulatory domain may have already been set during OS installation. Run&lt;br /&gt;
&amp;lt;code&amp;gt;sudo iw reg get&amp;lt;/code&amp;gt; to check whether it&#039;s been set. Look at the country set under &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;. If it says &amp;lt;code&amp;gt;unset&amp;lt;/code&amp;gt;, you have not set the regulatory domain. &lt;br /&gt;
&lt;br /&gt;
If your regulatory domain has not been set, set it with &amp;lt;code&amp;gt;sudo iw reg set &amp;lt;country code&amp;gt;&amp;lt;/code&amp;gt; where the country code is your [https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 two letter ISO country code].&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure WiFi settings for your nmcli connection ===&lt;br /&gt;
Set the access point security and password. First, we set the &amp;lt;code&amp;gt;wifi-sec.key-mgmt&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;wpa-psk&amp;lt;/code&amp;gt; to disable the older insecure WEP encryption method. At this point, you will also need to set a password. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.key-mgmt wpa-psk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.psk &amp;lt;password&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For security, leave only WPA2 enabled. By default, the older WPA protocol is enabled for compatibility, but it only supports the less secure TKIP encryption algorithm. Disable it by setting &amp;lt;code&amp;gt;wifi-sec.proto&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;rsn&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.proto rsn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even after disabling the older WPA protocol, WPA2 supports TKIP for compatibility. As an additional security measure, enable only the CCMP encryption algorithm, disabling TKIP. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.pairwise ccmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, set the connection to access point mode and configure it to use your subnet assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; 802-11-wireless.mode ap 802-11-wireless.band &amp;lt;band&amp;gt; ipv4.method manual ipv4.addr &amp;lt;subnet in CIDR notation&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;802-11-wireless.band&amp;lt;/code&amp;gt; setting, choose either &amp;lt;code&amp;gt;bg&amp;lt;/code&amp;gt; for 2.4 GHz or &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; for 5 GHz.&lt;br /&gt;
&lt;br /&gt;
Now we need to disable the current &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; connection and enable our new one. Current connections can be viewed by running &amp;lt;code&amp;gt;nmcli connection&amp;lt;/code&amp;gt;. If your device is currently connected to a WiFi network, you&#039;ll see something like &amp;lt;code&amp;gt;netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;. Disable that connection by running the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli conn down netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, enable your new connection by running &amp;lt;code&amp;gt;sudo nmcli conn up &amp;lt;name of connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up DHCP ==&lt;br /&gt;
[https://www.isc.org/kea/ Kea] is the recommended DHCP server for setting up a routed subnet. &amp;lt;code&amp;gt;dhcpd&amp;lt;/code&amp;gt; is deprecated as of 2022. &lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install kea&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After installing, configure its settings by editing &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. This file uses an extended JSON syntax that supports shell style comments using &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, C style single line comments with &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;, and C style multi-line comments with &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Configure Interface ===&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt;, add the interface you want your DHCP server to operate on to the &amp;lt;code&amp;gt;interfaces&amp;lt;/code&amp;gt; list. For example, in a setup using 2 ethernet interfaces, you might have &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; connected to your LAN and &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; connected to your client devices. In this case, you would use &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;. If you&#039;re using the built-in wireless card to broadcast an access point, use &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [ &amp;quot;eth1&amp;quot; ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure DNS === &lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; set at least one DNS server. Cloudflare&#039;s DNS servers are &amp;lt;code&amp;gt;1.1.1.1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.0.0.1&amp;lt;/code&amp;gt;. Google&#039;s DNS servers are &amp;lt;code&amp;gt;8.8.8.8&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;8.8.4.4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domain-name-servers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
    ],&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your subnet === &lt;br /&gt;
&amp;lt;code&amp;gt;subnet4&amp;lt;/code&amp;gt; is a list (denoted with brackets) of structures (denoted with curly brackets) where each structure is one subnet. Inside each subnet structure, set the client IP range(s) in &amp;lt;code&amp;gt;pools&amp;lt;/code&amp;gt;, and define at least one router in the &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; field. Comment out or delete the example DHCP reservations in the &amp;lt;code&amp;gt;reservations&amp;lt;/code&amp;gt; field, since they&#039;re for the wrong subnet. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;subnet4&amp;quot;: [&lt;br /&gt;
    // Put your subnet here in CIDR notation.&lt;br /&gt;
    &amp;quot;subnet&amp;quot;: &amp;quot;44.27.45.128/29&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    // Define the range of client IP addresses here.&lt;br /&gt;
    &amp;quot;pools&amp;quot;: [ { &amp;quot;pool&amp;quot;: &amp;quot;44.27.45.129 - 44.27.45.133&amp;quot; } ],&lt;br /&gt;
&lt;br /&gt;
    // These options are subnet specific. You must configure at least one router.&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;routers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;44.27.45.129&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;reservations&amp;quot;: [&lt;br /&gt;
        // Comment out or delete the examples in this list, since they are for the wrong subnet.&lt;br /&gt;
    ]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Hot Plugging Workaround ===&lt;br /&gt;
At present, &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; does not support hot plugging interfaces. This means that ethernet devices must have at least one client at the time the DHCP server starts, otherwise it will not properly bind to the interface. If you plan on hot plugging ethernet devices on your Pi, this can be worked around by configuring &amp;lt;code&amp;gt;service-sockets-max-retries&amp;lt;/code&amp;gt; to an extremely large number such as 9223372036854775807, the upper limit of a signed 64-bit integer. You may also wish to increase &amp;lt;code&amp;gt;service-sockets-retry-wait-time&amp;lt;/code&amp;gt;, which specifies the retry time in milliseconds, though the default time of 5000 ms is typically fine. These options should go in the &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt; section at the top of your &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; section in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. Here is an example: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    // Add names of your network interfaces to listen on.&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        // See section 8.2.4 for more details. You probably want to add just&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0&amp;quot; or specific IPv4 address on that&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0/192.0.2.1&amp;quot;).&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [&amp;quot;eth1&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
        // max retries is set to int64 max as a workaround for kea not supporting&lt;br /&gt;
        // hot plugging of interfaces.&lt;br /&gt;
        &amp;quot;service-sockets-max-retries&amp;quot;: 9223372036854775807,&lt;br /&gt;
        &amp;quot;service-sockets-retry-wait-time&amp;quot;: 2000&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // The rest of this config is omitted for brevity.&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2696</id>
		<title>44Net Connect/Routed Subnet/Debian based distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2696"/>
		<updated>2026-06-30T18:45:55Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Filled out section on configuring WiFi interface for access point mode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Debian_based_distributions | single-device tunnel to your machine]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to set up the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter if necessary. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included in most Debian-based distributions by default. These configuration steps can be completed using the NetworkManager GUI, but many people operate a &amp;quot;headless&amp;quot; machine (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Debian machine over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: Setting Up A Wireless Access Point ==&lt;br /&gt;
&lt;br /&gt;
If you have wireless only clients, or wish to utilize an existing WiFi interface in lieu of an additional ethernet interface, you can configure the interface as an access point. &lt;br /&gt;
&lt;br /&gt;
After your subnet is approved, you must attach it to your tunnel. Go to your Tunnels tab on 44Net Connect, and click Edit on the tunnel for your routing device. Go to the &amp;quot;Route additional Networks Through This Tunnel&amp;quot; section, and check the box for the subnet you want to use for this tunnel. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Set your wireless regulatory domain === &lt;br /&gt;
Different countries have different rules about which frequencies and bandwidths devices are allowed to use for WiFi.&lt;br /&gt;
Setting the regulatory domain ensures that your device will use the right ones, making it work best with nearby devices and ensuring regulatory compliance. &lt;br /&gt;
&lt;br /&gt;
Your regulatory domain may have already been set during OS installation. Run&lt;br /&gt;
&amp;lt;code&amp;gt;sudo iw reg get&amp;lt;/code&amp;gt; to check whether it&#039;s been set. Look at the country set under &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;. If it says &amp;lt;code&amp;gt;unset&amp;lt;/code&amp;gt;, you have not set the regulatory domain. &lt;br /&gt;
&lt;br /&gt;
If your regulatory domain has not been set, set it with &amp;lt;code&amp;gt;sudo iw reg set &amp;lt;country code&amp;gt;&amp;lt;/code&amp;gt; where the country code is your [https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 two letter ISO country code].&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure WiFi settings for your nmcli connection ===&lt;br /&gt;
Set the access point security and password. First, we set the &amp;lt;code&amp;gt;wifi-sec.key-mgmt&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;wpa-psk&amp;lt;/code&amp;gt; to disable the older insecure WEP encryption method. At this point, you will also need to set a password. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.key-mgmt wpa-psk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.psk &amp;lt;password&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For security, leave only WPA2 enabled. By default, the older WPA protocol is enabled for compatibility, but it only supports the less secure TKIP encryption algorithm. Disable it by setting &amp;lt;code&amp;gt;wifi-sec.proto&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;rsn&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.proto rsn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even after disabling the older WPA protocol, WPA2 supports TKIP for compatibility. As an additional security measure, enable only the CCMP encryption algorithm, disabling TKIP. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.pairwise ccmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, set the connection to access point mode and configure it to use your subnet assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; 802-11-wireless.mode ap 802-11-wireless.band &amp;lt;band&amp;gt; ipv4.method manual ipv4.addr &amp;lt;subnet in CIDR notation&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;802-11-wireless.band&amp;lt;/code&amp;gt; setting, choose either &amp;lt;code&amp;gt;bg&amp;lt;/code&amp;gt; for 2.4 GHz or &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; for 5 GHz.&lt;br /&gt;
&lt;br /&gt;
Now we need to disable the current &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; connection and enable our new one. Current connections can be viewed by running &amp;lt;code&amp;gt;nmcli connection&amp;lt;/code&amp;gt;. If your device is currently connected to a WiFi network, you&#039;ll see something like &amp;lt;code&amp;gt;netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;. Disable that connection by running the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli conn down netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, enable your new connection by running &amp;lt;code&amp;gt;sudo nmcli conn up &amp;lt;name of connection&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Raspberry_Pi&amp;diff=2695</id>
		<title>44Net Connect/Routed Subnet/Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Raspberry_Pi&amp;diff=2695"/>
		<updated>2026-06-30T18:29:02Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Grammatical fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
{{DISPLAYTITLE:44Net Connect Routed Subnet: Raspberry Pi}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Raspberry_Pi | single-device tunnel to your Raspberry Pi]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field. &lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to use a Raspberry Pi as the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter or an ethernet hat. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included&lt;br /&gt;
in Raspberry Pi OS and many other Linux distributions. These configuration steps can be completed using the NetworkManager GUI, but many people operate their Raspberry Pis in &amp;quot;headless&amp;quot; mode (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Pi over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: Setting Up A Wireless Access Point ==&lt;br /&gt;
&lt;br /&gt;
If you have wireless only clients or wish not to purchase additional hardware, the Raspberry Pi&#039;s WiFi interface can be configured as an access point. &lt;br /&gt;
&lt;br /&gt;
After your subnet is approved, you must attach it to your tunnel. Go to your Tunnels tab on 44Net Connect, and click Edit on the tunnel for your routing device. Go to the &amp;quot;Route additional Networks Through This Tunnel&amp;quot; section, and check the box for the subnet you want to use for this tunnel. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Set your wireless regulatory domain === &lt;br /&gt;
Different countries have different rules about which frequencies and bandwidths devices are allowed to use for WiFi.&lt;br /&gt;
Setting the regulatory domain ensures that your Pi will use the right ones, making it work best with nearby devices&lt;br /&gt;
and ensuring regulatory compliance. &lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi OS imager asks you to set the wireless regulatory domain during setup, but does not require it.&lt;br /&gt;
If you didn&#039;t set the regulatory domain in the imager configuration, set it now by running &lt;br /&gt;
&amp;lt;code&amp;gt;sudo raspi-config&amp;lt;/code&amp;gt; and going to &amp;lt;code&amp;gt;Localisation Options &amp;gt; WLAN Country&amp;lt;/code&amp;gt;. Select your country, confirm, and exit. If you&#039;re not sure whether you set the&lt;br /&gt;
wireless regulatory domain, run the command &amp;lt;code&amp;gt;sudo iw reg get&amp;lt;/code&amp;gt;. Look at the country&lt;br /&gt;
set under &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt;. If it says &amp;lt;code&amp;gt;unset&amp;lt;/code&amp;gt;, you have not set the regulatory domain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure WiFi settings for your nmcli connection ===&lt;br /&gt;
Set the access point security and password. First, we set the &amp;lt;code&amp;gt;wifi-sec.key-mgmt&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;wpa-psk&amp;lt;/code&amp;gt; to disable the older insecure WEP encryption method. At this point, you will also need to set a password. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.key-mgmt wpa-psk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.psk &amp;lt;password&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For security, leave only WPA2 enabled. By default, the older WPA protocol is enabled for compatibility, but it only supports the less secure TKIP encryption algorithm. Disable it by setting &amp;lt;code&amp;gt;wifi-sec.proto&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;rsn&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.proto rsn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even after disabling the older WPA protocol, WPA2 supports TKIP for compatibility. As an additional security measure, enable only the CCMP encryption algorithm, disabling TKIP. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; wifi-sec.pairwise ccmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, set the connection to access point mode and configure it to use your subnet assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;connection name&amp;gt; 802-11-wireless.mode ap 802-11-wireless.band &amp;lt;band&amp;gt; ipv4.method manual ipv4.addr &amp;lt;subnet in CIDR notation&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;802-11-wireless.band&amp;lt;/code&amp;gt; setting, choose either &amp;lt;code&amp;gt;bg&amp;lt;/code&amp;gt; for 2.4 GHz or &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; for 5 GHz.&lt;br /&gt;
&lt;br /&gt;
Now we need to disable the current &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; connection and enable our new one. Current connections can be viewed by running &amp;lt;code&amp;gt;nmcli connection&amp;lt;/code&amp;gt;. If your Pi is currently connected to a WiFi network, you&#039;ll see something like &amp;lt;code&amp;gt;netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;. Disable that connection by running the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli conn down netplan-wlan0-&amp;lt;name of your wifi network&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, enable your new connection by running &amp;lt;code&amp;gt;sudo nmcli conn up &amp;lt;name of connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up DHCP ==&lt;br /&gt;
[https://www.isc.org/kea/ Kea] is the recommended DHCP server for setting up a routed subnet. &amp;lt;code&amp;gt;dhcpd&amp;lt;/code&amp;gt; is deprecated as of 2022. &lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; by running &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install kea&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After installing, configure its settings by editing &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. This file uses an extended JSON syntax that supports shell style comments using &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, C style single line comments with &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;, and C style multi-line comments with &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Configure Interface ===&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt;, add the interface you want your DHCP server to operate on to the &amp;lt;code&amp;gt;interfaces&amp;lt;/code&amp;gt; list. For example, in a setup using 2 ethernet interfaces, you might have &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; connected to your LAN and &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; connected to your client devices. In this case, you would use &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;. If you&#039;re using the built-in wireless card to broadcast an access point, use &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [ &amp;quot;eth1&amp;quot; ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure DNS === &lt;br /&gt;
Inside the &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; struct, under &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; set at least one DNS server. Cloudflare&#039;s DNS servers are &amp;lt;code&amp;gt;1.1.1.1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.0.0.1&amp;lt;/code&amp;gt;. Google&#039;s DNS servers are &amp;lt;code&amp;gt;8.8.8.8&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;8.8.4.4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;domain-name-servers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
    ],&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure your subnet === &lt;br /&gt;
&amp;lt;code&amp;gt;subnet4&amp;lt;/code&amp;gt; is a list (denoted with brackets) of structures (denoted with curly brackets) where each structure is one subnet. Inside each subnet structure, set the client IP range(s) in &amp;lt;code&amp;gt;pools&amp;lt;/code&amp;gt;, and define at least one router in the &amp;lt;code&amp;gt;option-data&amp;lt;/code&amp;gt; field. Comment out or delete the example DHCP reservations in the &amp;lt;code&amp;gt;reservations&amp;lt;/code&amp;gt; field, since they&#039;re for the wrong subnet. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;subnet4&amp;quot;: [&lt;br /&gt;
    // Put your subnet here in CIDR notation.&lt;br /&gt;
    &amp;quot;subnet&amp;quot;: &amp;quot;44.27.45.128/29&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    // Define the range of client IP addresses here.&lt;br /&gt;
    &amp;quot;pools&amp;quot;: [ { &amp;quot;pool&amp;quot;: &amp;quot;44.27.45.129 - 44.27.45.133&amp;quot; } ],&lt;br /&gt;
&lt;br /&gt;
    // These options are subnet specific. You must configure at least one router.&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;routers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;44.27.45.129&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;reservations&amp;quot;: [&lt;br /&gt;
        // Comment out or delete the examples in this list, since they are for the wrong subnet.&lt;br /&gt;
    ]&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Hot Plugging Workaround ===&lt;br /&gt;
At present, &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; does not support hot plugging interfaces. This means that ethernet devices must have at least one client at the time the DHCP server starts, otherwise it will not properly bind to the interface. If you plan on hot plugging ethernet devices on your Pi, this can be worked around by configuring &amp;lt;code&amp;gt;service-sockets-max-retries&amp;lt;/code&amp;gt; to an extremely large number such as 9223372036854775807, the upper limit of a signed 64-bit integer. You may also wish to increase &amp;lt;code&amp;gt;service-sockets-retry-wait-time&amp;lt;/code&amp;gt;, which specifies the retry time in milliseconds, though the default time of 5000 ms is typically fine. These options should go in the &amp;lt;code&amp;gt;interfaces-config&amp;lt;/code&amp;gt; section at the top of your &amp;lt;code&amp;gt;Dhcp4&amp;lt;/code&amp;gt; section in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt;. Here is an example: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    // Add names of your network interfaces to listen on.&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
        // See section 8.2.4 for more details. You probably want to add just&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0&amp;quot; or specific IPv4 address on that&lt;br /&gt;
        // interface name (e.g. &amp;quot;eth0/192.0.2.1&amp;quot;).&lt;br /&gt;
        &amp;quot;interfaces&amp;quot;: [&amp;quot;eth1&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
        // max retries is set to int64 max as a workaround for kea not supporting&lt;br /&gt;
        // hot plugging of interfaces.&lt;br /&gt;
        &amp;quot;service-sockets-max-retries&amp;quot;: 9223372036854775807,&lt;br /&gt;
        &amp;quot;service-sockets-retry-wait-time&amp;quot;: 2000&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // The rest of this config is omitted for brevity.&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up Routing ==&lt;br /&gt;
=== Enable IP Forwarding ===&lt;br /&gt;
To allow packets to be forwarded between different network interfaces on your Pi, we must enable IP forwarding in the kernel. Do this by adding the line &amp;lt;code&amp;gt;net.ipv4.ip_forward=1&amp;lt;/code&amp;gt; to one of the drop-in files in &amp;lt;code&amp;gt;/etc/sysctl.d/&amp;lt;/code&amp;gt;. The file &amp;lt;code&amp;gt;98-rpi.conf&amp;lt;/code&amp;gt; exists by default, so&lt;br /&gt;
add the line to thatfile using your editor of choice. It will require superuser privileges. For example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nano /etc/sysctl.d/98-rpi.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, reload your system configuration from config files by running &amp;lt;code&amp;gt;sudo sysctl --system&amp;lt;/code&amp;gt;. Verify that IP forwarding has been successfully enabled&lt;br /&gt;
by running &amp;lt;code&amp;gt;sysctl net.ipv4.ip_forward&amp;lt;/code&amp;gt;, which should print &amp;lt;code&amp;gt;net.ipv4.ip_forward = 1&amp;lt;/code&amp;gt;. If the number is 0 instead of 1, IP forwarding has not been properly enabled, and you should check your drop-in file &amp;lt;code&amp;gt;/etc/sysctl.d/98-rpi.conf&amp;lt;/code&amp;gt; for typos.&lt;br /&gt;
&lt;br /&gt;
=== Add the routing rule ===&lt;br /&gt;
Next, we need to add a routing rule to allow the clients on the routed subnet to exit via the WireGuard tunnel. The setup steps for creating the tunnel should have created the routing table &amp;lt;code&amp;gt;51820&amp;lt;/code&amp;gt; where the default route is via the WireGuard interface, whatever you&#039;ve named it. Verify that it exists by running the command &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt;. It should have a single line that says something like &amp;lt;code&amp;gt;default dev wg0 scope link&amp;lt;/code&amp;gt;. In this case, &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; is the example WireGuard interface name. Yours may be different. &lt;br /&gt;
&lt;br /&gt;
Run the command &amp;lt;code&amp;gt;sudo ip rule add from &amp;lt;subnet&amp;gt; table 51820&amp;lt;/code&amp;gt;. Replace &amp;lt;code&amp;gt;&amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt; with your routed subnet in CIDR notation. &lt;br /&gt;
&lt;br /&gt;
Verify that your routing is working correctly by running the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip route get 1.1.1.1 from &amp;lt;address&amp;gt; iif &amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; should be replaced by an address in your subnet, and &amp;lt;code&amp;gt;&amp;lt;subnet interface&amp;gt;&amp;lt;/code&amp;gt; with the interface your routed subnet clients are connected to. This command will attempt to find the route to 1.1.1.1 (Cloudflare&#039;s DNS server, an arbitrary test IP) from an IP in the routed subnet. The output should look like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;1.1.1.1 from &amp;lt;address&amp;gt; dev wg0 table 51820&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the output indicates that there is no route to host, or that your route does not proceed via the WireGuard interface, you may have an issue with your routing configuration. &lt;br /&gt;
&lt;br /&gt;
This routing rule will not persist between reboots. To make it persist, we can add it to the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit created for the tunnel. After the existing &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; line, add another that executes the rule we just added. Immediately after that one, before the existing &amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line, add an&lt;br /&gt;
&amp;lt;code&amp;gt;ExecStop&amp;lt;/code&amp;gt; line that deletes the rule. This is done by running &amp;lt;code&amp;gt;ip rule del&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;ip rule add&amp;lt;/code&amp;gt;. Your unit should look something like this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=WireGuard single device 44Net Connect tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=true&lt;br /&gt;
&lt;br /&gt;
# Edit these lines if your config file is named differently.&lt;br /&gt;
ExecStart=wg-quick up /etc/wireguard/wg0.conf&lt;br /&gt;
ExecStart=ip rule add from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=ip rule del from 44.27.45.129/29 lookup 51820&lt;br /&gt;
ExecStop=wg-quick down /etc/wireguard/wg0.conf&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Devices connected to the Pi are not receiving DHCP addresses === &lt;br /&gt;
Verify that the Kea DHCP server is running: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl status kea-dhcp4-server&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If it&#039;s not running, read its logs on the status screen to see if there were any errors in the configuration file.&lt;br /&gt;
Forgetting to delete the default DHCP reservation examples will cause errors, because those are not in your subnet.&lt;br /&gt;
&lt;br /&gt;
If the DHCP server has started properly, check your &amp;lt;code&amp;gt;kea&amp;lt;/code&amp;gt; configuration in &amp;lt;code&amp;gt;/etc/kea/kea-dhcp4.conf&amp;lt;/code&amp;gt; and ensure that your interface, router IP, and IP ranges are set properly.&lt;br /&gt;
&lt;br /&gt;
=== Clients cannot find route to hosts ===&lt;br /&gt;
Run &amp;lt;code&amp;gt;ip rule show&amp;lt;/code&amp;gt; and ensure that: &lt;br /&gt;
# The rule directing your routed subnet to the 51820 table exists &lt;br /&gt;
# That rule&#039;s priority is a lower number (and thus higher priority) than any other rules that would override it, such as the default rule &amp;lt;code&amp;gt;from all lookup main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, inspect the table using &amp;lt;code&amp;gt;ip route show table 51820&amp;lt;/code&amp;gt; and ensure that its default route is through the WireGuard interface.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2694</id>
		<title>44Net Connect/Routed Subnet/Debian based distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2694"/>
		<updated>2026-06-30T18:28:04Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Removed extra new line&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Debian_based_distributions | single-device tunnel to your machine]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to set up the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter if necessary. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them.&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included in most Debian-based distributions by default. These configuration steps can be completed using the NetworkManager GUI, but many people operate a &amp;quot;headless&amp;quot; machine (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Debian machine over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2693</id>
		<title>44Net Connect/Routed Subnet/Debian based distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet/Debian_based_distributions&amp;diff=2693"/>
		<updated>2026-06-30T18:27:39Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Copied in prerequisite section through network interface setup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites == &lt;br /&gt;
Set up a [[44Net_Connect/Quick_Start/Debian_based_distributions | single-device tunnel to your machine]].&lt;br /&gt;
Note the IP and name of your WireGuard interface. The name of your WireGuard interface is the same as the name&lt;br /&gt;
of your config file. For example, if your config file is &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;, then your&lt;br /&gt;
interface name is &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;. The IP of your WireGuard interface can be obtained from running &amp;lt;code&amp;gt;ifconfig &amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt; and finding the IP listed under the interface in the &amp;lt;code&amp;gt;inet&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
Below is some example output of &amp;lt;code&amp;gt;ifconfig wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
wg0: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1380&lt;br /&gt;
    inet 44.27.133.190  netmask 255.255.255.255  destination 44.27.133.190&lt;br /&gt;
    inet6 fe80::f728:a0b0:3af5:b5c6  prefixlen 128  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)&lt;br /&gt;
    RX packets 17331  bytes 5865364 (5.5 MiB)&lt;br /&gt;
    RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
    TX packets 13389  bytes 2146828 (2.0 MiB)&lt;br /&gt;
    TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Request a Subnet == &lt;br /&gt;
Go to the [https://connect.44net.cloud/networks Network tab] of 44Net Connect, and request a network. Requests up to a /28 (16 IPs) are automatically approved. It&#039;s recommended to request at least a /29 (8 IPs), since at least 2 of your IPs must be set aside for network and broadcast addresses. That way, you have at least 6 usable addresses for your hosts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setting Up The Network Interface == &lt;br /&gt;
The recommended way to set up the router for your subnet is with two ethernet interfaces. The second can be provided by a USB ethernet adapter if necessary. This section has the steps that are required regardless of whether you&#039;re using ethernet or WiFi. If you&#039;re using WiFi, you&#039;ll also need the steps in the following section. Otherwise, you can skip them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Create a new connection in nmcli ===&lt;br /&gt;
&amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; is the CLI interface for NetworkManager, which is the high level network configuration tool included in most Debian-based distributions by default. These configuration steps can be completed using the NetworkManager GUI, but many people operate a &amp;quot;headless&amp;quot; machine (without a screen or keyboard) and use SSH to remotely configure it. Thus, this tutorial uses a CLI tool to accommodate that use case. &lt;br /&gt;
An &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; &amp;quot;connection&amp;quot; is an abstraction representing a network configuration attached to a device. Create a new connection by running&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con add conn-name &amp;lt;name&amp;gt; ifname &amp;lt;interface name&amp;gt; type &amp;lt;type&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can name the connection whatever you like, but it&#039;s recommended to name it something descriptive. For example, if you&#039;re configuring a 44net routed subnet for &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, you might name it &amp;lt;code&amp;gt;44net-eth1&amp;lt;/code&amp;gt;. The interface name is the name of the interface you&#039;re using, as described by &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt;. The type is either &amp;lt;code&amp;gt;wifi&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ethernet&amp;lt;/code&amp;gt;. For a WiFi interface, you must also specify the BSSID (network name) by adding the parameter &amp;lt;code&amp;gt;ssid &amp;lt;BSSID&amp;gt;&amp;lt;/code&amp;gt; at the end. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Configure the IP ===&lt;br /&gt;
Set the IPv4 method to manual using the following command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.method manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, set the IP range for this interface. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con modify &amp;lt;name&amp;gt; ipv4.address &amp;lt;subnet&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your subnet should be specified in CIDR notation. At this point, if you&#039;re configuring an ethernet interface, you&#039;re ready to start it up. If you&#039;re configuring a WiFi interface, don&#039;t start your interface yet, and move on to the next section for additional configuration.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Starting the Interface ===&lt;br /&gt;
First, disable the existing connection, which is likely named &amp;lt;code&amp;gt;netplan-&amp;lt;interface&amp;gt;&amp;lt;/code&amp;gt;. If you&#039;re using &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; for your 44net clients, it may look like &amp;lt;code&amp;gt;netplan-eth1&amp;lt;/code&amp;gt;. If you are configuring your Debian machine over SSH, be careful not to deactivate the connection over which your SSH is traveling. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con down &amp;lt;name of existing connection&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After deactivating the regular connection, activate your new connection. If this succeeds, you&#039;re good to go. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nmcli con up &amp;lt;name of new connection&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet&amp;diff=2692</id>
		<title>44Net Connect/Routed Subnet</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Routed_Subnet&amp;diff=2692"/>
		<updated>2026-06-30T17:51:38Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added link to Debian-based distros page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is a routed subnet? ==&lt;br /&gt;
A routed subnet is a group of devices that are placed behind a router that directs traffic to their 44Net IP addresses. The router is provided with a WireGuard tunnel configuration that connects it to one of ARDC&#039;s nodes. In a typical routed subnet, all traffic from the devices in the subnet is routed through 44Net via the router. Devices do not have individual control over which traffic is proxied through the 44Net node. The router with the tunnel is in control of this. &lt;br /&gt;
&lt;br /&gt;
[[File:Routed_subnet.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== When should I use a routed subnet? == &lt;br /&gt;
If you have many devices to manage, or one of your devices is not capable of running WireGuard, a routed subnet is a good choice. A routed subnet eliminates the complexity of managing configuration for many individual devices, since there is only the router&#039;s configuration. &lt;br /&gt;
&lt;br /&gt;
In some applications, it is important that all traffic associated with a service appear to come from the same public address. In those cases, a full-tunnel configuration or a gateway model may be more appropriate than per-host split tunneling.&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
* [[44Net_Connect/Routed_Subnet/Raspberry_Pi | Raspberry Pi]]&lt;br /&gt;
* [[44Net_Connect/Routed_Subnet/Debian_based_distributions | Debian-based distributions]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Topology]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
</feed>