<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.cursedsilicon.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Snep</id>
	<title>Cursed Silicons Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cursedsilicon.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Snep"/>
	<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/wiki/Special:Contributions/Snep"/>
	<updated>2026-05-06T12:31:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=347</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=347"/>
		<updated>2026-03-22T00:17:39Z</updated>

		<summary type="html">&lt;p&gt;Snep: Remove left-over section from previously removed OPNsense section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Since the service is in &amp;quot;open beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: ===&lt;br /&gt;
[[Signup|&#039;&#039;&#039;Let us know you&#039;d like to connect!&#039;&#039;&#039;]] &lt;br /&gt;
&lt;br /&gt;
(We&#039;ll need information from you such as your Wireguard Pubkey to let you connect to the network)[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router: &amp;lt;code&amp;gt;wget https://cghmn.snep.zip/connect.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## Reboot the router, this step is necessary if you intend to use the web UI for any other configuration or see the status of the CGHMN connection, to make LuCI recognize Wireguard connections.&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface and the default &amp;lt;code&amp;gt;br-lan&amp;lt;/code&amp;gt; or any other bridge the interface might belong to, to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Head over to https://signup.cghmn.org, fill out the form there with your details like an e-mail address we can reach you under and copy over the Wireguard public key from the script output into the appropriate field on the web page. Once your request has been approved, you&#039;ll receive an e-mail with your CGHMN Wireguard connections details. Note: If you cannot copy-paste, for example, because you&#039;re on a VM VNC console, you can run &amp;lt;code&amp;gt;ash setup-cghmn.sh pubkey-qr&amp;lt;/code&amp;gt; to get a QR code with your public key, which can be scanned with a phone, tablet or software QR code parser to get the key as copy-pastable text.&lt;br /&gt;
# In the e-mail from your sign-up server post approval, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.65.x.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.68.x.0/24&amp;lt;/code&amp;gt; and up). These will be needed on the next step&lt;br /&gt;
# Run &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;, enter your new tunnel IP address with or without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; subnet mask, enter your routed subnet &#039;&#039;&#039;with&#039;&#039;&#039; the CIDR netmask and supply your pre-shared key from the e-mail.&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
=== Get Connected - Manually (Linux, Wireguard/IP traffic only) ===&lt;br /&gt;
In case you want to setup a connection into the network manually, here are the required steps and information you should be needing:&lt;br /&gt;
&lt;br /&gt;
* Generate a Wireguard private key and public key, this command writes a fresh Wireguard private key to &amp;lt;code&amp;gt;private-key&amp;lt;/code&amp;gt; and the corresponsing public key to &amp;lt;code&amp;gt;public-key&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ wg genkey | tee private-key | wg pubkey &amp;gt; public-key&lt;br /&gt;
&lt;br /&gt;
* NEVER share your private key, even with us! It should never be required outside of your own Wireguard setup!&lt;br /&gt;
* You will, however, need to share your public key with us. Head over to https://signup.cghmn.org, fill out the forms with some details like an e-mail address we can reach you under and paste the newly generated public key into the public key field.&lt;br /&gt;
* After submitting your request, we&#039;ll approve it as soon as possible and you&#039;ll get two IP addresses sent over to your specified e-mail: Your tunnel IP address, with which &#039;&#039;your&#039;&#039; router talks to &#039;&#039;our&#039;&#039; router, and a routed subnet, from which you can assign IPs to your own machines so they can talk to other CGHMN member devices on the network without NAT in the way.&lt;br /&gt;
* In the e-mail, you will also find a full Wireguard configuration looking a little like this:&lt;br /&gt;
&lt;br /&gt;
 [Interface]&lt;br /&gt;
 PrivateKey = xxx&lt;br /&gt;
 Address = 100.65.0.xxx/32&lt;br /&gt;
 &lt;br /&gt;
 [Peer]&lt;br /&gt;
 PublicKey = k/QiJIbMakMKgTCHVt8/D+8k4DzRVM6U33F3gMZfRUg=&lt;br /&gt;
 Endpoint = us.wg.cghmn.org:42070&lt;br /&gt;
 AllowedIPs = 100.64.0.0/10&lt;br /&gt;
 PersistentKeepalive = 15&lt;br /&gt;
 PresharedKey = xxx&lt;br /&gt;
&lt;br /&gt;
* Copy this configuration to a file, &amp;lt;code&amp;gt;wg-cghmn.conf&amp;lt;/code&amp;gt;, for example.&lt;br /&gt;
* If you use wg-quick like below, you can also add the line &amp;lt;code&amp;gt;DNS = 100.64.12.2&amp;lt;/code&amp;gt; in the [Interface] section to make use of our DNS resolvers and access other CGHMN member&#039;s services through domain names, though be adviced that we cannot guarantee public internet address lookups, which means this might break internet access for the host you&#039;re opening this Wireguard tunnel from! Alternatively, for advanced users, one can setup dnsmasq to automatically pull any domains we offer within the CGHMN and forward them to our DNS resolvers with the help of [https://raw.githubusercontent.com/CGHMN/openwrt-scripts/refs/heads/main/dns/update-dns-forwards.sh this script from our GitHub] and having it being run periodically through cron, systemd-timers or similar. See [[CGHMN DNS Information#dnsmasq Synchronization Script|this Wiki article]] for more information.&lt;br /&gt;
* Then, run &amp;lt;code&amp;gt;wg-quick up ./wg-cghmn.conf&amp;lt;/code&amp;gt;, perhaps requiring &amp;lt;code&amp;gt;doas&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;, to bring the tunnel up and connect to the network!&lt;br /&gt;
&lt;br /&gt;
This should bring whatever system you&#039;ve set the tunnel up on onto the network and is now reachable for other members on the network, as long as the firewall on your device is congfigured accordingly, of course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;TODO: Add example of routed subnet configuration, perhaps on a different Wiki site&lt;br /&gt;
&lt;br /&gt;
=== After you get connected ===&lt;br /&gt;
There are a few optional things you might want to do.&lt;br /&gt;
&lt;br /&gt;
==== Network mailing list ====&lt;br /&gt;
There is a mailing list you can subscribe to if you want to be notified about things that may affect CGHMN or core services. You can subscribe to the list here: https://berwick-upon-tweed.cobaltqu.be/postorius/lists/cghmn-announce.lists.cobaltqu.be/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need to post to the list, you will need to subscribe before you can be added to the list of poster.&lt;br /&gt;
&lt;br /&gt;
==== Explore things available on the network ====&lt;br /&gt;
There is a collection of [[services people are running]] - things like email/hosting/chat/search/etc.&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=346</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=346"/>
		<updated>2026-03-22T00:17:04Z</updated>

		<summary type="html">&lt;p&gt;Snep: Add DNS information to the manually configured Wireguard section, include the sign-up page and remove the obsolete OPNsense admin part of the manual connection guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Since the service is in &amp;quot;open beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: ===&lt;br /&gt;
[[Signup|&#039;&#039;&#039;Let us know you&#039;d like to connect!&#039;&#039;&#039;]] &lt;br /&gt;
&lt;br /&gt;
(We&#039;ll need information from you such as your Wireguard Pubkey to let you connect to the network)[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router: &amp;lt;code&amp;gt;wget https://cghmn.snep.zip/connect.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## Reboot the router, this step is necessary if you intend to use the web UI for any other configuration or see the status of the CGHMN connection, to make LuCI recognize Wireguard connections.&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface and the default &amp;lt;code&amp;gt;br-lan&amp;lt;/code&amp;gt; or any other bridge the interface might belong to, to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Head over to https://signup.cghmn.org, fill out the form there with your details like an e-mail address we can reach you under and copy over the Wireguard public key from the script output into the appropriate field on the web page. Once your request has been approved, you&#039;ll receive an e-mail with your CGHMN Wireguard connections details. Note: If you cannot copy-paste, for example, because you&#039;re on a VM VNC console, you can run &amp;lt;code&amp;gt;ash setup-cghmn.sh pubkey-qr&amp;lt;/code&amp;gt; to get a QR code with your public key, which can be scanned with a phone, tablet or software QR code parser to get the key as copy-pastable text.&lt;br /&gt;
# In the e-mail from your sign-up server post approval, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.65.x.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.68.x.0/24&amp;lt;/code&amp;gt; and up). These will be needed on the next step&lt;br /&gt;
# Run &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;, enter your new tunnel IP address with or without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; subnet mask, enter your routed subnet &#039;&#039;&#039;with&#039;&#039;&#039; the CIDR netmask and supply your pre-shared key from the e-mail.&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
=== Get Connected - Manually (Linux, Wireguard/IP traffic only) ===&lt;br /&gt;
In case you want to setup a connection into the network manually, here are the required steps and information you should be needing:&lt;br /&gt;
&lt;br /&gt;
* Generate a Wireguard private key and public key, this command writes a fresh Wireguard private key to &amp;lt;code&amp;gt;private-key&amp;lt;/code&amp;gt; and the corresponsing public key to &amp;lt;code&amp;gt;public-key&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ wg genkey | tee private-key | wg pubkey &amp;gt; public-key&lt;br /&gt;
&lt;br /&gt;
* NEVER share your private key, even with us! It should never be required outside of your own Wireguard setup!&lt;br /&gt;
* You will, however, need to share your public key with us. Head over to https://signup.cghmn.org, fill out the forms with some details like an e-mail address we can reach you under and paste the newly generated public key into the public key field.&lt;br /&gt;
* After submitting your request, we&#039;ll approve it as soon as possible and you&#039;ll get two IP addresses sent over to your specified e-mail: Your tunnel IP address, with which &#039;&#039;your&#039;&#039; router talks to &#039;&#039;our&#039;&#039; router, and a routed subnet, from which you can assign IPs to your own machines so they can talk to other CGHMN member devices on the network without NAT in the way.&lt;br /&gt;
* In the e-mail, you will also find a full Wireguard configuration looking a little like this:&lt;br /&gt;
&lt;br /&gt;
 [Interface]&lt;br /&gt;
 PrivateKey = xxx&lt;br /&gt;
 Address = 100.65.0.xxx/32&lt;br /&gt;
 &lt;br /&gt;
 [Peer]&lt;br /&gt;
 PublicKey = k/QiJIbMakMKgTCHVt8/D+8k4DzRVM6U33F3gMZfRUg=&lt;br /&gt;
 Endpoint = us.wg.cghmn.org:42070&lt;br /&gt;
 AllowedIPs = 100.64.0.0/10&lt;br /&gt;
 PersistentKeepalive = 15&lt;br /&gt;
 PresharedKey = xxx&lt;br /&gt;
&lt;br /&gt;
* Copy this configuration to a file, &amp;lt;code&amp;gt;wg-cghmn.conf&amp;lt;/code&amp;gt;, for example.&lt;br /&gt;
* If you use wg-quick like below, you can also add the line &amp;lt;code&amp;gt;DNS = 100.64.12.2&amp;lt;/code&amp;gt; in the [Interface] section to make use of our DNS resolvers and access other CGHMN member&#039;s services through domain names, though be adviced that we cannot guarantee public internet address lookups, which means this might break internet access for the host you&#039;re opening this Wireguard tunnel from! Alternatively, for advanced users, one can setup dnsmasq to automatically pull any domains we offer within the CGHMN and forward them to our DNS resolvers with the help of [https://raw.githubusercontent.com/CGHMN/openwrt-scripts/refs/heads/main/dns/update-dns-forwards.sh this script from our GitHub] and having it being run periodically through cron, systemd-timers or similar. See [[CGHMN DNS Information#dnsmasq Synchronization Script|this Wiki article]] for more information.&lt;br /&gt;
* Then, run &amp;lt;code&amp;gt;wg-quick up ./wg-cghmn.conf&amp;lt;/code&amp;gt;, perhaps requiring &amp;lt;code&amp;gt;doas&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;, to bring the tunnel up and connect to the network!&lt;br /&gt;
&lt;br /&gt;
This should bring whatever system you&#039;ve set the tunnel up on onto the network and is now reachable for other members on the network, as long as the firewall on your device is congfigured accordingly, of course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;TODO: Add example of routed subnet configuration, perhaps on a different Wiki site&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;br /&gt;
&lt;br /&gt;
=== After you get connected ===&lt;br /&gt;
There are a few optional things you might want to do.&lt;br /&gt;
&lt;br /&gt;
==== Network mailing list ====&lt;br /&gt;
There is a mailing list you can subscribe to if you want to be notified about things that may affect CGHMN or core services. You can subscribe to the list here: https://berwick-upon-tweed.cobaltqu.be/postorius/lists/cghmn-announce.lists.cobaltqu.be/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need to post to the list, you will need to subscribe before you can be added to the list of poster.&lt;br /&gt;
&lt;br /&gt;
==== Explore things available on the network ====&lt;br /&gt;
There is a collection of [[services people are running]] - things like email/hosting/chat/search/etc.&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=345</id>
		<title>CGHMN DNS Information</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=345"/>
		<updated>2026-03-22T00:15:31Z</updated>

		<summary type="html">&lt;p&gt;Snep: Update dnsmasq update script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About this page ==&lt;br /&gt;
This page exists to document information about the DNS of CGHMN, and some of the complexities that comes with a DNS infrastructure made of up varying platforms across decades of the protocol&#039;s evolution.  See [[CGHMN-Demo-Network]] for detailed information about the underlying infrastructure &lt;br /&gt;
&lt;br /&gt;
== DNS Configuration Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
==== Pointing to the right DNS server ====&lt;br /&gt;
CGHMN has several DNS servers in use for differing purposes.  &#039;&#039;&#039;The correct default DNS server you should be pointing at while getting started is 100.64.21.1 from the core network, or 100.89.128.0 from the Wireguard tunnel&#039;&#039;&#039;.  This is the router, which then forwards the requests to the actual DNS.&lt;br /&gt;
&lt;br /&gt;
==== What the different DNS servers are (or, is this thing on?) ====&lt;br /&gt;
CGHMN&#039;s DNS is configured such that there are three core servers that perform response modifications to allow the recreation of long defunct services, perform lookups, and act as the root name server for the network, which has two internal TLD (top level domain, like .com or .net) on it.&lt;br /&gt;
&lt;br /&gt;
===== 100.64.11.11 - ns1.cghmn =====&lt;br /&gt;
This is the root name server for the .retro and .cghmn TLDs, as well as the 100.in-addr.arpa reverse lookup zone.  This server exists to delegate domains to members of CGHMN, and serve as the name server for the internal network.  This server is useful to perform a &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you want to see if a subdomain has been delegated, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dig ns example.retro. @100.64.11.11&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
 nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 100.64.11.11&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=ns&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; example.retro.&lt;br /&gt;
This server does not perform lookups.  It is currently running BIND.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;s&amp;gt;172.23.4.105&amp;lt;/s&amp;gt; =====&lt;br /&gt;
&amp;lt;s&amp;gt;This is the recursive lookup server for the network.  It is configured to recursively look up all requests for CGHMN domains, starting with ns1.cghmn, and then moving up based on delegations to member servers.  Regular lookups still take place against real TLDs, if something needs to be pulled off the internet.  This server is currently running BIND.  This server is useful to use &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you wish to see if your domain is resolving on the network after it has been delegated to you.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dig a test.example.retro. @172.23.4.105&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;or&amp;lt;/s&amp;gt;&lt;br /&gt;
 &amp;lt;s&amp;gt;nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.105&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=a&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; test.example.retro.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;s&amp;gt;172.23.4.104 - legacydns.cghmhn&amp;lt;/s&amp;gt; =====&lt;br /&gt;
&amp;lt;s&amp;gt;This is a dnsmasq server that is currently being used to perform modifications to DNS answers, by pulling from a list of servers that need to be faked in order to make old software, such as AIM, work correctly.  This server overrides the DNS answer with these responses, so all relevant DNS records need to be added. The rationale for this is that instead of a user modifying their hosts file (which can be dozens of different DNS addresses long) we can simply return addresses that correspond within the network.  Please ask if there is a service you would like added to the network that requires this kind of override.  Otherwise, it just forwards the questions to the recursive lookup server 172.23.4.105.  This server is useful to test against if you are having trouble connecting to a legacy service that utilizes hard coded DNS.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dig cname login.oscar.aol.com.&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;or&amp;lt;/s&amp;gt;&lt;br /&gt;
 &amp;lt;s&amp;gt;nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.104&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=cname&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; login.oscar.aol.com.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 100.64.12.1 or 100.64.11.1 =====&lt;br /&gt;
This is the core router for the network, which also serves as a DNS forwarding.  It forwards requests to .retro and .cghmn to ns1.cghmn, whilst resolving some legacy DNS overrides and custom DNS domains according to its local configuration. To get a list of domains for which this DNS resolver has overrides or local forwards configured, you can cURL/wget this URL: http://100.64.12.1:8080/dns-forward-domains.txt or if you&#039;re running dnsmasq as your resolver at home, directly include the configuration file available at http://100.64.12.1:8080/dns-forward-domains.dnsmasq.conf.&lt;br /&gt;
&lt;br /&gt;
== Hosting Your Own DNS Name Server ==&lt;br /&gt;
&lt;br /&gt;
=== About self-hosting ===&lt;br /&gt;
CGHMN can host member DNS zones on its nameserver, however it is welcome and even encouraged for them to explore setting up their own DNS name server for their subnet.  This can be done with most DNS server software, provided they can be recursively looked up against by BIND.  Please note that if you intend to run old Microsoft DNS, you will need to let us know that you are running it, as exceptions to the lookup procedure need to be added to the 172.23.4.105 server.&lt;br /&gt;
&lt;br /&gt;
You will need to reach out to CGHMN and let us know you want to host your domain, and give us the domain, NS record, A record, and IP address of the DNS server.&lt;br /&gt;
&lt;br /&gt;
=== What you need ===&lt;br /&gt;
&lt;br /&gt;
==== A server ====&lt;br /&gt;
You will need a computer connected to CGHMN, running a DNS server software that is able to act as an authoritative name server.  It will need to have UDP port 53 and TCP port 53 allowed in its firewall.  You do not need a lot of power, but it should be fairly reliable as everything will depend on it to find your servers and services.&lt;br /&gt;
&lt;br /&gt;
==== A SOA record ====&lt;br /&gt;
You will need a SOA (Start of Authority) record, this is the record that tells other DNS servers &amp;quot;I am in charge of this domain and here is the information about it&amp;quot;.  This record will need to be pointed to an NS (Name Server) record.&lt;br /&gt;
&lt;br /&gt;
==== A NS record ====&lt;br /&gt;
You will need a NS record, this is the record that says &amp;quot;this is where you ask about this domain&amp;quot;.  This record should point at an A record.&lt;br /&gt;
&lt;br /&gt;
==== An A record ====&lt;br /&gt;
You will need an A record, this is the record that maps the name of the DNS server to an IP address.  This should be the FQDN (Fully Qualified Domain Name) of the DNS server, and the IP address it is listening to.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
Your server will need to be configured as an authoritative name server.  To do this, it must run a DNS name server software, which should have a zone containing an the SOA, which points at the NS, which points at the A.&lt;br /&gt;
&lt;br /&gt;
== DNS Quirks ==&lt;br /&gt;
&lt;br /&gt;
=== Windows DNS ===&lt;br /&gt;
Old Windows DNS servers will misbehave when BIND&#039;s recursive lookup server attempts to do a lookup against them, and will end in failure.  The way around this is to disable edns lookups against this particular server in the BIND configuration.  Bind is supposed to attempt again with edns disabled but it seems with Windows DNS specifically to fail.&lt;br /&gt;
&lt;br /&gt;
=== DNS manipulation with multiple RR types ===&lt;br /&gt;
If a record is being looked up, and this record was once an A record, but still exists and is now a CNAME record, you will have an issue where the lookup will work with tools, but fail with actual lookups.  This is because the CNAME record being returned from the real DNS server will take precedent over the fake A record.  To resolve this issue, you have to fake both the CNAME and the A record.&lt;br /&gt;
&lt;br /&gt;
== dnsmasq Synchronization Script ==&lt;br /&gt;
Since the CGHMN offers custom TLDs, keeping up with which domains are part of the CGHNM can become quite difficult. For this, @Snep built a small script (which is rather hacky, but works) that can be added on Linux systems which have dnsmasq running as their DNS resolver. It only needs &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;md5sum&amp;lt;/code&amp;gt; (the BusyBox variants shipped with OpenWRT are fine). Download the following script to your router, for example into your root directory:&lt;br /&gt;
 wget -O /root/update-dns-forwards.sh &amp;quot;https://raw.githubusercontent.com/CGHMN/openwrt-scripts/refs/heads/main/dns/update-dns-forwards.sh&amp;quot;&lt;br /&gt;
Next, run it manually once to make sure the CGHMN DNS configuration file exists and the script runs through without issue:&lt;br /&gt;
 /bin/sh /root/update-dns-forwards.sh&lt;br /&gt;
Then, you can include the newly created configuration file in your dnsmasq instance. For OpenWRT devices, nagivate to Network -&amp;gt; DHCP and DNS -&amp;gt; Forwards and add &amp;lt;code&amp;gt;/etc/cghmn-domains.dnsmasq.conf&amp;lt;/code&amp;gt; in the &amp;quot;Additional servers file&amp;quot; field, then hit &amp;quot;Save &amp;amp; Apply&amp;quot;. On other systems, append the following line to your &amp;lt;code&amp;gt;dnsmasq.conf&amp;lt;/code&amp;gt; file:&lt;br /&gt;
 conf-file=/etc/cghmn-domains.dnsmasq.conf&lt;br /&gt;
Finally, to have the list get updated automatically every 15 minutes, add the following to your crontab (e.g. &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; as root):&lt;br /&gt;
 */15 * * * * /bin/sh /root/update-dns-forwards.sh&lt;br /&gt;
[[Category:Compu-Global-Hyper-Mega-Net]]&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=344</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=344"/>
		<updated>2026-03-21T23:49:03Z</updated>

		<summary type="html">&lt;p&gt;Snep: Add the sign-up page to the setup script guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Since the service is in &amp;quot;open beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: ===&lt;br /&gt;
[[Signup|&#039;&#039;&#039;Let us know you&#039;d like to connect!&#039;&#039;&#039;]] &lt;br /&gt;
&lt;br /&gt;
(We&#039;ll need information from you such as your Wireguard Pubkey to let you connect to the network)[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router: &amp;lt;code&amp;gt;wget https://cghmn.snep.zip/connect.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## Reboot the router, this step is necessary if you intend to use the web UI for any other configuration or see the status of the CGHMN connection, to make LuCI recognize Wireguard connections.&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface and the default &amp;lt;code&amp;gt;br-lan&amp;lt;/code&amp;gt; or any other bridge the interface might belong to, to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Head over to https://signup.cghmn.org, fill out the form there with your details like an e-mail address we can reach you under and copy over the Wireguard public key from the script output into the appropriate field on the web page. Once your request has been approved, you&#039;ll receive an e-mail with your CGHMN Wireguard connections details. Note: If you cannot copy-paste, for example, because you&#039;re on a VM VNC console, you can run &amp;lt;code&amp;gt;ash setup-cghmn.sh pubkey-qr&amp;lt;/code&amp;gt; to get a QR code with your public key, which can be scanned with a phone, tablet or software QR code parser to get the key as copy-pastable text.&lt;br /&gt;
# In the e-mail from your sign-up server post approval, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.65.x.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.68.x.0/24&amp;lt;/code&amp;gt; and up). These will be needed on the next step&lt;br /&gt;
# Run &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;, enter your new tunnel IP address with or without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; subnet mask, enter your routed subnet &#039;&#039;&#039;with&#039;&#039;&#039; the CIDR netmask and supply your pre-shared key from the e-mail.&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
=== Get Connected - Manually (Linux, Wireguard only, GRETAP follows shortly) ===&lt;br /&gt;
In case you want to setup a connection into the network manually, here are the required steps and information you should be needing:&lt;br /&gt;
&lt;br /&gt;
* Generate a Wireguard private key and public key, this command writes a fresh Wireguard private key to &amp;lt;code&amp;gt;private-key&amp;lt;/code&amp;gt; and the corresponsing public key to &amp;lt;code&amp;gt;public-key&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ wg genkey | tee private-key | wg pubkey &amp;gt; public-key&lt;br /&gt;
&lt;br /&gt;
* NEVER share your private key, even with us! It should never be required outside of your own Wireguard setup!&lt;br /&gt;
* You will, however, need to share your public key with us. Send CursedSilicon or Snep on the Discord or via IRC a message including the public key and we&#039;ll add you to the tunnel.&lt;br /&gt;
* In return, you&#039;ll get two IP addresses from us: Your tunnel IP address, with which your router talks to our router, and a routed subnet, from which you can assign IPs to your own machines so they can talk to other CGHMN member devices on the network without NAT in the way.&lt;br /&gt;
* Next, you&#039;ll need to fill a Wireguard configuration file with the two IP addresses, like below:&lt;br /&gt;
&lt;br /&gt;
 [Interface]&lt;br /&gt;
 PrivateKey = &amp;lt;Your private key goes here&amp;gt;&lt;br /&gt;
 Address = &amp;lt;Your tunnel IP address goes here&amp;gt;/32&lt;br /&gt;
 DNS = 100.89.128.0&lt;br /&gt;
 MTU = 1420&lt;br /&gt;
 &lt;br /&gt;
 [Peer]&lt;br /&gt;
 PublicKey = k/QiJIbMakMKgTCHVt8/D+8k4DzRVM6U33F3gMZfRUg=&lt;br /&gt;
 Endpoint = wg-admin.cursedsilicon.net:42070&lt;br /&gt;
 AllowedIPs = 100.64.0.0/10&lt;br /&gt;
 PersistentKeepalive = 15&lt;br /&gt;
&lt;br /&gt;
* Save this file as &amp;lt;code&amp;gt;wg-cghmn.conf&amp;lt;/code&amp;gt;, for example.&lt;br /&gt;
* Then, run &amp;lt;code&amp;gt;wg-quick up ./wg-cghmn.conf&amp;lt;/code&amp;gt;, perhaps requiring &amp;lt;code&amp;gt;doas&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;, to bring the tunnel up and connect to the network!&lt;br /&gt;
&lt;br /&gt;
This should bring whatever system you&#039;ve set the tunnel up on onto the network and is now reachable for other members on the network, as long as the firewall on your device is congfigured accordingly, of course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;TODO: Add example of routed subnet configuration, perhaps on a different Wiki site&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Get connected - Server Side, the Admins Guide&amp;lt;/s&amp;gt; ===&lt;br /&gt;
[[File:Example Configuration for new Wireguard Peer on Core Router.png|thumb|Example Configuration for new Wireguard Peer on Core Router]]&lt;br /&gt;
To get a member onto the network, they will send an admin of the project their randomly generated Wireguard key during the setup via the OpenWRT script. Here are the steps that admin will have to follow to get them up and running on the server side:&lt;br /&gt;
&lt;br /&gt;
# Log in on the [https://router.core.cghmn:8443 Core Router] over an existing CGHMN network link&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Peer Generator&lt;br /&gt;
# You will be asked to enter some data for the new peer, enter the following: &lt;br /&gt;
## &#039;&#039;&#039;Instance:&#039;&#039;&#039; &amp;lt;code&amp;gt;WG_Member&amp;lt;/code&amp;gt;   &lt;br /&gt;
## &#039;&#039;&#039;Endpoint:&#039;&#039;&#039; &amp;lt;code&amp;gt;wg-admin.cursedsilicon.net:42070&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;member.&#039;&#039;&amp;lt;Nickname of the new member&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Public Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;their Wireguard public key they&#039;ve sent over&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Private Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Address:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;Next highest IP from 100.89.128.0/22, this is their tunnel IP and is auto-filled&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Pre-Shared Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Allowed IPs:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;the same as Address&amp;gt;&#039;&#039;, &#039;&#039;&amp;lt;their routed subnet, [[How to Get Connected#But wait, what even is their routed subnet?|see below]]&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Keepalive interval:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;blank&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;DNS Servers:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;default value&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit the &amp;quot;Store and generate next&amp;quot; button&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Instances&lt;br /&gt;
# Hit the &amp;quot;Apply&amp;quot; button&lt;br /&gt;
# Do &#039;&#039;&#039;either one&#039;&#039;&#039; &#039;&#039;&#039;(not both!)&#039;&#039;&#039; of these steps, depending on if you can SSH into the GRETAP endpoint container:&lt;br /&gt;
## SSH into the CGHMN Proxmox Server and enter the command &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt;&lt;br /&gt;
## SSH directly into the GRETAP endpoint (formerly VXLAN endpoint) container with &amp;lt;code&amp;gt;ssh root@172.23.4.103&amp;lt;/code&amp;gt;&lt;br /&gt;
# From there, run the following command: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh &amp;lt;member-tunnel-ip&amp;gt; &amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; where you replace &amp;lt;code&amp;gt;&amp;lt;member-tunnel-ip&amp;gt;&amp;lt;/code&amp;gt; with the IP tunnel address of the member as it was set above in the &#039;&#039;&#039;Address&#039;&#039;&#039; field, without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; CIDR subnet mask, and replace the &amp;lt;code&amp;gt;&amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; with the same value you&#039;ve entered above in the &#039;&#039;&#039;Name&#039;&#039;&#039; field. For example, like this: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh 100.89.128.6 member.snep.test&amp;lt;/code&amp;gt; This will create a GRETAP (and for legacy purposes, a VXLAN) interface and bring them up automagically. &#039;&#039;Ignore the fact it still says &amp;quot;VXLAN&amp;quot; everywhere, it does both.&#039;&#039;&lt;br /&gt;
# Now you can send the member their Wireguard Tunnel IP and their routed subnet over and they can finish their client-side setup according to the mini-tutorial above.&lt;br /&gt;
# Rember to add the member and their tunnel and subnet IPs to the [[CGHMN-IP-Allocations|IP allocations page]] :)&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;br /&gt;
&lt;br /&gt;
=== After you get connected ===&lt;br /&gt;
There are a few optional things you might want to do.&lt;br /&gt;
&lt;br /&gt;
==== Network mailing list ====&lt;br /&gt;
There is a mailing list you can subscribe to if you want to be notified about things that may affect CGHMN or core services. You can subscribe to the list here: https://berwick-upon-tweed.cobaltqu.be/postorius/lists/cghmn-announce.lists.cobaltqu.be/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need to post to the list, you will need to subscribe before you can be added to the list of poster.&lt;br /&gt;
&lt;br /&gt;
==== Explore things available on the network ====&lt;br /&gt;
There is a collection of [[services people are running]] - things like email/hosting/chat/search/etc.&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=343</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=343"/>
		<updated>2026-03-21T23:40:31Z</updated>

		<summary type="html">&lt;p&gt;Snep: Add a reboot router step and clarify step four in the setup script tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Since the service is in &amp;quot;open beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: ===&lt;br /&gt;
[[Signup|&#039;&#039;&#039;Let us know you&#039;d like to connect!&#039;&#039;&#039;]] &lt;br /&gt;
&lt;br /&gt;
(We&#039;ll need information from you such as your Wireguard Pubkey to let you connect to the network)[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router: &amp;lt;code&amp;gt;wget https://cghmn.snep.zip/connect.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## Reboot the router, this step is necessary if you intend to use the web UI for any other configuration or see the status of the CGHMN connection, to make LuCI recognize Wireguard connections.&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface and the default &amp;lt;code&amp;gt;br-lan&amp;lt;/code&amp;gt; or any other bridge the interface might belong to, to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Send one of the CGHMN admins (currently CursedSilicon and Snep) that key so we can add your router to our Wireguard server. If you cannot copy-paste, for example, because you&#039;re on a VM VNC console, you can run &amp;lt;code&amp;gt;ash setup-cghmn.sh pubkey-qr&amp;lt;/code&amp;gt; to get a QR code printout of your public key, which can be scanned with a phone, tablet or software QR code parser to get the key as copy-pastable text.&lt;br /&gt;
# In return, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.89.128.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.96.x.0/24&amp;lt;/code&amp;gt;) from us. These will be needed on the third and final step of the setup script:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
=== Get Connected - Manually (Linux, Wireguard only, GRETAP follows shortly) ===&lt;br /&gt;
In case you want to setup a connection into the network manually, here are the required steps and information you should be needing:&lt;br /&gt;
&lt;br /&gt;
* Generate a Wireguard private key and public key, this command writes a fresh Wireguard private key to &amp;lt;code&amp;gt;private-key&amp;lt;/code&amp;gt; and the corresponsing public key to &amp;lt;code&amp;gt;public-key&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ wg genkey | tee private-key | wg pubkey &amp;gt; public-key&lt;br /&gt;
&lt;br /&gt;
* NEVER share your private key, even with us! It should never be required outside of your own Wireguard setup!&lt;br /&gt;
* You will, however, need to share your public key with us. Send CursedSilicon or Snep on the Discord or via IRC a message including the public key and we&#039;ll add you to the tunnel.&lt;br /&gt;
* In return, you&#039;ll get two IP addresses from us: Your tunnel IP address, with which your router talks to our router, and a routed subnet, from which you can assign IPs to your own machines so they can talk to other CGHMN member devices on the network without NAT in the way.&lt;br /&gt;
* Next, you&#039;ll need to fill a Wireguard configuration file with the two IP addresses, like below:&lt;br /&gt;
&lt;br /&gt;
 [Interface]&lt;br /&gt;
 PrivateKey = &amp;lt;Your private key goes here&amp;gt;&lt;br /&gt;
 Address = &amp;lt;Your tunnel IP address goes here&amp;gt;/32&lt;br /&gt;
 DNS = 100.89.128.0&lt;br /&gt;
 MTU = 1420&lt;br /&gt;
 &lt;br /&gt;
 [Peer]&lt;br /&gt;
 PublicKey = k/QiJIbMakMKgTCHVt8/D+8k4DzRVM6U33F3gMZfRUg=&lt;br /&gt;
 Endpoint = wg-admin.cursedsilicon.net:42070&lt;br /&gt;
 AllowedIPs = 100.64.0.0/10&lt;br /&gt;
 PersistentKeepalive = 15&lt;br /&gt;
&lt;br /&gt;
* Save this file as &amp;lt;code&amp;gt;wg-cghmn.conf&amp;lt;/code&amp;gt;, for example.&lt;br /&gt;
* Then, run &amp;lt;code&amp;gt;wg-quick up ./wg-cghmn.conf&amp;lt;/code&amp;gt;, perhaps requiring &amp;lt;code&amp;gt;doas&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;, to bring the tunnel up and connect to the network!&lt;br /&gt;
&lt;br /&gt;
This should bring whatever system you&#039;ve set the tunnel up on onto the network and is now reachable for other members on the network, as long as the firewall on your device is congfigured accordingly, of course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;TODO: Add example of routed subnet configuration, perhaps on a different Wiki site&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Get connected - Server Side, the Admins Guide&amp;lt;/s&amp;gt; ===&lt;br /&gt;
[[File:Example Configuration for new Wireguard Peer on Core Router.png|thumb|Example Configuration for new Wireguard Peer on Core Router]]&lt;br /&gt;
To get a member onto the network, they will send an admin of the project their randomly generated Wireguard key during the setup via the OpenWRT script. Here are the steps that admin will have to follow to get them up and running on the server side:&lt;br /&gt;
&lt;br /&gt;
# Log in on the [https://router.core.cghmn:8443 Core Router] over an existing CGHMN network link&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Peer Generator&lt;br /&gt;
# You will be asked to enter some data for the new peer, enter the following: &lt;br /&gt;
## &#039;&#039;&#039;Instance:&#039;&#039;&#039; &amp;lt;code&amp;gt;WG_Member&amp;lt;/code&amp;gt;   &lt;br /&gt;
## &#039;&#039;&#039;Endpoint:&#039;&#039;&#039; &amp;lt;code&amp;gt;wg-admin.cursedsilicon.net:42070&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;member.&#039;&#039;&amp;lt;Nickname of the new member&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Public Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;their Wireguard public key they&#039;ve sent over&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Private Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Address:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;Next highest IP from 100.89.128.0/22, this is their tunnel IP and is auto-filled&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Pre-Shared Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Allowed IPs:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;the same as Address&amp;gt;&#039;&#039;, &#039;&#039;&amp;lt;their routed subnet, [[How to Get Connected#But wait, what even is their routed subnet?|see below]]&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Keepalive interval:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;blank&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;DNS Servers:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;default value&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit the &amp;quot;Store and generate next&amp;quot; button&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Instances&lt;br /&gt;
# Hit the &amp;quot;Apply&amp;quot; button&lt;br /&gt;
# Do &#039;&#039;&#039;either one&#039;&#039;&#039; &#039;&#039;&#039;(not both!)&#039;&#039;&#039; of these steps, depending on if you can SSH into the GRETAP endpoint container:&lt;br /&gt;
## SSH into the CGHMN Proxmox Server and enter the command &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt;&lt;br /&gt;
## SSH directly into the GRETAP endpoint (formerly VXLAN endpoint) container with &amp;lt;code&amp;gt;ssh root@172.23.4.103&amp;lt;/code&amp;gt;&lt;br /&gt;
# From there, run the following command: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh &amp;lt;member-tunnel-ip&amp;gt; &amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; where you replace &amp;lt;code&amp;gt;&amp;lt;member-tunnel-ip&amp;gt;&amp;lt;/code&amp;gt; with the IP tunnel address of the member as it was set above in the &#039;&#039;&#039;Address&#039;&#039;&#039; field, without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; CIDR subnet mask, and replace the &amp;lt;code&amp;gt;&amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; with the same value you&#039;ve entered above in the &#039;&#039;&#039;Name&#039;&#039;&#039; field. For example, like this: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh 100.89.128.6 member.snep.test&amp;lt;/code&amp;gt; This will create a GRETAP (and for legacy purposes, a VXLAN) interface and bring them up automagically. &#039;&#039;Ignore the fact it still says &amp;quot;VXLAN&amp;quot; everywhere, it does both.&#039;&#039;&lt;br /&gt;
# Now you can send the member their Wireguard Tunnel IP and their routed subnet over and they can finish their client-side setup according to the mini-tutorial above.&lt;br /&gt;
# Rember to add the member and their tunnel and subnet IPs to the [[CGHMN-IP-Allocations|IP allocations page]] :)&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;br /&gt;
&lt;br /&gt;
=== After you get connected ===&lt;br /&gt;
There are a few optional things you might want to do.&lt;br /&gt;
&lt;br /&gt;
==== Network mailing list ====&lt;br /&gt;
There is a mailing list you can subscribe to if you want to be notified about things that may affect CGHMN or core services. You can subscribe to the list here: https://berwick-upon-tweed.cobaltqu.be/postorius/lists/cghmn-announce.lists.cobaltqu.be/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need to post to the list, you will need to subscribe before you can be added to the list of poster.&lt;br /&gt;
&lt;br /&gt;
==== Explore things available on the network ====&lt;br /&gt;
There is a collection of [[services people are running]] - things like email/hosting/chat/search/etc.&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=331</id>
		<title>CGHMN DNS Information</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=331"/>
		<updated>2026-03-01T03:05:24Z</updated>

		<summary type="html">&lt;p&gt;Snep: Updated DNS updater script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About this page ==&lt;br /&gt;
This page exists to document information about the DNS of CGHMN, and some of the complexities that comes with a DNS infrastructure made of up varying platforms across decades of the protocol&#039;s evolution.  See [[CGHMN-Demo-Network]] for detailed information about the underlying infrastructure &lt;br /&gt;
&lt;br /&gt;
== DNS Configuration Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
==== Pointing to the right DNS server ====&lt;br /&gt;
CGHMN has several DNS servers in use for differing purposes.  &#039;&#039;&#039;The correct default DNS server you should be pointing at while getting started is 100.64.21.1 from the core network, or 100.89.128.0 from the Wireguard tunnel&#039;&#039;&#039;.  This is the router, which then forwards the requests to the actual DNS.&lt;br /&gt;
&lt;br /&gt;
==== What the different DNS servers are (or, is this thing on?) ====&lt;br /&gt;
CGHMN&#039;s DNS is configured such that there are three core servers that perform response modifications to allow the recreation of long defunct services, perform lookups, and act as the root name server for the network, which has two internal TLD (top level domain, like .com or .net) on it.&lt;br /&gt;
&lt;br /&gt;
===== 100.64.11.11 - ns1.cghmn =====&lt;br /&gt;
This is the root name server for the .retro and .cghmn TLDs, as well as the 100.in-addr.arpa reverse lookup zone.  This server exists to delegate domains to members of CGHMN, and serve as the name server for the internal network.  This server is useful to perform a &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you want to see if a subdomain has been delegated, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dig ns example.retro. @100.64.11.11&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
 nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 100.64.11.11&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=ns&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; example.retro.&lt;br /&gt;
This server does not perform lookups.  It is currently running BIND.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;s&amp;gt;172.23.4.105&amp;lt;/s&amp;gt; =====&lt;br /&gt;
&amp;lt;s&amp;gt;This is the recursive lookup server for the network.  It is configured to recursively look up all requests for CGHMN domains, starting with ns1.cghmn, and then moving up based on delegations to member servers.  Regular lookups still take place against real TLDs, if something needs to be pulled off the internet.  This server is currently running BIND.  This server is useful to use &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you wish to see if your domain is resolving on the network after it has been delegated to you.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dig a test.example.retro. @172.23.4.105&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;or&amp;lt;/s&amp;gt;&lt;br /&gt;
 &amp;lt;s&amp;gt;nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.105&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=a&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; test.example.retro.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;s&amp;gt;172.23.4.104 - legacydns.cghmhn&amp;lt;/s&amp;gt; =====&lt;br /&gt;
&amp;lt;s&amp;gt;This is a dnsmasq server that is currently being used to perform modifications to DNS answers, by pulling from a list of servers that need to be faked in order to make old software, such as AIM, work correctly.  This server overrides the DNS answer with these responses, so all relevant DNS records need to be added. The rationale for this is that instead of a user modifying their hosts file (which can be dozens of different DNS addresses long) we can simply return addresses that correspond within the network.  Please ask if there is a service you would like added to the network that requires this kind of override.  Otherwise, it just forwards the questions to the recursive lookup server 172.23.4.105.  This server is useful to test against if you are having trouble connecting to a legacy service that utilizes hard coded DNS.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dig cname login.oscar.aol.com.&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;or&amp;lt;/s&amp;gt;&lt;br /&gt;
 &amp;lt;s&amp;gt;nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.104&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=cname&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; login.oscar.aol.com.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 100.64.12.1 or 100.64.11.1 =====&lt;br /&gt;
This is the core router for the network, which also serves as a DNS forwarding.  It forwards requests to .retro and .cghmn to ns1.cghmn, whilst resolving some legacy DNS overrides and custom DNS domains according to its local configuration. To get a list of domains for which this DNS resolver has overrides or local forwards configured, you can cURL/wget this URL: http://100.64.12.1:8080/dns-forward-domains.txt or if you&#039;re running dnsmasq as your resolver at home, directly include the configuration file available at http://100.64.12.1:8080/dns-forward-domains.dnsmasq.conf.&lt;br /&gt;
&lt;br /&gt;
== Hosting Your Own DNS Name Server ==&lt;br /&gt;
&lt;br /&gt;
=== About self-hosting ===&lt;br /&gt;
CGHMN can host member DNS zones on its nameserver, however it is welcome and even encouraged for them to explore setting up their own DNS name server for their subnet.  This can be done with most DNS server software, provided they can be recursively looked up against by BIND.  Please note that if you intend to run old Microsoft DNS, you will need to let us know that you are running it, as exceptions to the lookup procedure need to be added to the 172.23.4.105 server.&lt;br /&gt;
&lt;br /&gt;
You will need to reach out to CGHMN and let us know you want to host your domain, and give us the domain, NS record, A record, and IP address of the DNS server.&lt;br /&gt;
&lt;br /&gt;
=== What you need ===&lt;br /&gt;
&lt;br /&gt;
==== A server ====&lt;br /&gt;
You will need a computer connected to CGHMN, running a DNS server software that is able to act as an authoritative name server.  It will need to have UDP port 53 and TCP port 53 allowed in its firewall.  You do not need a lot of power, but it should be fairly reliable as everything will depend on it to find your servers and services.&lt;br /&gt;
&lt;br /&gt;
==== A SOA record ====&lt;br /&gt;
You will need a SOA (Start of Authority) record, this is the record that tells other DNS servers &amp;quot;I am in charge of this domain and here is the information about it&amp;quot;.  This record will need to be pointed to an NS (Name Server) record.&lt;br /&gt;
&lt;br /&gt;
==== A NS record ====&lt;br /&gt;
You will need a NS record, this is the record that says &amp;quot;this is where you ask about this domain&amp;quot;.  This record should point at an A record.&lt;br /&gt;
&lt;br /&gt;
==== An A record ====&lt;br /&gt;
You will need an A record, this is the record that maps the name of the DNS server to an IP address.  This should be the FQDN (Fully Qualified Domain Name) of the DNS server, and the IP address it is listening to.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
Your server will need to be configured as an authoritative name server.  To do this, it must run a DNS name server software, which should have a zone containing an the SOA, which points at the NS, which points at the A.&lt;br /&gt;
&lt;br /&gt;
== DNS Quirks ==&lt;br /&gt;
&lt;br /&gt;
=== Windows DNS ===&lt;br /&gt;
Old Windows DNS servers will misbehave when BIND&#039;s recursive lookup server attempts to do a lookup against them, and will end in failure.  The way around this is to disable edns lookups against this particular server in the BIND configuration.  Bind is supposed to attempt again with edns disabled but it seems with Windows DNS specifically to fail.&lt;br /&gt;
&lt;br /&gt;
=== DNS manipulation with multiple RR types ===&lt;br /&gt;
If a record is being looked up, and this record was once an A record, but still exists and is now a CNAME record, you will have an issue where the lookup will work with tools, but fail with actual lookups.  This is because the CNAME record being returned from the real DNS server will take precedent over the fake A record.  To resolve this issue, you have to fake both the CNAME and the A record.&lt;br /&gt;
&lt;br /&gt;
== dnsmasq Synchronization Script ==&lt;br /&gt;
Since the CGHMN offers custom TLDs, keeping up with which domains are part of the CGHNM can become quite difficult. For this, @Snep built a small script (which is rather hacky, but works) that can be added on Linux systems which have dnsmasq running as their DNS resolver. It only needs &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;grep&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;md5sum&amp;lt;/code&amp;gt; (the BusyBox variants shipped with OpenWRT are fine). Download the following script to your router, for example into your root directory:&lt;br /&gt;
 wget -O /root/update-dns-forwards.sh &amp;quot;https://raw.githubusercontent.com/CGHMN/openwrt-connect-script/refs/heads/main/openwrt/update-dns-forwards.sh&amp;quot;&lt;br /&gt;
Next, run it manually once to make sure the CGHMN DNS configuration file exists and the script runs through without issue:&lt;br /&gt;
 /bin/sh /root/update-dns-forwards.sh&lt;br /&gt;
Then, you can include the newly created configuration file in your dnsmasq instance. For OpenWRT devices, nagivate to Network -&amp;gt; DHCP and DNS -&amp;gt; Forwards and add &amp;lt;code&amp;gt;/etc/cghmn-domains.dnsmasq.conf&amp;lt;/code&amp;gt; in the &amp;quot;Additional servers file&amp;quot; field, then hit &amp;quot;Save &amp;amp; Apply&amp;quot;. On other systems, append the following line to your &amp;lt;code&amp;gt;dnsmasq.conf&amp;lt;/code&amp;gt; file:&lt;br /&gt;
 conf-file=/etc/cghmn-domains.dnsmasq.conf&lt;br /&gt;
Finally, to have the list get updated automatically every 15 minutes, add the following to your crontab (e.g. &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; as root):&lt;br /&gt;
 */15 * * * * /bin/sh /root/update-dns-forwards.sh&lt;br /&gt;
[[Category:Compu-Global-Hyper-Mega-Net]]&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=327</id>
		<title>CGHMN DNS Information</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=327"/>
		<updated>2026-02-15T01:58:12Z</updated>

		<summary type="html">&lt;p&gt;Snep: Add dnsmasq sync script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About this page ==&lt;br /&gt;
This page exists to document information about the DNS of CGHMN, and some of the complexities that comes with a DNS infrastructure made of up varying platforms across decades of the protocol&#039;s evolution.  See [[CGHMN-Demo-Network]] for detailed information about the underlying infrastructure &lt;br /&gt;
&lt;br /&gt;
== DNS Configuration Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
==== Pointing to the right DNS server ====&lt;br /&gt;
CGHMN has several DNS servers in use for differing purposes.  &#039;&#039;&#039;The correct default DNS server you should be pointing at while getting started is 100.64.21.1 from the core network, or 100.89.128.0 from the Wireguard tunnel&#039;&#039;&#039;.  This is the router, which then forwards the requests to the actual DNS.&lt;br /&gt;
&lt;br /&gt;
==== What the different DNS servers are (or, is this thing on?) ====&lt;br /&gt;
CGHMN&#039;s DNS is configured such that there are three core servers that perform response modifications to allow the recreation of long defunct services, perform lookups, and act as the root name server for the network, which has two internal TLD (top level domain, like .com or .net) on it.&lt;br /&gt;
&lt;br /&gt;
===== 100.64.11.11 - ns1.cghmn =====&lt;br /&gt;
This is the root name server for the .retro and .cghmn TLDs, as well as the 100.in-addr.arpa reverse lookup zone.  This server exists to delegate domains to members of CGHMN, and serve as the name server for the internal network.  This server is useful to perform a &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you want to see if a subdomain has been delegated, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dig ns example.retro. @100.64.11.11&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
 nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 100.64.11.11&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=ns&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; example.retro.&lt;br /&gt;
This server does not perform lookups.  It is currently running BIND.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;s&amp;gt;172.23.4.105&amp;lt;/s&amp;gt; =====&lt;br /&gt;
&amp;lt;s&amp;gt;This is the recursive lookup server for the network.  It is configured to recursively look up all requests for CGHMN domains, starting with ns1.cghmn, and then moving up based on delegations to member servers.  Regular lookups still take place against real TLDs, if something needs to be pulled off the internet.  This server is currently running BIND.  This server is useful to use &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you wish to see if your domain is resolving on the network after it has been delegated to you.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dig a test.example.retro. @172.23.4.105&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;or&amp;lt;/s&amp;gt;&lt;br /&gt;
 &amp;lt;s&amp;gt;nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.105&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=a&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; test.example.retro.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;s&amp;gt;172.23.4.104 - legacydns.cghmhn&amp;lt;/s&amp;gt; =====&lt;br /&gt;
&amp;lt;s&amp;gt;This is a dnsmasq server that is currently being used to perform modifications to DNS answers, by pulling from a list of servers that need to be faked in order to make old software, such as AIM, work correctly.  This server overrides the DNS answer with these responses, so all relevant DNS records need to be added. The rationale for this is that instead of a user modifying their hosts file (which can be dozens of different DNS addresses long) we can simply return addresses that correspond within the network.  Please ask if there is a service you would like added to the network that requires this kind of override.  Otherwise, it just forwards the questions to the recursive lookup server 172.23.4.105.  This server is useful to test against if you are having trouble connecting to a legacy service that utilizes hard coded DNS.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dig cname login.oscar.aol.com.&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;or&amp;lt;/s&amp;gt;&lt;br /&gt;
 &amp;lt;s&amp;gt;nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.104&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=cname&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; login.oscar.aol.com.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 100.64.12.1 or 100.64.11.1 =====&lt;br /&gt;
This is the core router for the network, which also serves as a DNS forwarding.  It forwards requests to .retro and .cghmn to ns1.cghmn, whilst resolving some legacy DNS overrides and custom DNS domains according to its local configuration. To get a list of domains for which this DNS resolver has overrides or local forwards configured, you can cURL/wget this URL: http://100.64.12.1:8080/dns-forward-domains.txt or if you&#039;re running dnsmasq as your resolver at home, directly include the configuration file available at http://100.64.12.1:8080/dns-forward-domains.dnsmasq.conf.&lt;br /&gt;
&lt;br /&gt;
== Hosting Your Own DNS Name Server ==&lt;br /&gt;
&lt;br /&gt;
=== About self-hosting ===&lt;br /&gt;
CGHMN can host member DNS zones on its nameserver, however it is welcome and even encouraged for them to explore setting up their own DNS name server for their subnet.  This can be done with most DNS server software, provided they can be recursively looked up against by BIND.  Please note that if you intend to run old Microsoft DNS, you will need to let us know that you are running it, as exceptions to the lookup procedure need to be added to the 172.23.4.105 server.&lt;br /&gt;
&lt;br /&gt;
You will need to reach out to CGHMN and let us know you want to host your domain, and give us the domain, NS record, A record, and IP address of the DNS server.&lt;br /&gt;
&lt;br /&gt;
=== What you need ===&lt;br /&gt;
&lt;br /&gt;
==== A server ====&lt;br /&gt;
You will need a computer connected to CGHMN, running a DNS server software that is able to act as an authoritative name server.  It will need to have UDP port 53 and TCP port 53 allowed in its firewall.  You do not need a lot of power, but it should be fairly reliable as everything will depend on it to find your servers and services.&lt;br /&gt;
&lt;br /&gt;
==== A SOA record ====&lt;br /&gt;
You will need a SOA (Start of Authority) record, this is the record that tells other DNS servers &amp;quot;I am in charge of this domain and here is the information about it&amp;quot;.  This record will need to be pointed to an NS (Name Server) record.&lt;br /&gt;
&lt;br /&gt;
==== A NS record ====&lt;br /&gt;
You will need a NS record, this is the record that says &amp;quot;this is where you ask about this domain&amp;quot;.  This record should point at an A record.&lt;br /&gt;
&lt;br /&gt;
==== An A record ====&lt;br /&gt;
You will need an A record, this is the record that maps the name of the DNS server to an IP address.  This should be the FQDN (Fully Qualified Domain Name) of the DNS server, and the IP address it is listening to.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
Your server will need to be configured as an authoritative name server.  To do this, it must run a DNS name server software, which should have a zone containing an the SOA, which points at the NS, which points at the A.&lt;br /&gt;
&lt;br /&gt;
== DNS Quirks ==&lt;br /&gt;
&lt;br /&gt;
=== Windows DNS ===&lt;br /&gt;
Old Windows DNS servers will misbehave when BIND&#039;s recursive lookup server attempts to do a lookup against them, and will end in failure.  The way around this is to disable edns lookups against this particular server in the BIND configuration.  Bind is supposed to attempt again with edns disabled but it seems with Windows DNS specifically to fail.&lt;br /&gt;
&lt;br /&gt;
=== DNS manipulation with multiple RR types ===&lt;br /&gt;
If a record is being looked up, and this record was once an A record, but still exists and is now a CNAME record, you will have an issue where the lookup will work with tools, but fail with actual lookups.  This is because the CNAME record being returned from the real DNS server will take precedent over the fake A record.  To resolve this issue, you have to fake both the CNAME and the A record.&lt;br /&gt;
&lt;br /&gt;
== dnsmasq Synchronization Script ==&lt;br /&gt;
Since the CGHMN offers custom TLDs, keeping up with which domains are part of the CGHNM can become quite difficult. For this, @Snep built a small script (which is rather hacky, but works) that can be added on Linux systems which have dnsmasq running as their DNS resolver. It only needs &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; (the BusyBox variant is fine) and &amp;lt;code&amp;gt;md5sum&amp;lt;/code&amp;gt;. Insert the following text to &amp;lt;code&amp;gt;/root/update-cghmn-domains.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 set -e&lt;br /&gt;
 &lt;br /&gt;
 # setting static variables&lt;br /&gt;
 &lt;br /&gt;
 SRC_URL=&amp;quot;&amp;lt;nowiki&amp;gt;http://100.64.12.1:8080/dns-forward-domains.dnsmasq.conf&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CONF_FILE=/etc/cghmn-domains.dnsmasq.conf&lt;br /&gt;
 &lt;br /&gt;
 TMP_CONF_FILE=/tmp/cghmn-domains.dnsmasq.conf&lt;br /&gt;
 &lt;br /&gt;
 # download dns configuration to temporary location and get its md5 sum&lt;br /&gt;
 &lt;br /&gt;
 wget -qO &amp;quot;${TMP_CONF_FILE}&amp;quot; &amp;quot;${SRC_URL}&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # get md5 sums of files&lt;br /&gt;
 &lt;br /&gt;
 old_md5sum=&amp;quot;$(md5sum -- &amp;quot;${CONF_FILE}&amp;quot; | cut -d&#039; &#039; -f1)&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 new_md5sum=&amp;quot;$(md5sum -- &amp;quot;${TMP_CONF_FILE}&amp;quot; | cut -d&#039; &#039; -f1)&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # do nothing if the md5sum of the new file is the same as the old&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;${old_md5sum}&amp;quot; = &amp;quot;${new_md5sum}&amp;quot; ]; then&lt;br /&gt;
 &lt;br /&gt;
     exit 0&lt;br /&gt;
 &lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # test if configuration file is valid&lt;br /&gt;
 &lt;br /&gt;
 if ! dnsmasq -C &amp;quot;${TMP_CONF_FILE}&amp;quot; --test &amp;amp;&amp;gt;/dev/null; then&lt;br /&gt;
 &lt;br /&gt;
     echo &amp;quot;New dnsmsq DNS configuration for the CGHMN is invalid&amp;quot; &amp;gt;*2&lt;br /&gt;
 &lt;br /&gt;
     exit 1&lt;br /&gt;
 &lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # copy configuration file to permanent location&lt;br /&gt;
 &lt;br /&gt;
 cp &amp;quot;${TMP_CONF_FILE}&amp;quot; &amp;quot;${CONF_FILE}&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # restart dnsmasq service on changes&lt;br /&gt;
 &lt;br /&gt;
 service dnsmasq restart&lt;br /&gt;
Next, run it manually once to make sure the CGHMN DNS configuration file exists and the script runs through without issue:&lt;br /&gt;
 /bin/sh /root/update-cghmn-domains.sh&lt;br /&gt;
Then, you can include the newly created configuration file in your dnsmasq instance. For OpenWRT devices, nagivate to Network -&amp;gt; DHCP and DNS -&amp;gt; Forwards and add &amp;lt;code&amp;gt;/etc/cghmn-domains.dnsmasq.conf&amp;lt;/code&amp;gt; in the &amp;quot;Additional servers file&amp;quot; field, then hit &amp;quot;Save &amp;amp; Apply&amp;quot;. On other systems, append the following line to your &amp;lt;code&amp;gt;dnsmasq.conf&amp;lt;/code&amp;gt; file:&lt;br /&gt;
 conf-file=/etc/cghmn-domains.dnsmasq.conf&lt;br /&gt;
Finally, to have the list get updated automatically every 15 minutes, add the following to your crontab (e.g. &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; as root):&lt;br /&gt;
 */15 * * * * /bin/sh /root/update-cghmn-domains.sh&lt;br /&gt;
[[Category:Compu-Global-Hyper-Mega-Net]]&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=326</id>
		<title>CGHMN 1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=326"/>
		<updated>2026-02-03T21:24:50Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added stuff to my to-do&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
&#039;&#039;&#039;Ideally I wanna have this ready by April 24th 2026? Being able to do a talk and be like &amp;quot;by the way we just launched it go sign up&amp;quot; would be huge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tracking sheet for &amp;quot;what would we want in a general 1.0 release&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s break these down by user just to keep division of labor easy. This isn&#039;t a &amp;quot;we will do this&amp;quot; so much as a &amp;quot;request for comments&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== CursedSilicon suggestions ===&lt;br /&gt;
&lt;br /&gt;
We can trivially set up an OpenWRT build bot. But a custom splash screen that just asks for a users Wireguard+IP details would be fantastic for user onboarding. Need someone who can write Lua to do this though&lt;br /&gt;
&lt;br /&gt;
=== ch0ccyra1n suggestions ===&lt;br /&gt;
&amp;lt;s&amp;gt;We should ensure that there is a better way to do onboarding. Some sort of web form on the clearnet for signups (or signup requests) would be good to have.&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&amp;lt;/s&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[https://signup.cghmn.org done]]&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sneps ToDo- and Wishlist: ===&lt;br /&gt;
&lt;br /&gt;
* Create an IP plan, removing the 172.23.0.0/16 subnet and planing ahead for distributed CGHMN entry nodes across the world&lt;br /&gt;
* Storage Situation on the OVH Proxmox, either switch to thin provisioned VM disks or have a shared storage server with SMB and NFS?&lt;br /&gt;
* Proper backups of the CGHMN Proxmox box&lt;br /&gt;
* Separate Wireguard tunnels for admin work/cote hosting and members, so that not everything breaks down for 15 seconds when new clients are added&lt;br /&gt;
* Distributed network entry points across the world&lt;br /&gt;
* Blog for Updates and Changes on the CGHMN?&lt;br /&gt;
* Forum?&lt;br /&gt;
* Some form of ticket systembug tracker via e-mail for reporting and organizing issues and member feature wishes?&lt;br /&gt;
* Move the GRETAP tunnels to the Wireguard server and add them to the API to be created and destroyed automatically&lt;br /&gt;
* Dynamic Routing of members across servers?&lt;br /&gt;
* Set up EU server&lt;br /&gt;
* Central maintenance tunnel into the PVEs&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=323</id>
		<title>CGHMN 1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=323"/>
		<updated>2026-01-11T05:48:13Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
&#039;&#039;&#039;Ideally I wanna have this ready by April 24th 2026? Being able to do a talk and be like &amp;quot;by the way we just launched it go sign up&amp;quot; would be huge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tracking sheet for &amp;quot;what would we want in a general 1.0 release&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s break these down by user just to keep division of labor easy. This isn&#039;t a &amp;quot;we will do this&amp;quot; so much as a &amp;quot;request for comments&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== CursedSilicon suggestions ===&lt;br /&gt;
&lt;br /&gt;
We can trivially set up an OpenWRT build bot. But a custom splash screen that just asks for a users Wireguard+IP details would be fantastic for user onboarding. Need someone who can write Lua to do this though&lt;br /&gt;
&lt;br /&gt;
=== ch0ccyra1n suggestions ===&lt;br /&gt;
&amp;lt;s&amp;gt;We should ensure that there is a better way to do onboarding. Some sort of web form on the clearnet for signups (or signup requests) would be good to have.&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&amp;lt;/s&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[https://signup.cghmn.org done]]&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sneps ToDo- and Wishlist: ===&lt;br /&gt;
&lt;br /&gt;
* Create an IP plan, removing the 172.23.0.0/16 subnet and planing ahead for distributed CGHMN entry nodes across the world&lt;br /&gt;
* Storage Situation on the OVH Proxmox, either switch to thin provisioned VM disks or have a shared storage server with SMB and NFS?&lt;br /&gt;
* Proper backups of the CGHMN Proxmox box&lt;br /&gt;
* Separate Wireguard tunnels for admin work/cote hosting and members, so that not everything breaks down for 15 seconds when new clients are added&lt;br /&gt;
* Distributed network entry points across the world&lt;br /&gt;
* Blog for Updates and Changes on the CGHMN?&lt;br /&gt;
* Forum?&lt;br /&gt;
* Move the GRETAP tunnels to the Wireguard server and add them to the API to be created and destroyed automatically&lt;br /&gt;
* Dynamic Routing of members across servers?&lt;br /&gt;
* Set up EU server&lt;br /&gt;
* Central maintenance tunnel into the PVEs&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=321</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=321"/>
		<updated>2025-12-25T00:41:44Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
| -&lt;br /&gt;
|100.64.11.0/24&lt;br /&gt;
|100.64.1.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|CGHMN VMs&lt;br /&gt;
| -&lt;br /&gt;
| 100.64.21.0/24&lt;br /&gt;
| 100.64.21.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the network. Members which need routed subnets receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default. Members who only need a single IP receive an IP from the &amp;lt;code&amp;gt;100.96.0.0/24&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Peer Endpoint/Via&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|/dev/hack (usually)&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| DIY&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|OPNsense box and PPPoE server&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Hadn69&lt;br /&gt;
| DIY&lt;br /&gt;
|100.89.128.5&lt;br /&gt;
|100.96.5.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Dell PowerEdge R620&lt;br /&gt;
|100.89.128.6&lt;br /&gt;
|100.96.6.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Theothertom&lt;br /&gt;
| Unknown&lt;br /&gt;
|100.89.128.7&lt;br /&gt;
|100.96.7.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Raspberry Pi&lt;br /&gt;
|100.89.128.8&lt;br /&gt;
|100.96.8.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
| PPTP Bridge on Debian VM&lt;br /&gt;
|100.89.128.9&lt;br /&gt;
|100.96.9.0/24&lt;br /&gt;
| Using Microsoft Virtual Server 2005 under Windows Server 2003.&lt;br /&gt;
|-&lt;br /&gt;
|GothPanda&lt;br /&gt;
| OpenWRT&lt;br /&gt;
|100.89.128.10&lt;br /&gt;
|100.96.10.0/24&lt;br /&gt;
| TP-Link Archer C59 v2&lt;br /&gt;
|-&lt;br /&gt;
|ch0ccyra1n&lt;br /&gt;
| Unknown&lt;br /&gt;
|100.89.128.11&lt;br /&gt;
|100.96.11.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Chromaryu&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.12&lt;br /&gt;
|100.96.12.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Serena&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.13&lt;br /&gt;
|100.96.13.0/24&lt;br /&gt;
|Chivanet&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|OpenWRT VM&lt;br /&gt;
|100.89.128.14&lt;br /&gt;
|100.96.14.0/24&lt;br /&gt;
|At home&lt;br /&gt;
|-&lt;br /&gt;
|Mel&lt;br /&gt;
|OpenWRT VM&lt;br /&gt;
|100.89.128.15&lt;br /&gt;
|100.96.15.0/24&lt;br /&gt;
|&amp;quot;Glinet Nugget&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Spz2024&lt;br /&gt;
|OpenWRT VM&lt;br /&gt;
|100.89.128.16&lt;br /&gt;
|100.96.16.0/24&lt;br /&gt;
| OpenWRT in QEMU on Windows host&lt;br /&gt;
|-&lt;br /&gt;
|Spaztron64&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.17&lt;br /&gt;
|100.96.17.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Harry&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.18&lt;br /&gt;
|100.96.18.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Mel&lt;br /&gt;
|OpenWRT VM&lt;br /&gt;
|100.89.128.19&lt;br /&gt;
|100.96.19.0/24&lt;br /&gt;
|OpenWRT VM &lt;br /&gt;
|-&lt;br /&gt;
|Spaztron64&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.20&lt;br /&gt;
|100.96.20.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|TsuboDii&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.21&lt;br /&gt;
|100.96.21.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|j4yc33&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.22&lt;br /&gt;
|100.96.22.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.23&lt;br /&gt;
|100.96.23.0/24&lt;br /&gt;
|&amp;quot;Travel Router&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Dusty&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.24&lt;br /&gt;
|100.96.24.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Nicuuut&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.25&lt;br /&gt;
|100.96.25.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Tyler McVicker&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.26&lt;br /&gt;
|100.96.26.0/24&lt;br /&gt;
|&amp;quot;Game Servers&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|YoungChief&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.27&lt;br /&gt;
|100.96.27.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Zefie&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.28&lt;br /&gt;
|100.96.28.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|CH&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.29&lt;br /&gt;
|100.96.29.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Alyx&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.30&lt;br /&gt;
|100.96.30.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Alyx&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.31&lt;br /&gt;
|100.96.31.0/24&lt;br /&gt;
|&amp;quot;Datacenter&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Grawity&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.32&lt;br /&gt;
|100.96.32.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|pmc&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.33&lt;br /&gt;
|100.96.33.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|kirb&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.34&lt;br /&gt;
|100.96.34.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|GothPanda&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.96.0.1&lt;br /&gt;
|N/A&lt;br /&gt;
|Proxy&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
|Lenovo Yoga 6 that&#039;s falling apart.&lt;br /&gt;
|100.96.0.2&lt;br /&gt;
|N/A&lt;br /&gt;
|Travel&lt;br /&gt;
|-&lt;br /&gt;
|i430vx&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.35&lt;br /&gt;
|100.96.35.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|rwf93&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.36&lt;br /&gt;
|100.96.36.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|accipitroid&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.37&lt;br /&gt;
|100.96.37.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Serena&lt;br /&gt;
|chivanet&lt;br /&gt;
|pandora.chivanet&lt;br /&gt;
|100.96.13.7&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Nicuuut&lt;br /&gt;
|goat&lt;br /&gt;
|sanemi.nicuuut.goat&lt;br /&gt;
|172.23.0.53&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.53&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Snep&#039;&#039;&lt;br /&gt;
|&#039;&#039;snep.retro&#039;&#039;&lt;br /&gt;
|&#039;&#039;ns1.snep.retro&#039;&#039;&lt;br /&gt;
|&#039;&#039;172.23.8.11&#039;&#039;&lt;br /&gt;
| Currently offline&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
|lily.retro&lt;br /&gt;
|ns1.lily.retro&lt;br /&gt;
|100.96.6.250&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
|loganius.retro&lt;br /&gt;
|kirk.loganius.retro&lt;br /&gt;
|100.96.9.3&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|theothertom&lt;br /&gt;
|theothertom.retro&lt;br /&gt;
|north-foreland.theothertom.retro&lt;br /&gt;
|100.96.7.12&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Spaztron64&lt;br /&gt;
|arcesia.retro&lt;br /&gt;
|ns.arcesia.retro&lt;br /&gt;
|100.96.17.105&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|ch0ccyra1n&lt;br /&gt;
|oohay.retro&lt;br /&gt;
|ns1.oohay.retro&lt;br /&gt;
|100.96.11.197&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Harry&lt;br /&gt;
|404.retro&lt;br /&gt;
|ns.404.retro&lt;br /&gt;
|100.96.18.254&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|GothPanda&lt;br /&gt;
|northstar.retro&lt;br /&gt;
|ns1.northstar.retro&lt;br /&gt;
|172.23.3.201&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
|askme.retro&lt;br /&gt;
|kirk.loganius.retro&lt;br /&gt;
|100.96.9.3&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|118&lt;br /&gt;
|junko.coyote.retro&lt;br /&gt;
|172.23.3.173&lt;br /&gt;
|Network diagnostics&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
|123&lt;br /&gt;
|kira.loganius.retro&lt;br /&gt;
|172.23.0.52&lt;br /&gt;
|WMS Server&lt;br /&gt;
|-&lt;br /&gt;
|Cursed&lt;br /&gt;
|107&lt;br /&gt;
|cghmn-mail.retro&lt;br /&gt;
|172.23.0.69&lt;br /&gt;
|Mail Server&lt;br /&gt;
|-&lt;br /&gt;
|Nicuuut&lt;br /&gt;
|124&lt;br /&gt;
|sanemi.nicuuut.goat&lt;br /&gt;
|172.23.0.53&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Nicuuut&lt;br /&gt;
|103&lt;br /&gt;
|mitsuri.nicuuut.goat&lt;br /&gt;
|172.23.0.54&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|GothPanda&lt;br /&gt;
|104&lt;br /&gt;
|litwick.northstar.retro&lt;br /&gt;
|172.23.3.201&lt;br /&gt;
|also hosts tests.cghmn&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
|109&lt;br /&gt;
|worf.loganius.retro&lt;br /&gt;
|172.23.0.55&lt;br /&gt;
|ILS Server (for MS NetMeeting)&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
|10056&lt;br /&gt;
|elim.loganius.retro&lt;br /&gt;
|172.23.0.56&lt;br /&gt;
|Minecraft Reverse Proxy Server&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Compu-Global-Hyper-Mega-Net]]&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=320</id>
		<title>CGHMN DNS Information</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=320"/>
		<updated>2025-12-25T00:41:15Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About this page ==&lt;br /&gt;
This page exists to document information about the DNS of CGHMN, and some of the complexities that comes with a DNS infrastructure made of up varying platforms across decades of the protocol&#039;s evolution.  See [[CGHMN-Demo-Network]] for detailed information about the underlying infrastructure &lt;br /&gt;
&lt;br /&gt;
== DNS Configuration Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
==== Pointing to the right DNS server ====&lt;br /&gt;
CGHMN has several DNS servers in use for differing purposes.  &#039;&#039;&#039;The correct default DNS server you should be pointing at while getting started is 100.64.21.1 from the core network, or 100.89.128.0 from the Wireguard tunnel&#039;&#039;&#039;.  This is the router, which then forwards the requests to the actual DNS.&lt;br /&gt;
&lt;br /&gt;
==== What the different DNS servers are (or, is this thing on?) ====&lt;br /&gt;
CGHMN&#039;s DNS is configured such that there are three core servers that perform response modifications to allow the recreation of long defunct services, perform lookups, and act as the root name server for the network, which has two internal TLD (top level domain, like .com or .net) on it.&lt;br /&gt;
&lt;br /&gt;
===== 100.64.11.11 - ns1.cghmn =====&lt;br /&gt;
This is the root name server for the .retro and .cghmn TLDs, as well as the 100.in-addr.arpa reverse lookup zone.  This server exists to delegate domains to members of CGHMN, and serve as the name server for the internal network.  This server is useful to perform a &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you want to see if a subdomain has been delegated, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dig ns example.retro. @100.64.11.11&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
 nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 100.64.11.11&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=ns&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; example.retro.&lt;br /&gt;
This server does not perform lookups.  It is currently running BIND.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;s&amp;gt;172.23.4.105&amp;lt;/s&amp;gt; =====&lt;br /&gt;
&amp;lt;s&amp;gt;This is the recursive lookup server for the network.  It is configured to recursively look up all requests for CGHMN domains, starting with ns1.cghmn, and then moving up based on delegations to member servers.  Regular lookups still take place against real TLDs, if something needs to be pulled off the internet.  This server is currently running BIND.  This server is useful to use &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you wish to see if your domain is resolving on the network after it has been delegated to you.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dig a test.example.retro. @172.23.4.105&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;or&amp;lt;/s&amp;gt;&lt;br /&gt;
 &amp;lt;s&amp;gt;nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.105&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=a&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; test.example.retro.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;s&amp;gt;172.23.4.104 - legacydns.cghmhn&amp;lt;/s&amp;gt; =====&lt;br /&gt;
&amp;lt;s&amp;gt;This is a dnsmasq server that is currently being used to perform modifications to DNS answers, by pulling from a list of servers that need to be faked in order to make old software, such as AIM, work correctly.  This server overrides the DNS answer with these responses, so all relevant DNS records need to be added. The rationale for this is that instead of a user modifying their hosts file (which can be dozens of different DNS addresses long) we can simply return addresses that correspond within the network.  Please ask if there is a service you would like added to the network that requires this kind of override.  Otherwise, it just forwards the questions to the recursive lookup server 172.23.4.105.  This server is useful to test against if you are having trouble connecting to a legacy service that utilizes hard coded DNS.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dig cname login.oscar.aol.com.&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;or&amp;lt;/s&amp;gt;&lt;br /&gt;
 &amp;lt;s&amp;gt;nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.104&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=cname&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; login.oscar.aol.com.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 100.64.12.1 or 100.64.11.1 =====&lt;br /&gt;
This is the core router for the network, which also serves as a DNS forwarding.  It forwards requests to .retro and .cghmn to ns1.cghmn, whilst resolving some legacy DNS overrides and custom DNS domains according to its local configuration. To get a list of domains for which this DNS resolver has overrides or local forwards configured, you can cURL/wget this URL: http://100.64.12.1:8080/dns-forward-domains.txt or if you&#039;re running dnsmasq as your resolver at home, directly include the configuration file available at http://100.64.12.1:8080/dns-forward-domains.dnsmasq.conf.&lt;br /&gt;
&lt;br /&gt;
== Hosting Your Own DNS Name Server ==&lt;br /&gt;
&lt;br /&gt;
=== About self-hosting ===&lt;br /&gt;
CGHMN can host member DNS zones on its nameserver, however it is welcome and even encouraged for them to explore setting up their own DNS name server for their subnet.  This can be done with most DNS server software, provided they can be recursively looked up against by BIND.  Please note that if you intend to run old Microsoft DNS, you will need to let us know that you are running it, as exceptions to the lookup procedure need to be added to the 172.23.4.105 server.&lt;br /&gt;
&lt;br /&gt;
You will need to reach out to CGHMN and let us know you want to host your domain, and give us the domain, NS record, A record, and IP address of the DNS server.&lt;br /&gt;
&lt;br /&gt;
=== What you need ===&lt;br /&gt;
&lt;br /&gt;
==== A server ====&lt;br /&gt;
You will need a computer connected to CGHMN, running a DNS server software that is able to act as an authoritative name server.  It will need to have UDP port 53 and TCP port 53 allowed in its firewall.  You do not need a lot of power, but it should be fairly reliable as everything will depend on it to find your servers and services.&lt;br /&gt;
&lt;br /&gt;
==== A SOA record ====&lt;br /&gt;
You will need a SOA (Start of Authority) record, this is the record that tells other DNS servers &amp;quot;I am in charge of this domain and here is the information about it&amp;quot;.  This record will need to be pointed to an NS (Name Server) record.&lt;br /&gt;
&lt;br /&gt;
==== A NS record ====&lt;br /&gt;
You will need a NS record, this is the record that says &amp;quot;this is where you ask about this domain&amp;quot;.  This record should point at an A record.&lt;br /&gt;
&lt;br /&gt;
==== An A record ====&lt;br /&gt;
You will need an A record, this is the record that maps the name of the DNS server to an IP address.  This should be the FQDN (Fully Qualified Domain Name) of the DNS server, and the IP address it is listening to.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
Your server will need to be configured as an authoritative name server.  To do this, it must run a DNS name server software, which should have a zone containing an the SOA, which points at the NS, which points at the A.&lt;br /&gt;
&lt;br /&gt;
== DNS Quirks ==&lt;br /&gt;
&lt;br /&gt;
=== Windows DNS ===&lt;br /&gt;
Old Windows DNS servers will misbehave when BIND&#039;s recursive lookup server attempts to do a lookup against them, and will end in failure.  The way around this is to disable edns lookups against this particular server in the BIND configuration.  Bind is supposed to attempt again with edns disabled but it seems with Windows DNS specifically to fail.&lt;br /&gt;
&lt;br /&gt;
=== DNS manipulation with multiple RR types ===&lt;br /&gt;
If a record is being looked up, and this record was once an A record, but still exists and is now a CNAME record, you will have an issue where the lookup will work with tools, but fail with actual lookups.  This is because the CNAME record being returned from the real DNS server will take precedent over the fake A record.  To resolve this issue, you have to fake both the CNAME and the A record.&lt;br /&gt;
[[Category:Compu-Global-Hyper-Mega-Net]]&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_Certificate_Authority&amp;diff=319</id>
		<title>CGHMN Certificate Authority</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_Certificate_Authority&amp;diff=319"/>
		<updated>2025-12-25T00:36:58Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== The CGHMN Certificate Authority ===&lt;br /&gt;
... is used to create internal certificates for old SSL and TLS applications with our custom domains .cghmn and .retro, which cannot receive actual, real world publicly trusted certificates.&lt;br /&gt;
&lt;br /&gt;
To trust those certificates, navigate to http://certs.cghmn, download the Root CA certificate and install it into your operating systems root CA store.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING:&#039;&#039;&#039; Only do this on retro machines that are attached to the CGHMN, don&#039;t do this on modern machines with data you care for and websites you&#039;d rather not have potentially [[wikipedia:Man-in-the-middle_attack|MITM]]&#039;ed. Installing and trustig the Root CA certificate would allow us (or anyone that has access to the root CA public and private keys together with the signing password) to create whatever certificate we like for any domain name out there and fool your OS into thinking it can trust that self-signed certificate. &lt;br /&gt;
&lt;br /&gt;
Alternatively, you can always just click &amp;quot;Trust this page&amp;quot; or similar in your web browser and most applications that rely on SSL/TLS have some option to disable CA checking.&lt;br /&gt;
&lt;br /&gt;
=== How to obtain a certificate for your .cghmn or .retro domain ===&lt;br /&gt;
If you&#039;d like a certificate for your CGHMN internal domain, ping one of the admins in the Discord channel and pass along the following infos:&lt;br /&gt;
&lt;br /&gt;
* Domain Name: The domain you&#039;d like to receive a certificate for&lt;br /&gt;
* How to best send you your certificate, e.g. Discord DMs, E-Mail, some Messenger, Filesharing service etc., best not through a public channel&lt;br /&gt;
* Optionally:&lt;br /&gt;
** If you want a wildcard certificate, i.e. one certificate for the domain above and all subdomains underneath that domain (e.g. *.example.org)&lt;br /&gt;
** If you&#039;d like the private key to be protected with a randomly generated password&lt;br /&gt;
** What two letter code to fill into the &amp;quot;Country&amp;quot; field of the certificate, default is &amp;quot;XX&amp;quot;&lt;br /&gt;
** What to fill into the &amp;quot;State or Province&amp;quot; field of the certificate, default is &amp;quot;Global&amp;quot;&lt;br /&gt;
** What to fill into the &amp;quot;Locality&amp;quot; field of the certificate, defaut is &amp;quot;The Internet&amp;quot;&lt;br /&gt;
** What to fill into the &amp;quot;Organization Name&amp;quot; field of the certificate, default is &amp;quot;Compu Global Hyper Mega Network&amp;quot;&lt;br /&gt;
** What to fill into the &amp;quot;Organizational Unit&amp;quot; field of the certificate, default is your username&lt;br /&gt;
** What to fill into the &amp;quot;E-Mail&amp;quot; field of the certificate, default is &amp;quot;complain@mail.cghmn&amp;quot;&lt;br /&gt;
** &#039;&#039;All of the above can be freely chosen and be whatever you like&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Then we&#039;ll create the certificate, private key and full chain certificate and send it over so you can install it into whatever service you like!&lt;br /&gt;
&lt;br /&gt;
=== How to generate a certificate - For CGHMN Admins ===&lt;br /&gt;
[[File:Example Certificate Script Run.png|thumb|Script Example Output]]&lt;br /&gt;
To generate a members&#039; certificate, &amp;lt;code&amp;gt;ssh&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;pct enter&amp;lt;/code&amp;gt; into Container &amp;lt;code&amp;gt;11013&amp;lt;/code&amp;gt; with IP address 100.64.11.13. In the root directory should be a Bash script called &amp;lt;code&amp;gt;create-and-sign-server-csr.sh&amp;lt;/code&amp;gt;, run it with &amp;lt;code&amp;gt;bash /root/create-and-sign-server-csr.sh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It will first ask you what the output files should be called, it&#039;s best to enter something that associates the file with the target domain or member, e.g. the domain itself or the members&#039; username. It&#039;s recommended to only use alpha-numerical characters, dashes, underscores and dots.&lt;br /&gt;
&lt;br /&gt;
Next, you&#039;re asked if the key shall be protected with a password. If the member didn&#039;t specify or doesn&#039;t want one, you can just press &#039;&#039;&#039;Enter&#039;&#039;&#039; on this step to select the default value of &#039;&#039;not&#039;&#039; using a password. Otherwise type &#039;&#039;&#039;y&#039;&#039;&#039; and press &#039;&#039;&#039;Enter&#039;&#039;&#039; to confirm, then generate a random password with a website, tool or password manager of your choice and input said password in the &amp;quot;Enter PEM pass phrase&amp;quot; prompt. The password needs to be at least 4 characters long!&lt;br /&gt;
&lt;br /&gt;
The next step asks you for the hostnames of the certificate. Enter all hostnames you want the certificate to be valid for, e.g. &amp;lt;code&amp;gt;example.retro&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;www.example.retro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mail.example.retro&amp;lt;/code&amp;gt;. If the member requested a wildcard certificate, enter the base domain first, e.g. &amp;lt;code&amp;gt;example.retro&amp;lt;/code&amp;gt;, followed by the wildcard domain, e.g. &amp;lt;code&amp;gt;*.example.retro&amp;lt;/code&amp;gt;. Once all domain names are entered, press &#039;&#039;&#039;Ctrl+D&#039;&#039;&#039; to confirm.&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve specified &#039;&#039;&#039;y&#039;&#039;&#039; at the question above if the private key should be password protected, you will next be asked to re-enter that password.&lt;br /&gt;
&lt;br /&gt;
Next, you&#039;ll be asked for the Common Name, there enter the base domain for which the certificate is valid, e.g. &#039;&#039;&#039;example.retro&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Then, some certificate options can be set like Country, Organization and E-Mail assigned with the certificate, which are most of the optional details listed above that the member can specify if they like, which does not need to be real data, it can be whatever they like. Otherwise, just press &#039;&#039;&#039;Enter&#039;&#039;&#039; on the fields to select the predefined default values.&lt;br /&gt;
&lt;br /&gt;
The next password requested from you is the Intermediate CA Signing Password, followed by two confirmations if you really really want to sign the new certificates with our intermediate CA. Input &#039;&#039;&#039;y&#039;&#039;&#039; and press &#039;&#039;&#039;Enter&#039;&#039;&#039; both times.&lt;br /&gt;
&lt;br /&gt;
Now the certificate is created and ready for use, the script will tell you into which directory it has written the certificate files.&lt;br /&gt;
&lt;br /&gt;
All that&#039;s left to do now is to SCP the files off the CA container and send them over to the member in a secure-ish fashion through their prefered channel. Don&#039;t send them in the Discord channel unless they&#039;re fine with it since it allows someone else to more easily impersonate their site, not that that&#039;s a huge concern in the CGHMN network, but still.&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=318</id>
		<title>CGHMN 1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=318"/>
		<updated>2025-12-25T00:26:32Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
&#039;&#039;&#039;Ideally I wanna have this ready by April 24th 2026? Being able to do a talk and be like &amp;quot;by the way we just launched it go sign up&amp;quot; would be huge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tracking sheet for &amp;quot;what would we want in a general 1.0 release&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s break these down by user just to keep division of labor easy. This isn&#039;t a &amp;quot;we will do this&amp;quot; so much as a &amp;quot;request for comments&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== CursedSilicon suggestions ===&lt;br /&gt;
&lt;br /&gt;
We can trivially set up an OpenWRT build bot. But a custom splash screen that just asks for a users Wireguard+IP details would be fantastic for user onboarding. Need someone who can write Lua to do this though&lt;br /&gt;
&lt;br /&gt;
=== ch0ccyra1n suggestions ===&lt;br /&gt;
&amp;lt;s&amp;gt;We should ensure that there is a better way to do onboarding. Some sort of web form on the clearnet for signups (or signup requests) would be good to have.&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&amp;lt;/s&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[https://signup.cghmn.org done]]&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sneps ToDo- and Wishlist: ===&lt;br /&gt;
&lt;br /&gt;
* Create an IP plan, removing the 172.23.0.0/16 subnet and planing ahead for distributed CGHMN entry nodes across the world&lt;br /&gt;
* Storage Situation on the OVH Proxmox, either switch to thin provisioned VM disks or have a shared storage server with SMB and NFS?&lt;br /&gt;
* Proper backups of the CGHMN Proxmox box&lt;br /&gt;
* Separate Wireguard tunnels for admin work/cote hosting and members, so that not everything breaks down for 15 seconds when new clients are added&lt;br /&gt;
* Distributed network entry points across the world&lt;br /&gt;
* Blog for Updates and Changes on the CGHMN?&lt;br /&gt;
* Forum?&lt;br /&gt;
* Move the GRETAP tunnels to the Wireguard server and add them to the API to be created and destroyed automatically&lt;br /&gt;
* Dynamic Routing of members across servers?&lt;br /&gt;
* Set up EU server&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=317</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=317"/>
		<updated>2025-12-25T00:23:22Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Since the service is in &amp;quot;open beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: ===&lt;br /&gt;
[[Signup|&#039;&#039;&#039;Let us know you&#039;d like to connect!&#039;&#039;&#039;]] &lt;br /&gt;
&lt;br /&gt;
(We&#039;ll need information from you such as your Wireguard Pubkey to let you connect to the network)[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router: &amp;lt;code&amp;gt;wget https://cghmn.snep.zip/connect.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Send one of the CGHMN admins (currently CursedSilicon and Snep) that key so we can add your router to our Wireguard server. If you cannot copy-paste, for example, because you&#039;re on a VM VNC console, you can run &amp;lt;code&amp;gt;ash setup-cghmn.sh pubkey-qr&amp;lt;/code&amp;gt; to get a QR code printout of your public key, which can be scanned with a phone, tablet or software QR code parser to get the key as copy-pastable text.&lt;br /&gt;
# In return, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.89.128.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.96.x.0/24&amp;lt;/code&amp;gt;) from us. These will be needed on the third and final step of the setup script:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
=== Get Connected - Manually (Linux, Wireguard only, GRETAP follows shortly) ===&lt;br /&gt;
In case you want to setup a connection into the network manually, here are the required steps and information you should be needing:&lt;br /&gt;
&lt;br /&gt;
* Generate a Wireguard private key and public key, this command writes a fresh Wireguard private key to &amp;lt;code&amp;gt;private-key&amp;lt;/code&amp;gt; and the corresponsing public key to &amp;lt;code&amp;gt;public-key&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ wg genkey | tee private-key | wg pubkey &amp;gt; public-key&lt;br /&gt;
&lt;br /&gt;
* NEVER share your private key, even with us! It should never be required outside of your own Wireguard setup!&lt;br /&gt;
* You will, however, need to share your public key with us. Send CursedSilicon or Snep on the Discord or via IRC a message including the public key and we&#039;ll add you to the tunnel.&lt;br /&gt;
* In return, you&#039;ll get two IP addresses from us: Your tunnel IP address, with which your router talks to our router, and a routed subnet, from which you can assign IPs to your own machines so they can talk to other CGHMN member devices on the network without NAT in the way.&lt;br /&gt;
* Next, you&#039;ll need to fill a Wireguard configuration file with the two IP addresses, like below:&lt;br /&gt;
&lt;br /&gt;
 [Interface]&lt;br /&gt;
 PrivateKey = &amp;lt;Your private key goes here&amp;gt;&lt;br /&gt;
 Address = &amp;lt;Your tunnel IP address goes here&amp;gt;/32&lt;br /&gt;
 DNS = 100.89.128.0&lt;br /&gt;
 MTU = 1420&lt;br /&gt;
 &lt;br /&gt;
 [Peer]&lt;br /&gt;
 PublicKey = k/QiJIbMakMKgTCHVt8/D+8k4DzRVM6U33F3gMZfRUg=&lt;br /&gt;
 Endpoint = wg-admin.cursedsilicon.net:42070&lt;br /&gt;
 AllowedIPs = 100.64.0.0/10&lt;br /&gt;
 PersistentKeepalive = 15&lt;br /&gt;
&lt;br /&gt;
* Save this file as &amp;lt;code&amp;gt;wg-cghmn.conf&amp;lt;/code&amp;gt;, for example.&lt;br /&gt;
* Then, run &amp;lt;code&amp;gt;wg-quick up ./wg-cghmn.conf&amp;lt;/code&amp;gt;, perhaps requiring &amp;lt;code&amp;gt;doas&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;, to bring the tunnel up and connect to the network!&lt;br /&gt;
&lt;br /&gt;
This should bring whatever system you&#039;ve set the tunnel up on onto the network and is now reachable for other members on the network, as long as the firewall on your device is congfigured accordingly, of course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;TODO: Add example of routed subnet configuration, perhaps on a different Wiki site&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;s&amp;gt;Get connected - Server Side, the Admins Guide&amp;lt;/s&amp;gt; ===&lt;br /&gt;
[[File:Example Configuration for new Wireguard Peer on Core Router.png|thumb|Example Configuration for new Wireguard Peer on Core Router]]&lt;br /&gt;
To get a member onto the network, they will send an admin of the project their randomly generated Wireguard key during the setup via the OpenWRT script. Here are the steps that admin will have to follow to get them up and running on the server side:&lt;br /&gt;
&lt;br /&gt;
# Log in on the [https://router.core.cghmn:8443 Core Router] over an existing CGHMN network link&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Peer Generator&lt;br /&gt;
# You will be asked to enter some data for the new peer, enter the following: &lt;br /&gt;
## &#039;&#039;&#039;Instance:&#039;&#039;&#039; &amp;lt;code&amp;gt;WG_Member&amp;lt;/code&amp;gt;   &lt;br /&gt;
## &#039;&#039;&#039;Endpoint:&#039;&#039;&#039; &amp;lt;code&amp;gt;wg-admin.cursedsilicon.net:42070&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;member.&#039;&#039;&amp;lt;Nickname of the new member&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Public Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;their Wireguard public key they&#039;ve sent over&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Private Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Address:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;Next highest IP from 100.89.128.0/22, this is their tunnel IP and is auto-filled&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Pre-Shared Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Allowed IPs:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;the same as Address&amp;gt;&#039;&#039;, &#039;&#039;&amp;lt;their routed subnet, [[How to Get Connected#But wait, what even is their routed subnet?|see below]]&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Keepalive interval:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;blank&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;DNS Servers:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;default value&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit the &amp;quot;Store and generate next&amp;quot; button&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Instances&lt;br /&gt;
# Hit the &amp;quot;Apply&amp;quot; button&lt;br /&gt;
# Do &#039;&#039;&#039;either one&#039;&#039;&#039; &#039;&#039;&#039;(not both!)&#039;&#039;&#039; of these steps, depending on if you can SSH into the GRETAP endpoint container:&lt;br /&gt;
## SSH into the CGHMN Proxmox Server and enter the command &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt;&lt;br /&gt;
## SSH directly into the GRETAP endpoint (formerly VXLAN endpoint) container with &amp;lt;code&amp;gt;ssh root@172.23.4.103&amp;lt;/code&amp;gt;&lt;br /&gt;
# From there, run the following command: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh &amp;lt;member-tunnel-ip&amp;gt; &amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; where you replace &amp;lt;code&amp;gt;&amp;lt;member-tunnel-ip&amp;gt;&amp;lt;/code&amp;gt; with the IP tunnel address of the member as it was set above in the &#039;&#039;&#039;Address&#039;&#039;&#039; field, without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; CIDR subnet mask, and replace the &amp;lt;code&amp;gt;&amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; with the same value you&#039;ve entered above in the &#039;&#039;&#039;Name&#039;&#039;&#039; field. For example, like this: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh 100.89.128.6 member.snep.test&amp;lt;/code&amp;gt; This will create a GRETAP (and for legacy purposes, a VXLAN) interface and bring them up automagically. &#039;&#039;Ignore the fact it still says &amp;quot;VXLAN&amp;quot; everywhere, it does both.&#039;&#039;&lt;br /&gt;
# Now you can send the member their Wireguard Tunnel IP and their routed subnet over and they can finish their client-side setup according to the mini-tutorial above.&lt;br /&gt;
# Rember to add the member and their tunnel and subnet IPs to the [[CGHMN-IP-Allocations|IP allocations page]] :)&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;br /&gt;
&lt;br /&gt;
=== After you get connected ===&lt;br /&gt;
There are a few optional things you might want to do.&lt;br /&gt;
&lt;br /&gt;
==== Network mailing list ====&lt;br /&gt;
There is a mailing list you can subscribe to if you want to be notified about things that may affect CGHMN or core services. You can subscribe to the list here: https://berwick-upon-tweed.cobaltqu.be/postorius/lists/cghmn-announce.lists.cobaltqu.be/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need to post to the list, you will need to subscribe before you can be added to the list of poster.&lt;br /&gt;
&lt;br /&gt;
==== Explore things available on the network ====&lt;br /&gt;
There is a collection of [[services people are running]] - things like email/hosting/chat/search/etc.&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=306</id>
		<title>CGHMN 1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=306"/>
		<updated>2025-11-22T14:01:29Z</updated>

		<summary type="html">&lt;p&gt;Snep: Add some stuff to my (Snep) ToDo list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
&#039;&#039;&#039;Ideally I wanna have this ready by April 24th 2026? Being able to do a talk and be like &amp;quot;by the way we just launched it go sign up&amp;quot; would be huge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tracking sheet for &amp;quot;what would we want in a general 1.0 release&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s break these down by user just to keep division of labor easy. This isn&#039;t a &amp;quot;we will do this&amp;quot; so much as a &amp;quot;request for comments&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== CursedSilicon suggestions ===&lt;br /&gt;
&lt;br /&gt;
We can trivially set up an OpenWRT build bot. But a custom splash screen that just asks for a users Wireguard+IP details would be fantastic for user onboarding. Need someone who can write Lua to do this though&lt;br /&gt;
&lt;br /&gt;
=== ch0ccyra1n suggestions ===&lt;br /&gt;
&amp;lt;s&amp;gt;We should ensure that there is a better way to do onboarding. Some sort of web form on the clearnet for signups (or signup requests) would be good to have.&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&amp;lt;/s&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[https://signup.cghmn.org done]]&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sneps ToDo- and Wishlist: ===&lt;br /&gt;
&lt;br /&gt;
* Create an IP plan, removing the 172.23.0.0/16 subnet and planing ahead for distributed CGHMN entry nodes across the world&lt;br /&gt;
* Storage Situation on the OVH Proxmox, either switch to thin provisioned VM disks or have a shared storage server with SMB and NFS?&lt;br /&gt;
* Proper backups of the CGHMN Proxmox box&lt;br /&gt;
* Separate Wireguard tunnels for admin work/cote hosting and members, so that not everything breaks down for 15 seconds when new clients are added&lt;br /&gt;
* Distributed network entry points across the world&lt;br /&gt;
* Blog for Updates and Changes on the CGHMN?&lt;br /&gt;
* Forum?&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=305</id>
		<title>CGHMN 1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=305"/>
		<updated>2025-11-19T13:17:16Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added some stuff to my todo list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
&#039;&#039;&#039;Ideally I wanna have this ready by April 24th 2026? Being able to do a talk and be like &amp;quot;by the way we just launched it go sign up&amp;quot; would be huge&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tracking sheet for &amp;quot;what would we want in a general 1.0 release&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s break these down by user just to keep division of labor easy. This isn&#039;t a &amp;quot;we will do this&amp;quot; so much as a &amp;quot;request for comments&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== CursedSilicon suggestions ===&lt;br /&gt;
&lt;br /&gt;
We can trivially set up an OpenWRT build bot. But a custom splash screen that just asks for a users Wireguard+IP details would be fantastic for user onboarding. Need someone who can write Lua to do this though&lt;br /&gt;
&lt;br /&gt;
=== ch0ccyra1n suggestions ===&lt;br /&gt;
&amp;lt;s&amp;gt;We should ensure that there is a better way to do onboarding. Some sort of web form on the clearnet for signups (or signup requests) would be good to have.&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&amp;lt;/s&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[https://signup.cghmn.org done]]&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sneps ToDo- and Wishlist: ===&lt;br /&gt;
&lt;br /&gt;
* Create an IP plan, removing the 172.23.0.0/16 subnet and planing ahead for distributed CGHMN entry nodes across the world&lt;br /&gt;
* Storage Situation on the OVH Proxmox, either switch to thin provisioned VM disks or have a shared storage server with SMB and NFS?&lt;br /&gt;
* Proper backups of the CGHMN Proxmox box&lt;br /&gt;
* Separate Wireguard tunnels for admin work/cote hosting and members, so that not everything breaks down for 15 seconds when new clients are added&lt;br /&gt;
* Distributed network entry points across the world&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=302</id>
		<title>CGHMN 1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_1.0&amp;diff=302"/>
		<updated>2025-11-06T22:50:06Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added my (Sneps) changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
== Tracking sheet for &amp;quot;what would we want in a general 1.0 release&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s break these down by user just to keep division of labor easy. This isn&#039;t a &amp;quot;we will do this&amp;quot; so much as a &amp;quot;request for comments&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== CursedSilicon suggestions ===&lt;br /&gt;
&lt;br /&gt;
We can trivially set up an OpenWRT build bot. But a custom splash screen that just asks for a users Wireguard+IP details would be fantastic for user onboarding. Need someone who can write Lua to do this though&lt;br /&gt;
&lt;br /&gt;
=== ch0ccyra1n suggestions ===&lt;br /&gt;
&amp;lt;s&amp;gt;We should ensure that there is a better way to do onboarding. Some sort of web form on the clearnet for signups (or signup requests) would be good to have.&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&amp;lt;/s&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;&amp;lt;sup&amp;gt;[https://signup.cghmn.org done]]&amp;lt;/sup&amp;gt;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sneps ToDo- and Wishlist: ===&lt;br /&gt;
&lt;br /&gt;
* Create an IP plan, removing the 172.23.0.0/16 subnet and planing ahead for distributed CGHMN entry nodes across the world&lt;br /&gt;
* Storage Situation on the OVH Proxmox, either switch to thin provisioned VM disks or have a shared storage server with SMB and NFS?&lt;br /&gt;
* Proper backups of the CGHMN Proxmox box&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_NAT_and_Firewalls&amp;diff=299</id>
		<title>CGHMN NAT and Firewalls</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_NAT_and_Firewalls&amp;diff=299"/>
		<updated>2025-10-27T12:30:06Z</updated>

		<summary type="html">&lt;p&gt;Snep: Small adjustment in the last sentence on how to allow inbound ports for clearer instructions on where to set up the rules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== A brief history on how the internet worked in the 1990&#039;s ===&lt;br /&gt;
&lt;br /&gt;
[[Compu-Global-Hyper-Mega-Net|Compu-Global-Hyper-Mega-Net (CGHMN)]] exists in a difficult kind of space. We aim to emulate &amp;quot;the old web&amp;quot;. A time of roughly &amp;quot;1995 to around 2005 or so&amp;quot;. A sort of nebulous &amp;quot;Before Web 2.0 took off&amp;quot; kind of period. Though, really we support anything that speaks ethernet and (usually) TCP/IP. We&#039;ve had devices as old as a DOS 286 PC clone connected successfully. Most users trend toward Windows XP as their platform of choice due to its relative flexibility and widespread hardware and software support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately for all of us we live at the &amp;quot;[[wikipedia:End_of_history|end of history]]&amp;quot;. In 1995 the &amp;quot;World Wide Web&amp;quot; was in its infancy in such a way that every single year brought quantum technological leaps over the previous year. By the end of the millennium we&#039;d gone from rudimentary analog Dial-Up services to &#039;&#039;Wireless Networking&#039;&#039; being accessible to consumers (Apple&#039;s AirPort routers alone showed up in 1999)&lt;br /&gt;
&lt;br /&gt;
However on a technical level this began to create severe issues. The internet as it was originally designed assumed simple &amp;quot;end-to-end&amp;quot; connectivity. Every computer on the internet could (more or less) talk to another computer without exception.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;This created two major problems:&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first one was IP exhaustion. Even by the 1990&#039;s there was an understanding that there simply wouldn&#039;t be enough IP addresses for everyone on the internet. This needed to be fixed, and fast! This lead to IPv6 as an evolutionary upgrade (a problem the internet still struggles to even deploy in 2025, despite being ratified in 1998)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second, and much more obvious problem was security. By the year 2000 it was obviously apparent that every machine being able to talk to every other machine on Earth was a problem. Particularly when the dominant operating system these machines ran was what could be charitably described as...&amp;quot;not great&amp;quot; in terms of security. In the 2000&#039;s this would only escalate as the &amp;quot;[[wikipedia:ILOVEYOU|ILOVEYOU]]&amp;quot; worm gave way to some of Windows XP&#039;s greatest hits, [[wikipedia:Blaster_(computer_worm)|Blaster]], [[wikipedia:Sasser_(computer_worm)|Sasser]], [[wikipedia:Mydoom|Mydoom]], [[wikipedia:Nimda|Nimda]] and [[wikipedia:Conficker|Conficker]]. Among others. &lt;br /&gt;
&lt;br /&gt;
A remedy proposed in the 1990&#039;s to the issue of IP exhaustion was &amp;quot;Network Address Translation&amp;quot; or &amp;quot;NAT&amp;quot;. In layman terms this allows a bunch of computers to all sit behind a single IP address using a device such as a router. This technology is so ubiquitous that even in 2025 at time of writing it&#039;s still the defacto standard for home and business computers and other devices to access the modern internet.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;However,&#039;&#039;&#039;&#039;&#039; this technology came at a cost. The internet as most folks imagine (or remember it) was originally built on the idea that every computer had its own, unique, IP address. NAT broke that assumption. And, in doing so, programs broke. Sometimes completely with services like FTP, sometimes in subtle ways. Like being unable to connect certain game players in a StarCraft lobby. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem that NAT introduced was that while &amp;quot;outbound&amp;quot; traffic would work fine. Such as you connecting to a website. If a program needed to &#039;&#039;receive&#039;&#039; data on your local computer, it could no longer simply sit and wait for a connection from a remote PC. An example would be AOL Instant Messenger (AIM). Chats between users are routed through a remote server. You and the Other User talk to a central server and it handles sending messages to-and-fro. &#039;&#039;However&#039;&#039; to save on bandwidth, sending files happens directly between users. If either user is behind NAT. They won&#039;t be able to &amp;quot;see&amp;quot; the remote computer and send data to it as desired.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;solution&amp;quot; to this problem is known as &#039;&#039;&#039;&#039;&#039;Port Forwarding&#039;&#039;&#039;&#039;&#039;. You tell your router that [these ports] *always* go to [this IP address on the LAN] exclusively. This (mostly) solved the problem at the time. Additional solutions were proposed such as &amp;quot;UPnP&amp;quot; to allow programs to ask the router to forward ports for them dynamically. However, support for this was few-and-far-between (mostly BitTorrent clients) and in time it faded into oblivion. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As stated before, we live at the end of history. Which means we have the benefit of looking back on what was, and understanding the flaws. Which (finally) brings us to the point of this wiki page. &lt;br /&gt;
&lt;br /&gt;
=== Okay but what does that have to do with CGHMN? ===&lt;br /&gt;
Every CGHMN user is allocated a /24 block of IP&#039;s. Effectively every user has 253 IP addresses to use as they&#039;d like. This was a deliberate decision both to maximize the amount of freedom users would have to connect ALL their retro equipment if desired, and to try and allow direct end-to-end connectivity that the old web &amp;quot;expects&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;However&#039;&#039;&#039;&#039;&#039; because we have the benefit of historical hindsight. Having directly allocated IP addresses does not mean that your devices are directly exposed to the network. By default (if using OpenWRT with Snep&#039;s setup script) your IP block will be &#039;&#039;firewalled&#039;&#039; against incoming connections. This is a necessary security measure because because of the very nature of &amp;quot;running a retro network&amp;quot;. Connecting machines that are (likely) un-patched would make them immediately vulnerable to attack. Even before they&#039;re properly configured for service by the end user.&lt;br /&gt;
&lt;br /&gt;
=== So, what stuff breaks, exactly? ===&lt;br /&gt;
&lt;br /&gt;
There&#039;s no definitive list of &amp;quot;what&amp;quot; breaks under this decision. A broad (but by no means encompassing) list of things that &#039;&#039;won&#039;t work&#039;&#039; are&lt;br /&gt;
&lt;br /&gt;
- Servers. You won&#039;t be able to run any kind of server or service (EG: hosting your own website, running a game server) without the ability for users to connect to it&lt;br /&gt;
&lt;br /&gt;
- Games that &#039;&#039;&#039;&#039;&#039;don&#039;t&#039;&#039;&#039;&#039;&#039; use a server browser. Games like Quake or Halo where users all connect to a single server to play on will work (provided the server is either port forwarded or the firewall is disabled) but other games such as StarCraft or Command &amp;amp; Conquer have players connect dynamically connect to a single player as the &amp;quot;host&amp;quot; (typically the player that created the game lobby). These will not work&lt;br /&gt;
&lt;br /&gt;
- FTP! FTP is such an old protocol that the &#039;&#039;&#039;&#039;&#039;remote server&#039;&#039;&#039;&#039;&#039; initiates a connection back to the client and then begins sending files that way. This was fixed in [https://datatracker.ietf.org/doc/html/rfc1579 RFC 1579] with the &amp;quot;Firewall-Friendly FTP&amp;quot; proposal. Unfortunately despite being proposed in February 1994, some software such as Microsoft FrontPage did not enable it until 2003(!)&lt;br /&gt;
&lt;br /&gt;
- AIM file transfers. As described already on this wiki page, AIM (and IRC and other chat clients such as MSN or Yahoo) all use a direct connection between two computers to send files across a network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I opt-out out? ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;It should be made completely clear that opting out of using the OpenWRT firewall is not a decision that should be made lightly. We cannot explicitly guarantee that a user won&#039;t accidentally (or intentionally) release a malware Pandora&#039;s Box on the network. Blaster/Sasser/Mydoom/ILOVEYOU/etc are still real malware samples that can be downloaded and executed either by mistake or by a malicious user. We highly recommend installing any and all software patches that were (or are) available for your chosen systems before doing this!&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are two &amp;quot;modes&amp;quot; of opt-out available. Depending on user preference. &lt;br /&gt;
&lt;br /&gt;
The most drastic is simply to disable OpenWRT&#039;s firewall completely. This means any machine you plug in will have direct access to the network and any other devices on the network will be able to directly access it. If you choose this option we highly recommend putting any machines behind a (preferably modern!) Firewall and then port forwarding as necessary &lt;br /&gt;
&lt;br /&gt;
The other option is to set a static (fixed) IP address on the device you want to run servers or play games from. Once this is done you can access the OpenWRT Firewall page (Network -&amp;gt; Firewall -&amp;gt; Traffic Rules) and manually allow the required ports for that specific host to pass the firewall.&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=217</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=217"/>
		<updated>2025-06-15T06:00:45Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added cursed&amp;#039;s mail server IP dibs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|-&lt;br /&gt;
|Servers at /dev/hack&lt;br /&gt;
| -&lt;br /&gt;
|172.23.3/22&lt;br /&gt;
|172.23.0.1&lt;br /&gt;
|May add more servers/services physically located at /dev/hack so might as well give them an IP range&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Peer Endpoint/Via&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|/dev/hack (usually)&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| DIY&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|OPNsense box and PPPoE server&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Hadn69&lt;br /&gt;
| DIY&lt;br /&gt;
|100.89.128.5&lt;br /&gt;
|100.96.5.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Dell PowerEdge R620&lt;br /&gt;
|100.89.128.6&lt;br /&gt;
|100.96.6.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Theothertom&lt;br /&gt;
| Unknown&lt;br /&gt;
|100.89.128.7&lt;br /&gt;
|100.96.7.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Raspberry Pi&lt;br /&gt;
|100.89.128.8&lt;br /&gt;
|100.96.8.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
| PPTP Bridge on Debian VM&lt;br /&gt;
|100.89.128.9&lt;br /&gt;
|100.96.9.0/24&lt;br /&gt;
| Using Microsoft Virtual Server 2005 under Windows Server 2003.&lt;br /&gt;
|-&lt;br /&gt;
|GothPanda&lt;br /&gt;
| OpenWRT&lt;br /&gt;
|100.89.128.10&lt;br /&gt;
|100.96.10.0/24&lt;br /&gt;
| TP-Link Archer C59 v2&lt;br /&gt;
|-&lt;br /&gt;
|ch0ccyra1n&lt;br /&gt;
| Unknown&lt;br /&gt;
|100.89.128.11&lt;br /&gt;
|100.96.11.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Chromaryu&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.12&lt;br /&gt;
|100.96.12.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Spz2024&lt;br /&gt;
|OpenWRT VM&lt;br /&gt;
|100.89.128.16&lt;br /&gt;
|100.96.16.0/24&lt;br /&gt;
| OpenWRT in QEMU on Windows host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.53&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Snep&#039;&#039;&lt;br /&gt;
|&#039;&#039;snep.retro&#039;&#039;&lt;br /&gt;
|&#039;&#039;ns1.snep.retro&#039;&#039;&lt;br /&gt;
|&#039;&#039;172.23.8.11&#039;&#039;&lt;br /&gt;
| Currently offline&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
|lily.retro&lt;br /&gt;
|ns1.lily.retro&lt;br /&gt;
|100.96.6.250&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
|loganius.retro&lt;br /&gt;
|hugh.loganius.retro&lt;br /&gt;
|100.96.9.100&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|theothertom&lt;br /&gt;
|theothertom.retro&lt;br /&gt;
|north-foreland.theothertom.retro&lt;br /&gt;
|100.96.7.12&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|118&lt;br /&gt;
|junko.coyote.retro&lt;br /&gt;
|172.23.3.173&lt;br /&gt;
|Network diagnostics&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
|123&lt;br /&gt;
|kira.loganius.retro&lt;br /&gt;
|172.23.0.52&lt;br /&gt;
|WMS Server&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Cursed&#039;&#039;&lt;br /&gt;
|&#039;&#039;-&#039;&#039;&lt;br /&gt;
|&#039;&#039;-&#039;&#039;&lt;br /&gt;
|&#039;&#039;172.23.0.69&#039;&#039;&lt;br /&gt;
|&#039;&#039;Future CGHMN Mail Server&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Compu-Global-Hyper-Mega-Net]]&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=194</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=194"/>
		<updated>2025-05-26T13:38:25Z</updated>

		<summary type="html">&lt;p&gt;Snep: Slight updates to the setup script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compu-Global-Hyper-Mega-Net]]&lt;br /&gt;
This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Since the service is in &amp;quot;closed beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 1: ===&lt;br /&gt;
[[Signup|&#039;&#039;&#039;Let us know you&#039;d like to connect!&#039;&#039;&#039;]] &lt;br /&gt;
&lt;br /&gt;
(We&#039;ll need information from you such as your Wireguard Pubkey to let you connect to the network)[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router: &amp;lt;code&amp;gt;wget https://cghmn.snep.zip/connect.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Send one of the CGHMN admins (currently CursedSilicon and Snep) that key so we can add your router to our Wireguard server. If you cannot copy-paste, for example, because you&#039;re on a VM VNC console, you can run &amp;lt;code&amp;gt;ash setup-cghmn.sh pubkey-qr&amp;lt;/code&amp;gt; to get a QR code printout of your public key, which can be scanned with a phone, tablet or software QR code parser to get the key as copy-pastable text.&lt;br /&gt;
# In return, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.89.128.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.96.x.0/24&amp;lt;/code&amp;gt;) from us. These will be needed on the third and final step of the setup script:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
=== Get Connected - Manually (Linux, Wireguard only, GRETAP follows shortly) ===&lt;br /&gt;
In case you want to setup a connection into the network manually, here are the required steps and information you should be needing:&lt;br /&gt;
&lt;br /&gt;
* Generate a Wireguard private key and public key, this command writes a fresh Wireguard private key to &amp;lt;code&amp;gt;private-key&amp;lt;/code&amp;gt; and the corresponsing public key to &amp;lt;code&amp;gt;public-key&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ wg genkey | tee private-key | wg pubkey &amp;gt; public-key&lt;br /&gt;
&lt;br /&gt;
* NEVER share your private key, even with us! It should never be required outside of your own Wireguard setup!&lt;br /&gt;
* You will, however, need to share your public key with us. Send CursedSilicon or Snep on the Discord or via IRC a message including the public key and we&#039;ll add you to the tunnel.&lt;br /&gt;
* In return, you&#039;ll get two IP addresses from us: Your tunnel IP address, with which your router talks to our router, and a routed subnet, from which you can assign IPs to your own machines so they can talk to other CGHMN member devices on the network without NAT in the way.&lt;br /&gt;
* Next, you&#039;ll need to fill a Wireguard configuration file with the two IP addresses, like below:&lt;br /&gt;
&lt;br /&gt;
 [Interface]&lt;br /&gt;
 PrivateKey = &amp;lt;Your private key goes here&amp;gt;&lt;br /&gt;
 Address = &amp;lt;Your tunnel IP address goes here&amp;gt;/32&lt;br /&gt;
 DNS = 100.89.128.0&lt;br /&gt;
 MTU = 1420&lt;br /&gt;
 &lt;br /&gt;
 [Peer]&lt;br /&gt;
 PublicKey = k/QiJIbMakMKgTCHVt8/D+8k4DzRVM6U33F3gMZfRUg=&lt;br /&gt;
 Endpoint = wg-admin.cursedsilicon.net:42070&lt;br /&gt;
 AllowedIPs = 172.23.0.0/16, 100.89.128.0/22, 100.96.0.0/13&lt;br /&gt;
 PersistentKeepalive = 15&lt;br /&gt;
&lt;br /&gt;
* Save this file as &amp;lt;code&amp;gt;wg-cghmn.conf&amp;lt;/code&amp;gt;, for example.&lt;br /&gt;
* Then, run &amp;lt;code&amp;gt;wg-quick up ./wg-cghmn.conf&amp;lt;/code&amp;gt;, perhaps requiring &amp;lt;code&amp;gt;doas&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;, to bring the tunnel up and connect to the network!&lt;br /&gt;
&lt;br /&gt;
This should bring whatever system you&#039;ve set the tunnel up on onto the network and is now reachable for other members on the network, as long as the firewall on your device is congfigured accordingly, of course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;TODO: Add example of routed subnet configuration, perhaps on a different Wiki site&lt;br /&gt;
&lt;br /&gt;
=== Get connected - Server Side, the Admins Guide ===&lt;br /&gt;
[[File:Example Configuration for new Wireguard Peer on Core Router.png|thumb|Example Configuration for new Wireguard Peer on Core Router]]&lt;br /&gt;
To get a member onto the network, they will send an admin of the project their randomly generated Wireguard key during the setup via the OpenWRT script. Here are the steps that admin will have to follow to get them up and running on the server side:&lt;br /&gt;
&lt;br /&gt;
# Log in on the [https://router.core.cghmn:8443 Core Router] over an existing CGHMN network link&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Peer Generator&lt;br /&gt;
# You will be asked to enter some data for the new peer, enter the following: &lt;br /&gt;
## &#039;&#039;&#039;Instance:&#039;&#039;&#039; &amp;lt;code&amp;gt;WG_Member&amp;lt;/code&amp;gt;   &lt;br /&gt;
## &#039;&#039;&#039;Endpoint:&#039;&#039;&#039; &amp;lt;code&amp;gt;wg-admin.cursedsilicon.net:42070&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;member.&#039;&#039;&amp;lt;Nickname of the new member&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Public Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;their Wireguard public key they&#039;ve sent over&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Private Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Address:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;Next highest IP from 100.89.128.0/22, this is their tunnel IP and is auto-filled&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Pre-Shared Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Allowed IPs:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;the same as Address&amp;gt;&#039;&#039;, &#039;&#039;&amp;lt;their routed subnet, [[How to Get Connected#But wait, what even is their routed subnet?|see below]]&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Keepalive interval:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;blank&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;DNS Servers:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;default value&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit the &amp;quot;Store and generate next&amp;quot; button&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Instances&lt;br /&gt;
# Hit the &amp;quot;Apply&amp;quot; button&lt;br /&gt;
# Do &#039;&#039;&#039;either one&#039;&#039;&#039; &#039;&#039;&#039;(not both!)&#039;&#039;&#039; of these steps, depending on if you can SSH into the GRETAP endpoint container:&lt;br /&gt;
## SSH into the CGHMN Proxmox Server and enter the command &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt;&lt;br /&gt;
## SSH directly into the GRETAP endpoint (formerly VXLAN endpoint) container with &amp;lt;code&amp;gt;ssh root@172.23.4.103&amp;lt;/code&amp;gt;&lt;br /&gt;
# From there, run the following command: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh &amp;lt;member-tunnel-ip&amp;gt; &amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; where you replace &amp;lt;code&amp;gt;&amp;lt;member-tunnel-ip&amp;gt;&amp;lt;/code&amp;gt; with the IP tunnel address of the member as it was set above in the &#039;&#039;&#039;Address&#039;&#039;&#039; field, without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; CIDR subnet mask, and replace the &amp;lt;code&amp;gt;&amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; with the same value you&#039;ve entered above in the &#039;&#039;&#039;Name&#039;&#039;&#039; field. For example, like this: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh 100.89.128.6 member.snep.test&amp;lt;/code&amp;gt; This will create a GRETAP (and for legacy purposes, a VXLAN) interface and bring them up automagically. &#039;&#039;Ignore the fact it still says &amp;quot;VXLAN&amp;quot; everywhere, it does both.&#039;&#039;&lt;br /&gt;
# Now you can send the member their Wireguard Tunnel IP and their routed subnet over and they can finish their client-side setup according to the mini-tutorial above.&lt;br /&gt;
# Rember to add the member and their tunnel and subnet IPs to the [[CGHMN-IP-Allocations|IP allocations page]] :)&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;br /&gt;
&lt;br /&gt;
=== After you get connected ===&lt;br /&gt;
There are a few optional things you might want to do.&lt;br /&gt;
&lt;br /&gt;
==== Network mailing list ====&lt;br /&gt;
There is a mailing list you can subscribe to if you want to be notified about things that may affect CGHMN or core services. You can subscribe to the list here: https://berwick-upon-tweed.cobaltqu.be/postorius/lists/cghmn-announce.lists.cobaltqu.be/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need to post to the list, you will need to subscribe before you can be added to the list of poster.&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=192</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=192"/>
		<updated>2025-05-25T21:33:01Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Peer Endpoint/Via&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|/dev/hack (usually)&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| DIY&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|OPNsense box and PPPoE server&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Hadn69&lt;br /&gt;
| DIY&lt;br /&gt;
|100.89.128.5&lt;br /&gt;
|100.96.5.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Dell PowerEdge R620&lt;br /&gt;
|100.89.128.6&lt;br /&gt;
|100.96.6.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Theothertom&lt;br /&gt;
| Unknown&lt;br /&gt;
|100.89.128.7&lt;br /&gt;
|100.96.7.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Raspberry Pi&lt;br /&gt;
|100.89.128.8&lt;br /&gt;
|100.96.8.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
| PPTP Bridge on Debian VM&lt;br /&gt;
|100.89.128.9&lt;br /&gt;
|100.96.9.0/24&lt;br /&gt;
| Using Microsoft Virtual Server 2005 under Windows Server 2003.&lt;br /&gt;
|-&lt;br /&gt;
|GothPanda&lt;br /&gt;
| Unknown&lt;br /&gt;
|100.89.128.10&lt;br /&gt;
|100.96.10.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|ch0ccyra1n&lt;br /&gt;
| Unknown&lt;br /&gt;
|100.89.128.11&lt;br /&gt;
|100.96.11.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Chromaryu&lt;br /&gt;
|Unknown&lt;br /&gt;
|100.89.128.12&lt;br /&gt;
|100.96.12.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.53&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Snep&#039;&#039;&lt;br /&gt;
|&#039;&#039;snep.retro&#039;&#039;&lt;br /&gt;
|&#039;&#039;ns1.snep.retro&#039;&#039;&lt;br /&gt;
|&#039;&#039;172.23.8.11&#039;&#039;&lt;br /&gt;
| Currently offline&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
|lily.retro&lt;br /&gt;
|ns1.lily.retro&lt;br /&gt;
|100.96.6.250&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
|loganius.retro&lt;br /&gt;
|hugh.loganius.retro&lt;br /&gt;
|100.96.9.100&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|theothertom&lt;br /&gt;
|theothertom.retro&lt;br /&gt;
|north-foreland.theothertom.retro&lt;br /&gt;
|100.96.7.12&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|118&lt;br /&gt;
|junko.coyote.retro&lt;br /&gt;
|172.23.3.173&lt;br /&gt;
|Network diagnostics&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Compu-Global-Hyper-Mega-Net]]&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=183</id>
		<title>CGHMN DNS Information</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_DNS_Information&amp;diff=183"/>
		<updated>2025-05-16T06:49:26Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added info about default DNS being 100.89.128.0 in the WG tunnel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About this page ==&lt;br /&gt;
This page exists to document information about the DNS of CGHMN, and some of the complexities that comes with a DNS infrastructure made of up varying platforms across decades of the protocol&#039;s evolution.  See [[CGHMN-Demo-Network]] for detailed information about the underlying infrastructure &lt;br /&gt;
&lt;br /&gt;
== DNS Configuration Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
==== Pointing to the right DNS server ====&lt;br /&gt;
CGHMN has several DNS servers in use for differing purposes.  &#039;&#039;&#039;The correct default DNS server you should be pointing at while getting started is 172.23.0.1 from the core network, or 100.89.128.0 from the Wireguard tunnel&#039;&#039;&#039;.  This is the router, which then forwards the requests to the actual DNS.&lt;br /&gt;
&lt;br /&gt;
==== What the different DNS servers are (or, is this thing on?) ====&lt;br /&gt;
CGHMN&#039;s DNS is configured such that there are three core servers that perform response modifications to allow the recreation of long defunct services, perform lookups, and act as the root name server for the network, which has two internal TLD (top level domain, like .com or .net) on it.&lt;br /&gt;
&lt;br /&gt;
===== 172.23.4.101 - ns1.cghmn =====&lt;br /&gt;
This is the root name server for the .retro and .cghmn TLDs, as well as the 23.172.in-addr.arpa and 96.100.in-addr.arpa reverse lookup zones.  This server exists to delegate domains to members of CGHMN, and serve as the name server for the internal network.  This server is useful to perform a &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you want to see if a subdomain has been delegated, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dig ns example.retro. @172.23.4.101&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
 nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.101&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=ns&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; example.retro.&lt;br /&gt;
This server does not perform lookups.  It is currently running BIND.&lt;br /&gt;
&lt;br /&gt;
===== 172.23.4.105 =====&lt;br /&gt;
This is the recursive lookup server for the network.  It is configured to recursively look up all requests for CGHMN domains, starting with ns1.cghmn, and then moving up based on delegations to member servers.  Regular lookups still take place against real TLDs, if something needs to be pulled off the internet.  This server is currently running BIND.  This server is useful to use &amp;lt;code&amp;gt;dig&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nslookup&amp;lt;/code&amp;gt; against if you wish to see if your domain is resolving on the network after it has been delegated to you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dig a test.example.retro. @172.23.4.105&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
 nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.105&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=a&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; test.example.retro.&lt;br /&gt;
&lt;br /&gt;
===== 172.23.4.104 - legacydns.cghmhn =====&lt;br /&gt;
This is a dnsmasq server that is currently being used to perform modifications to DNS answers, by pulling from a list of servers that need to be faked in order to make old software, such as AIM, work correctly.  This server overrides the DNS answer with these responses, so all relevant DNS records need to be added. The rationale for this is that instead of a user modifying their hosts file (which can be dozens of different DNS addresses long) we can simply return addresses that correspond within the network.  Please ask if there is a service you would like added to the network that requires this kind of override.  Otherwise, it just forwards the questions to the recursive lookup server 172.23.4.105.  This server is useful to test against if you are having trouble connecting to a legacy service that utilizes hard coded DNS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dig cname login.oscar.aol.com.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
 nslookup&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; server 172.23.4.104&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; set type=cname&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; login.oscar.aol.com.&lt;br /&gt;
&lt;br /&gt;
===== 172.23.0.1 =====&lt;br /&gt;
This is the core router for the network, which also serves as a DNS forwarding.  It is currently forwarding all traffic to legacydns.cghmn, and performs no additional lookups or translation.  This server is useful to test against for any purpose.&lt;br /&gt;
&lt;br /&gt;
== Hosting Your Own DNS Name Server ==&lt;br /&gt;
&lt;br /&gt;
=== About self-hosting ===&lt;br /&gt;
CGHMN can host member DNS zones on its nameserver, however it is welcome and even encouraged for them to explore setting up their own DNS name server for their subnet.  This can be done with most DNS server software, provided they can be recursively looked up against by BIND.  Please note that if you intend to run old Microsoft DNS, you will need to let us know that you are running it, as exceptions to the lookup procedure need to be added to the 172.23.4.105 server.&lt;br /&gt;
&lt;br /&gt;
You will need to reach out to CGHMN and let us know you want to host your domain, and give us the domain, NS record, A record, and IP address of the DNS server.&lt;br /&gt;
&lt;br /&gt;
=== What you need ===&lt;br /&gt;
&lt;br /&gt;
==== A server ====&lt;br /&gt;
You will need a computer connected to CGHMN, running a DNS server software that is able to act as an authoritative name server.  It will need to have UDP port 53 and TCP port 53 allowed in its firewall.  You do not need a lot of power, but it should be fairly reliable as everything will depend on it to find your servers and services.&lt;br /&gt;
&lt;br /&gt;
==== A SOA record ====&lt;br /&gt;
You will need a SOA (Start of Authority) record, this is the record that tells other DNS servers &amp;quot;I am in charge of this domain and here is the information about it&amp;quot;.  This record will need to be pointed to an NS (Name Server) record.&lt;br /&gt;
&lt;br /&gt;
==== A NS record ====&lt;br /&gt;
You will need a NS record, this is the record that says &amp;quot;this is where you ask about this domain&amp;quot;.  This record should point at an A record.&lt;br /&gt;
&lt;br /&gt;
==== An A record ====&lt;br /&gt;
You will need an A record, this is the record that maps the name of the DNS server to an IP address.  This should be the FQDN (Fully Qualified Domain Name) of the DNS server, and the IP address it is listening to.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
Your server will need to be configured as an authoritative name server.  To do this, it must run a DNS name server software, which should have a zone containing an the SOA, which points at the NS, which points at the A.&lt;br /&gt;
&lt;br /&gt;
== DNS Quirks ==&lt;br /&gt;
&lt;br /&gt;
=== Windows DNS ===&lt;br /&gt;
Old Windows DNS servers will misbehave when BIND&#039;s recursive lookup server attempts to do a lookup against them, and will end in failure.  The way around this is to disable edns lookups against this particular server in the BIND configuration.  Bind is supposed to attempt again with edns disabled but it seems with Windows DNS specifically to fail.&lt;br /&gt;
&lt;br /&gt;
=== DNS manipulation with multiple RR types ===&lt;br /&gt;
If a record is being looked up, and this record was once an A record, but still exists and is now a CNAME record, you will have an issue where the lookup will work with tools, but fail with actual lookups.  This is because the CNAME record being returned from the real DNS server will take precedent over the fake A record.  To resolve this issue, you have to fake both the CNAME and the A record.&lt;br /&gt;
[[Category:Compu-Global-Hyper-Mega-Net]]&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN_Certificate_Authority&amp;diff=175</id>
		<title>CGHMN Certificate Authority</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN_Certificate_Authority&amp;diff=175"/>
		<updated>2025-05-15T20:10:02Z</updated>

		<summary type="html">&lt;p&gt;Snep: Created page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== The CGHMN Certificate Authority ===&lt;br /&gt;
... is used to create internal certificates for old SSL and TLS applications with our custom domains .cghmn and .retro, which cannot receive actual, real world publicly trusted certificates.&lt;br /&gt;
&lt;br /&gt;
To trust those certificates, navigate to http://certs.cghmn, download the Root CA certificate and install it into your operating systems root CA store.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING:&#039;&#039;&#039; Only do this on retro machines that are attached to the CGHMN, don&#039;t do this on modern machines with data you care for and websites you&#039;d rather not have potentially [[wikipedia:Man-in-the-middle_attack|MITM]]&#039;ed. Installing and trustig the Root CA certificate would allow us (or anyone that has access to the root CA public and private keys together with the signing password) to create whatever certificate we like for any domain name out there and fool your OS into thinking it can trust that self-signed certificate. &lt;br /&gt;
&lt;br /&gt;
Alternatively, you can always just click &amp;quot;Trust this page&amp;quot; or similar in your web browser and most applications that rely on SSL/TLS have some option to disable CA checking.&lt;br /&gt;
&lt;br /&gt;
=== How to obtain a certificate for your .cghmn or .retro domain ===&lt;br /&gt;
If you&#039;d like a certificate for your CGHMN internal domain, ping one of the admins in the Discord channel and pass along the following infos:&lt;br /&gt;
&lt;br /&gt;
* Domain Name: The domain you&#039;d like to receive a certificate for&lt;br /&gt;
* How to best send you your certificate, e.g. Discord DMs, E-Mail, some Messenger, Filesharing service etc., best not through a public channel&lt;br /&gt;
* Optionally:&lt;br /&gt;
** If you want a wildcard certificate, i.e. one certificate for the domain above and all subdomains underneath that domain (e.g. *.example.org)&lt;br /&gt;
** If you&#039;d like the private key to be protected with a randomly generated password&lt;br /&gt;
** What two letter code to fill into the &amp;quot;Country&amp;quot; field of the certificate, default is &amp;quot;XX&amp;quot;&lt;br /&gt;
** What to fill into the &amp;quot;State or Province&amp;quot; field of the certificate, default is &amp;quot;Global&amp;quot;&lt;br /&gt;
** What to fill into the &amp;quot;Locality&amp;quot; field of the certificate, defaut is &amp;quot;The Internet&amp;quot;&lt;br /&gt;
** What to fill into the &amp;quot;Organization Name&amp;quot; field of the certificate, default is &amp;quot;Compu Global Hyper Mega Network&amp;quot;&lt;br /&gt;
** What to fill into the &amp;quot;Organizational Unit&amp;quot; field of the certificate, default is your username&lt;br /&gt;
** What to fill into the &amp;quot;E-Mail&amp;quot; field of the certificate, default is &amp;quot;complain@mail.cghmn&amp;quot;&lt;br /&gt;
** &#039;&#039;All of the above can be freely chosen and be whatever you like&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Then we&#039;ll create the certificate, private key and full chain certificate and send it over so you can install it into whatever service you like!&lt;br /&gt;
&lt;br /&gt;
=== How to generate a certificate - For CGHMN Admins ===&lt;br /&gt;
[[File:Example Certificate Script Run.png|thumb|Script Example Output]]&lt;br /&gt;
To generate a members&#039; certificate, &amp;lt;code&amp;gt;ssh&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;pct enter&amp;lt;/code&amp;gt; into Container &amp;lt;code&amp;gt;10402&amp;lt;/code&amp;gt; with IP address &amp;lt;code&amp;gt;172.23.4.102&amp;lt;/code&amp;gt;. In the root directory should be a Bash script called &amp;lt;code&amp;gt;create-and-sign-server-csr.sh&amp;lt;/code&amp;gt;, run it with &amp;lt;code&amp;gt;bash /root/create-and-sign-server-csr.sh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It will first ask you what the output files should be called, it&#039;s best to enter something that associates the file with the target domain or member, e.g. the domain itself or the members&#039; username. It&#039;s recommended to only use alpha-numerical characters, dashes, underscores and dots.&lt;br /&gt;
&lt;br /&gt;
Next, you&#039;re asked if the key shall be protected with a password. If the member didn&#039;t specify or doesn&#039;t want one, you can just press &#039;&#039;&#039;Enter&#039;&#039;&#039; on this step to select the default value of &#039;&#039;not&#039;&#039; using a password. Otherwise type &#039;&#039;&#039;y&#039;&#039;&#039; and press &#039;&#039;&#039;Enter&#039;&#039;&#039; to confirm, then generate a random password with a website, tool or password manager of your choice and input said password in the &amp;quot;Enter PEM pass phrase&amp;quot; prompt. The password needs to be at least 4 characters long!&lt;br /&gt;
&lt;br /&gt;
The next step asks you for the hostnames of the certificate. Enter all hostnames you want the certificate to be valid for, e.g. &amp;lt;code&amp;gt;example.retro&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;www.example.retro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mail.example.retro&amp;lt;/code&amp;gt;. If the member requested a wildcard certificate, enter the base domain first, e.g. &amp;lt;code&amp;gt;example.retro&amp;lt;/code&amp;gt;, followed by the wildcard domain, e.g. &amp;lt;code&amp;gt;*.example.retro&amp;lt;/code&amp;gt;. Once all domain names are entered, press &#039;&#039;&#039;Ctrl+D&#039;&#039;&#039; to confirm.&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve specified &#039;&#039;&#039;y&#039;&#039;&#039; at the question above if the private key should be password protected, you will next be asked to re-enter that password.&lt;br /&gt;
&lt;br /&gt;
Next, you&#039;ll be asked for the Common Name, there enter the base domain for which the certificate is valid, e.g. &#039;&#039;&#039;example.retro&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Then, some certificate options can be set like Country, Organization and E-Mail assigned with the certificate, which are most of the optional details listed above that the member can specify if they like, which does not need to be real data, it can be whatever they like. Otherwise, just press &#039;&#039;&#039;Enter&#039;&#039;&#039; on the fields to select the predefined default values.&lt;br /&gt;
&lt;br /&gt;
The next password requested from you is the Intermediate CA Signing Password, followed by two confirmations if you really really want to sign the new certificates with our intermediate CA. Input &#039;&#039;&#039;y&#039;&#039;&#039; and press &#039;&#039;&#039;Enter&#039;&#039;&#039; both times.&lt;br /&gt;
&lt;br /&gt;
Now the certificate is created and ready for use, the script will tell you into which directory it has written the certificate files.&lt;br /&gt;
&lt;br /&gt;
All that&#039;s left to do now is to SCP the files off the CA container and send them over to the member in a secure-ish fashion through their prefered channel. Don&#039;t send them in the Discord channel unless they&#039;re fine with it since it allows someone else to more easily impersonate their site, not that that&#039;s a huge concern in the CGHMN network, but still.&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=File:Example_Certificate_Script_Run.png&amp;diff=174</id>
		<title>File:Example Certificate Script Run.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=File:Example_Certificate_Script_Run.png&amp;diff=174"/>
		<updated>2025-05-15T20:09:27Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terminal output of the Root CA Certificate creation script showing the domain example.retro receiving a certificate&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=164</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=164"/>
		<updated>2025-05-09T23:33:47Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added GothPanda&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Connection Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|AR300 Router&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|OPNsense box and PPPoE server&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Hadn69&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.5&lt;br /&gt;
|100.96.5.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Dell PowerEdge r620&lt;br /&gt;
|100.89.128.6&lt;br /&gt;
|100.96.6.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Theothertom&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.7&lt;br /&gt;
|100.96.7.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Hosting&lt;br /&gt;
|100.89.128.8&lt;br /&gt;
|100.96.8.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.9&lt;br /&gt;
|100.96.9.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|GothPanda&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.10&lt;br /&gt;
|100.96.10.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.100&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|snep.retro&lt;br /&gt;
|ns1.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=163</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=163"/>
		<updated>2025-05-09T21:31:41Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added Lily Hosting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Connection Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|AR300 Router&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|OPNsense box and PPPoE server&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Hadn69&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.5&lt;br /&gt;
|100.96.5.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Dell PowerEdge r620&lt;br /&gt;
|100.89.128.6&lt;br /&gt;
|100.96.6.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Theothertom&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.7&lt;br /&gt;
|100.96.7.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Hosting&lt;br /&gt;
|100.89.128.8&lt;br /&gt;
|100.96.8.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.9&lt;br /&gt;
|100.96.9.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.100&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|snep.retro&lt;br /&gt;
|ns1.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=161</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=161"/>
		<updated>2025-05-09T21:14:02Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Connection Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|AR300 Router&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|OPNsense box and PPPoE server&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Hadn69&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.5&lt;br /&gt;
|100.96.5.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Raspberry Pi&lt;br /&gt;
|100.89.128.6&lt;br /&gt;
|100.96.6.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Theothertom&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.7&lt;br /&gt;
|100.96.7.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.8&lt;br /&gt;
|100.96.8.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.100&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|snep.retro&lt;br /&gt;
|ns1.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=160</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=160"/>
		<updated>2025-05-09T21:13:07Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added loganius&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Connection Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|AR300 Router&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|MT300n Router&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Hadn69&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.5&lt;br /&gt;
|100.96.5.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| Raspberry Pi&lt;br /&gt;
|100.89.128.6&lt;br /&gt;
|100.96.6.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Theothertom&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.7&lt;br /&gt;
|100.96.7.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Loganius&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.8&lt;br /&gt;
|100.96.8.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.100&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|snep.retro&lt;br /&gt;
|ns1.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=159</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=159"/>
		<updated>2025-05-07T04:26:09Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added short Get Connected for manual Wireguard connections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Right now since the service is in &amp;quot;closed beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&lt;br /&gt;
&lt;br /&gt;
Right now to get connected you effectively need three things, hardware wise:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router via SSH&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Send one of the CGHMN admins (currently CursedSilicon and Snep) that key so we can add your router to our Wireguard server.&lt;br /&gt;
# In return, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.89.128.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.96.x.0/24&amp;lt;/code&amp;gt;) from us. These will be needed on the third and final step of the setup script:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
=== Get Connected - Manually (Linux, Wireguard only, GRETAP follows shortly) ===&lt;br /&gt;
In case you want to setup a connection into the network manually, here are the required steps and information you should be needing:&lt;br /&gt;
&lt;br /&gt;
* Generate a Wireguard private key and public key, this command writes a fresh Wireguard private key to &amp;lt;code&amp;gt;private-key&amp;lt;/code&amp;gt; and the corresponsing public key to &amp;lt;code&amp;gt;public-key&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ wg genkey | tee private-key | wg pubkey &amp;gt; public-key&lt;br /&gt;
&lt;br /&gt;
* NEVER share your private key, even with us! It should never be required outside of your own Wireguard setup!&lt;br /&gt;
* You will, however, need to share your public key with us. Send CursedSilicon or Snep on the Discord or via IRC a message including the public key and we&#039;ll add you to the tunnel.&lt;br /&gt;
* In return, you&#039;ll get two IP addresses from us: Your tunnel IP address, with which your router talks to our router, and a routed subnet, from which you can assign IPs to your own machines so they can talk to other CGHMN member devices on the network without NAT in the way.&lt;br /&gt;
* Next, you&#039;ll need to fill a Wireguard configuration file with the two IP addresses, like below:&lt;br /&gt;
&lt;br /&gt;
 [Interface]&lt;br /&gt;
 PrivateKey = &amp;lt;Your private key goes here&amp;gt;&lt;br /&gt;
 Address = &amp;lt;Your tunnel IP address goes here&amp;gt;/32&lt;br /&gt;
 DNS = 100.89.128.0&lt;br /&gt;
 MTU = 1420&lt;br /&gt;
 &lt;br /&gt;
 [Peer]&lt;br /&gt;
 PublicKey = k/QiJIbMakMKgTCHVt8/D+8k4DzRVM6U33F3gMZfRUg=&lt;br /&gt;
 Endpoint = wg-admin.cursedsilicon.net:42070&lt;br /&gt;
 AllowedIPs = 172.23.0.0/16, 100.89.128.0/22, 100.96.0.0/13&lt;br /&gt;
 PersistentKeepalive = 15&lt;br /&gt;
&lt;br /&gt;
* Save this file as &amp;lt;code&amp;gt;wg-cghmn.conf&amp;lt;/code&amp;gt;, for example.&lt;br /&gt;
* Then, run &amp;lt;code&amp;gt;wg-quick up ./wg-cghmn.conf&amp;lt;/code&amp;gt;, perhaps requiring &amp;lt;code&amp;gt;doas&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;, to bring the tunnel up and connect to the network!&lt;br /&gt;
&lt;br /&gt;
This should bring whatever system you&#039;ve set the tunnel up on onto the network and is now reachable for other members on the network, as long as the firewall on your device is congfigured accordingly, of course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;TODO: Add example of routed subnet configuration, perhaps on a different Wiki site&lt;br /&gt;
&lt;br /&gt;
=== Get connected - Server Side, the Admins Guide ===&lt;br /&gt;
[[File:Example Configuration for new Wireguard Peer on Core Router.png|thumb|Example Configuration for new Wireguard Peer on Core Router]]&lt;br /&gt;
To get a member onto the network, they will send an admin of the project their randomly generated Wireguard key during the setup via the OpenWRT script. Here are the steps that admin will have to follow to get them up and running on the server side:&lt;br /&gt;
&lt;br /&gt;
# Log in on the [https://router.core.cghmn:8443 Core Router] over an existing CGHMN network link&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Peer Generator&lt;br /&gt;
# You will be asked to enter some data for the new peer, enter the following: &lt;br /&gt;
## &#039;&#039;&#039;Instance:&#039;&#039;&#039; &amp;lt;code&amp;gt;WG_Member&amp;lt;/code&amp;gt;   &lt;br /&gt;
## &#039;&#039;&#039;Endpoint:&#039;&#039;&#039; &amp;lt;code&amp;gt;wg-admin.cursedsilicon.net:42070&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;member.&#039;&#039;&amp;lt;Nickname of the new member&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Public Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;their Wireguard public key they&#039;ve sent over&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Private Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Address:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;Next highest IP from 100.89.128.0/22, this is their tunnel IP and is auto-filled&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Pre-Shared Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Allowed IPs:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;the same as Address&amp;gt;&#039;&#039;, &#039;&#039;&amp;lt;their routed subnet, [[How to Get Connected#But wait, what even is their routed subnet?|see below]]&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Keepalive interval:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;blank&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;DNS Servers:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;default value&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit the &amp;quot;Store and generate next&amp;quot; button&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Instances&lt;br /&gt;
# Hit the &amp;quot;Apply&amp;quot; button&lt;br /&gt;
# Do either one of these steps, depending on if you can SSH into the GRETAP endpoint container:&lt;br /&gt;
## SSH into the CGHMN Proxmox Server and enter the command &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt;&lt;br /&gt;
## SSH directly into the GRETAP endpoint (formerly VXLAN endpoint) container with &amp;lt;code&amp;gt;ssh root@172.23.4.103&amp;lt;/code&amp;gt;&lt;br /&gt;
# From there, run the following command: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh &amp;lt;member-tunnel-ip&amp;gt; &amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; where you replace &amp;lt;code&amp;gt;&amp;lt;member-tunnel-ip&amp;gt;&amp;lt;/code&amp;gt; with the IP tunnel address of the member as it was set above in the &#039;&#039;&#039;Address&#039;&#039;&#039; field, without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; CIDR subnet mask, and replace the &amp;lt;code&amp;gt;&amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; with the same value you&#039;ve entered above in the &#039;&#039;&#039;Name&#039;&#039;&#039; field. For example, like this: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh 100.89.128.6 member.snep.test&amp;lt;/code&amp;gt; This will create a GRETAP (and for legacy purposes, a VXLAN) interface and bring them up automagically. &#039;&#039;Ignore the fact it still says &amp;quot;VXLAN&amp;quot; everywhere, it does both.&#039;&#039;&lt;br /&gt;
# Now you can send the member their Wireguard Tunnel IP and their routed subnet over and they can finish their client-side setup according to the mini-tutorial above.&lt;br /&gt;
# Rember to add the member and their tunnel and subnet IPs to the [[CGHMN-IP-Allocations|IP allocations page]] :)&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=157</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=157"/>
		<updated>2025-05-06T21:39:25Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added theothertom to members list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Connection Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|AR300 Router&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|MT300n Router&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Hadn69&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.5&lt;br /&gt;
|100.96.5.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.6&lt;br /&gt;
|100.96.6.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Theothertom&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.7&lt;br /&gt;
|100.96.7.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.100&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|snep.retro&lt;br /&gt;
|ns1.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=156</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=156"/>
		<updated>2025-05-05T22:30:50Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added reminder to add member connection to IP allocations table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Right now since the service is in &amp;quot;closed beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&lt;br /&gt;
&lt;br /&gt;
Right now to get connected you effectively need three things, hardware wise:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router via SSH&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Send one of the CGHMN admins (currently CursedSilicon and Snep) that key so we can add your router to our Wireguard server.&lt;br /&gt;
# In return, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.89.128.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.96.x.0/24&amp;lt;/code&amp;gt;) from us. These will be needed on the third and final step of the setup script:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; TODO: Add Linux commands to get connected without OpenWRT&lt;br /&gt;
=== Get connected - Server Side, the Admins Guide ===&lt;br /&gt;
[[File:Example Configuration for new Wireguard Peer on Core Router.png|thumb|Example Configuration for new Wireguard Peer on Core Router]]&lt;br /&gt;
To get a member onto the network, they will send an admin of the project their randomly generated Wireguard key during the setup via the OpenWRT script. Here are the steps that admin will have to follow to get them up and running on the server side:&lt;br /&gt;
&lt;br /&gt;
# Log in on the [https://router.core.cghmn:8443 Core Router] over an existing CGHMN network link&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Peer Generator&lt;br /&gt;
# You will be asked to enter some data for the new peer, enter the following: &lt;br /&gt;
## &#039;&#039;&#039;Instance:&#039;&#039;&#039; &amp;lt;code&amp;gt;WG_Member&amp;lt;/code&amp;gt;   &lt;br /&gt;
## &#039;&#039;&#039;Endpoint:&#039;&#039;&#039; &amp;lt;code&amp;gt;wg-admin.cursedsilicon.net:42070&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;member.&#039;&#039;&amp;lt;Nickname of the new member&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Public Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;their Wireguard public key they&#039;ve sent over&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Private Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Address:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;Next highest IP from 100.89.128.0/22, this is their tunnel IP and is auto-filled&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Pre-Shared Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Allowed IPs:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;the same as Address&amp;gt;&#039;&#039;, &#039;&#039;&amp;lt;their routed subnet, [[How to Get Connected#But wait, what even is their routed subnet?|see below]]&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Keepalive interval:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;blank&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;DNS Servers:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;default value&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit the &amp;quot;Store and generate next&amp;quot; button&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Instances&lt;br /&gt;
# Hit the &amp;quot;Apply&amp;quot; button&lt;br /&gt;
# Do either one of these steps, depending on if you can SSH into the GRETAP endpoint container:&lt;br /&gt;
## SSH into the CGHMN Proxmox Server and enter the command &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt;&lt;br /&gt;
## SSH directly into the GRETAP endpoint (formerly VXLAN endpoint) container with &amp;lt;code&amp;gt;ssh root@172.23.4.103&amp;lt;/code&amp;gt;&lt;br /&gt;
# From there, run the following command: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh &amp;lt;member-tunnel-ip&amp;gt; &amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; where you replace &amp;lt;code&amp;gt;&amp;lt;member-tunnel-ip&amp;gt;&amp;lt;/code&amp;gt; with the IP tunnel address of the member as it was set above in the &#039;&#039;&#039;Address&#039;&#039;&#039; field, without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; CIDR subnet mask, and replace the &amp;lt;code&amp;gt;&amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; with the same value you&#039;ve entered above in the &#039;&#039;&#039;Name&#039;&#039;&#039; field. For example, like this: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh 100.89.128.6 member.snep.test&amp;lt;/code&amp;gt; This will create a GRETAP (and for legacy purposes, a VXLAN) interface and bring them up automagically. &#039;&#039;Ignore the fact it still says &amp;quot;VXLAN&amp;quot; everywhere, it does both.&#039;&#039;&lt;br /&gt;
# Now you can send the member their Wireguard Tunnel IP and their routed subnet over and they can finish their client-side setup according to the mini-tutorial above.&lt;br /&gt;
# Rember to add the member and their tunnel and subnet IPs to the [[CGHMN-IP-Allocations|IP allocations page]] :)&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=155</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=155"/>
		<updated>2025-05-05T22:26:20Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added hadn69 and lily&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Connection Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|AR300 Router&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|MT300n Router&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Hadn69&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.5&lt;br /&gt;
|100.96.5.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Lily&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.6&lt;br /&gt;
|100.96.6.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.100&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|snep.retro&lt;br /&gt;
|ns1.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=153</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=153"/>
		<updated>2025-04-24T01:48:11Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added a link to user admin side tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Right now since the service is in &amp;quot;closed beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&lt;br /&gt;
&lt;br /&gt;
Right now to get connected you effectively need three things, hardware wise:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router via SSH&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Send one of the CGHMN admins (currently CursedSilicon and Snep) that key so we can add your router to our Wireguard server.&lt;br /&gt;
# In return, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.89.128.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.96.x.0/24&amp;lt;/code&amp;gt;) from us. These will be needed on the third and final step of the setup script:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Get connected - Server Side, the Admins Guide ===&lt;br /&gt;
[[File:Example Configuration for new Wireguard Peer on Core Router.png|thumb|Example Configuration for new Wireguard Peer on Core Router]]&lt;br /&gt;
To get a member onto the network, they will send an admin of the project their randomly generated Wireguard key during the setup via the OpenWRT script. Here are the steps that admin will have to follow to get them up and running on the server side:&lt;br /&gt;
&lt;br /&gt;
# Log in on the [https://router.core.cghmn:8443 Core Router] over an existing CGHMN network link&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Peer Generator&lt;br /&gt;
# You will be asked to enter some data for the new peer, enter the following: &lt;br /&gt;
## &#039;&#039;&#039;Instance:&#039;&#039;&#039; &amp;lt;code&amp;gt;WG_Member&amp;lt;/code&amp;gt;   &lt;br /&gt;
## &#039;&#039;&#039;Endpoint:&#039;&#039;&#039; &amp;lt;code&amp;gt;wg-admin.cursedsilicon.net:42070&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;member.&#039;&#039;&amp;lt;Nickname of the new member&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Public Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;their Wireguard public key they&#039;ve sent over&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Private Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Address:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;Next highest IP from 100.89.128.0/22, this is their tunnel IP and is auto-filled&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Pre-Shared Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Allowed IPs:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;the same as Address&amp;gt;&#039;&#039;, &#039;&#039;&amp;lt;their routed subnet, [[How to Get Connected#But wait, what even is their routed subnet?|see below]]&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Keepalive interval:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;blank&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;DNS Servers:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;default value&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit the &amp;quot;Store and generate next&amp;quot; button&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Instances&lt;br /&gt;
# Hit the &amp;quot;Apply&amp;quot; button&lt;br /&gt;
# Do either one of these steps, depending on if you can SSH into the GRETAP endpoint container:&lt;br /&gt;
## SSH into the CGHMN Proxmox Server and enter the command &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt;&lt;br /&gt;
## SSH directly into the GRETAP endpoint (formerly VXLAN endpoint) container with &amp;lt;code&amp;gt;ssh root@172.23.4.103&amp;lt;/code&amp;gt;&lt;br /&gt;
# From there, run the following command: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh &amp;lt;member-tunnel-ip&amp;gt; &amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; where you replace &amp;lt;code&amp;gt;&amp;lt;member-tunnel-ip&amp;gt;&amp;lt;/code&amp;gt; with the IP tunnel address of the member as it was set above in the &#039;&#039;&#039;Address&#039;&#039;&#039; field, without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; CIDR subnet mask, and replace the &amp;lt;code&amp;gt;&amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; with the same value you&#039;ve entered above in the &#039;&#039;&#039;Name&#039;&#039;&#039; field. For example, like this: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh 100.89.128.6 member.snep.test&amp;lt;/code&amp;gt; This will create a GRETAP (and for legacy purposes, a VXLAN) interface and bring them up automagically. &#039;&#039;Ignore the fact it still says &amp;quot;VXLAN&amp;quot; everywhere, it does both.&#039;&#039;&lt;br /&gt;
# Now you can send the member their Wireguard Tunnel IP and their routed subnet over and they can finish their client-side setup according to the mini-tutorial above.&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=152</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=152"/>
		<updated>2025-04-24T01:47:15Z</updated>

		<summary type="html">&lt;p&gt;Snep: damn linebreaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Right now since the service is in &amp;quot;closed beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&lt;br /&gt;
&lt;br /&gt;
Right now to get connected you effectively need three things, hardware wise:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router via SSH&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Send one of the CGHMN admins (currently CursedSilicon and Snep) that key so we can add your router to our Wireguard server.&lt;br /&gt;
# In return, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.89.128.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.96.x.0/24&amp;lt;/code&amp;gt;) from us. These will be needed on the third and final step of the setup script:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Get connected - Server Side, the Admins Guide ===&lt;br /&gt;
[[File:Example Configuration for new Wireguard Peer on Core Router.png|thumb|Example Configuration for new Wireguard Peer on Core Router]]&lt;br /&gt;
To get a member onto the network, they will send an admin of the project their randomly generated Wireguard key during the setup via the OpenWRT script. Here are the steps that admin will have to follow to get them up and running on the server side:&lt;br /&gt;
&lt;br /&gt;
# Log in on the [https://router.core.cghmn:8443 Core Router] over an existing CGHMN network link&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Peer Generator&lt;br /&gt;
# You will be asked to enter some data for the new peer, enter the following: &lt;br /&gt;
## &#039;&#039;&#039;Instance:&#039;&#039;&#039; &amp;lt;code&amp;gt;WG_Member&amp;lt;/code&amp;gt;   &lt;br /&gt;
## &#039;&#039;&#039;Endpoint:&#039;&#039;&#039; &amp;lt;code&amp;gt;wg-admin.cursedsilicon.net:42070&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;member.&#039;&#039;&amp;lt;Nickname of the new member&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Public Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;their Wireguard public key they&#039;ve sent over&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Private Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Address:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;Next highest IP from 100.89.128.0/22, this is their tunnel IP and is auto-filled&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Pre-Shared Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Allowed IPs:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;the same as Address&amp;gt;&#039;&#039;, &#039;&#039;&amp;lt;their routed subnet, see below&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &#039;&#039;&#039;Keepalive interval:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;blank&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;DNS Servers:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;default value&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit the &amp;quot;Store and generate next&amp;quot; button&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Instances&lt;br /&gt;
# Hit the &amp;quot;Apply&amp;quot; button&lt;br /&gt;
# Do either one of these steps, depending on if you can SSH into the GRETAP endpoint container:&lt;br /&gt;
## SSH into the CGHMN Proxmox Server and enter the command &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt;&lt;br /&gt;
## SSH directly into the GRETAP endpoint (formerly VXLAN endpoint) container with &amp;lt;code&amp;gt;ssh root@172.23.4.103&amp;lt;/code&amp;gt;&lt;br /&gt;
# From there, run the following command: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh &amp;lt;member-tunnel-ip&amp;gt; &amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; where you replace &amp;lt;code&amp;gt;&amp;lt;member-tunnel-ip&amp;gt;&amp;lt;/code&amp;gt; with the IP tunnel address of the member as it was set above in the &#039;&#039;&#039;Address&#039;&#039;&#039; field, without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; CIDR subnet mask, and replace the &amp;lt;code&amp;gt;&amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; with the same value you&#039;ve entered above in the &#039;&#039;&#039;Name&#039;&#039;&#039; field. For example, like this: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh 100.89.128.6 member.snep.test&amp;lt;/code&amp;gt; This will create a GRETAP (and for legacy purposes, a VXLAN) interface and bring them up automagically. &#039;&#039;Ignore the fact it still says &amp;quot;VXLAN&amp;quot; everywhere, it does both.&#039;&#039;&lt;br /&gt;
# Now you can send the member their Wireguard Tunnel IP and their routed subnet over and they can finish their client-side setup according to the mini-tutorial above.&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=151</id>
		<title>How to Get Connected</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=How_to_Get_Connected&amp;diff=151"/>
		<updated>2025-04-24T01:41:57Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added OpenWRT tutorial and Admin tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a quick and dirty &amp;quot;how do I get on CGHMN&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Right now since the service is in &amp;quot;closed beta&amp;quot; these steps are a bit vague and manual. But over time as we figure out what works we&#039;ll add more connection methods and better documentation&lt;br /&gt;
&lt;br /&gt;
Right now to get connected you effectively need three things, hardware wise:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:CGHMN.png|thumb|319x319px|Example CGHMN Router Setup using a GL-AR300M and basic network switch]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware requirements ===&lt;br /&gt;
To connect your retro machine(s) to the CGHMN, you&#039;ll need the following:&lt;br /&gt;
*&#039;&#039;&#039;An Ethernet connection on your retro device(s) of choice, with a TCP/IP (v4) stack for now! TrumpetWinSock, Microsoft TCP/IP, whatever. It all works.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Something with the ability to run Wireguard and forward IPv4 packets at the minimum and, for any non-IP packets, &amp;lt;code&amp;gt;gretap&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;. Personally we recommend something running OpenWRT, like the [https://www.gl-inet.com/products/gl-ar300m GL-AR300M] which we have successfully tested to work. We&#039;re currently working on a pre-built image for some select routers to make the setup easier for new members. A script to configure already existing OpenWRT instances can be found below.&#039;&#039;&#039;&lt;br /&gt;
* Alternatively, you can also run the CGHMN routing on any standard Linux box which has at least one Ethernet port and either a second one or WiFi for internet connectivity. &amp;lt;s&amp;gt;A basic script to set up a Linux machine as a router is posted below&amp;lt;/s&amp;gt; (TODO!).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optionally: A simple network switch, in case you want to add multiple machines to the network. You plug one end into the CGHMN Router box and then your clients can all access CGHMN. Super easy!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the right is an example of what a CGHMN router setup could look like.&lt;br /&gt;
&lt;br /&gt;
=== Get connected - With OpenWRT ===&lt;br /&gt;
If you chose to go with an OpenWRT compatible router or want to run OpenWRT on typical x86 hardware/in a VM, you can follow these steps to get yourself connected to the CGHMN:&lt;br /&gt;
&lt;br /&gt;
# Update your OpenWRT install to the latest version to ensure all required packages are available and compatible.&lt;br /&gt;
# Download [https://raw.githubusercontent.com/jonasluehrig/cghmn-get-connected/refs/heads/main/openwrt/setup-cghmn.sh this script from GitHub] to your OpenWRT router via SSH&lt;br /&gt;
# Run the following commands on the router:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh install-pkgs&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh init&amp;lt;/code&amp;gt;&lt;br /&gt;
## You will be asked what network port you&#039;d like to use for the Retro LAN. This is where you will plug in your retro machines to be part of the CGHMN. Choose a port that is not assigned to any OpenWRT interface like &#039;&#039;&#039;lan&#039;&#039;&#039; or &#039;&#039;&#039;wan&#039;&#039;&#039; or which not already part of a bridge and enter the Linux interface name, e.g. &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, then press &amp;lt;code&amp;gt;[Enter]&amp;lt;/code&amp;gt; to continue. If your router only has two ports and you&#039;re using one for WAN, then you first have to [https://openwrt.org/docs/guide-user/luci/luci.secure#allow_access_from_internet enable the web UI and SSH access via the &#039;&#039;&#039;wan&#039;&#039;&#039; OpenWRT interface], remove the entire &#039;&#039;&#039;lan&#039;&#039;&#039; OpenWRT interface to free the network port and continue the setup over the IP address your router got on its WAN side. If you only have a single Ethernet port, you&#039;re running on a router setup we can&#039;t really recommend, however you can configure VLANs and use a managed switch to both get a WAN DHCP address for internet access and have a separate VLAN for the Retro LAN bridge over a single port. This is commonly referred to as &amp;quot;[[wikipedia:Router_on_a_stick|router on a stick]]&amp;quot;. Just enter the VLAN interface name here if you choose to go that route.&lt;br /&gt;
# Now you will be given some information on the console, including a Wireguard public key. Send one of the CGHMN admins (currently CursedSilicon and Snep) that key so we can add your router to our Wireguard server.&lt;br /&gt;
# In return, you will receive a tunnel IPv4 address (&amp;lt;code&amp;gt;100.89.128.x/32&amp;lt;/code&amp;gt;) and a routed IPv4 subnet (&amp;lt;code&amp;gt;100.96.x.0/24&amp;lt;/code&amp;gt;) from us. These will be needed on the third and final step of the setup script:&lt;br /&gt;
## &amp;lt;code&amp;gt;ash setup-cghmn.sh set-tunnel-ip&amp;lt;/code&amp;gt;&lt;br /&gt;
# Once the script completed successfully, reboot the router to ensure all interfaces are up properly. After the reboot, your retro devices should receive an IP address in your routed IPv4 subnet on the Retro LAN port you chose above and be able to communicate with other machines on the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Get connected - Server Side, the Admins Guide ===&lt;br /&gt;
[[File:Example Configuration for new Wireguard Peer on Core Router.png|thumb|Example Configuration for new Wireguard Peer on Core Router]]&lt;br /&gt;
To get a member onto the network, they will send an admin of the project their randomly generated Wireguard key during the setup via the OpenWRT script. Here are the steps that admin will have to follow to get them up and running on the server side:&lt;br /&gt;
&lt;br /&gt;
# Log in on the [https://router.core.cghmn:8443 Core Router] over an existing CGHMN network link&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Peer Generator&lt;br /&gt;
# You will be asked to enter some data for the new peer, enter the following: &#039;&#039;&#039;Instance:&#039;&#039;&#039; &amp;lt;code&amp;gt;WG_Member&amp;lt;/code&amp;gt; &#039;&#039;&#039;Endpoint:&#039;&#039;&#039; &amp;lt;code&amp;gt;wg-admin.cursedsilicon.net:42070&amp;lt;/code&amp;gt;    &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;member.&#039;&#039;&amp;lt;Nickname of the new member&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;    &#039;&#039;&#039;Public Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;their Wireguard public key they&#039;ve sent over&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;    &#039;&#039;&#039;Private Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;    &#039;&#039;&#039;Address:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;Next highest IP from 100.89.128.0/22, this is their tunnel IP and is auto-filled&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;    &#039;&#039;&#039;Pre-Shared Key:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;blank&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;    &#039;&#039;&#039;Allowed IPs:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;the same as Address&amp;gt;&#039;&#039;, &#039;&#039;&amp;lt;their routed subnet, see below&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;    &#039;&#039;&#039;Keepalive interval:&#039;&#039;&#039; &#039;&#039;&amp;lt;code&amp;gt;&amp;lt;blank&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;    &#039;&#039;&#039;DNS Servers:&#039;&#039;&#039; &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;default value&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit the &amp;quot;Store and generate next&amp;quot; button&lt;br /&gt;
# Navigate to VPN -&amp;gt; Wireguard -&amp;gt; Instances&lt;br /&gt;
# Hit the &amp;quot;Apply&amp;quot; button&lt;br /&gt;
# Do either one of these steps, depending on if you can SSH into the GRETAP endpoint container:&lt;br /&gt;
## SSH into the CGHMN Proxmox Server and enter the command &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt;&lt;br /&gt;
## SSH directly into the GRETAP endpoint (formerly VXLAN endpoint) container with &amp;lt;code&amp;gt;ssh root@172.23.4.103&amp;lt;/code&amp;gt;&lt;br /&gt;
# From there, run the following command: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh &amp;lt;member-tunnel-ip&amp;gt; &amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; where you replace &amp;lt;code&amp;gt;&amp;lt;member-tunnel-ip&amp;gt;&amp;lt;/code&amp;gt; with the IP tunnel address of the member as it was set above in the &#039;&#039;&#039;Address&#039;&#039;&#039; field, without the &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; CIDR subnet mask, and replace the &amp;lt;code&amp;gt;&amp;lt;member-name&amp;gt;&amp;lt;/code&amp;gt; with the same value you&#039;ve entered above in the &#039;&#039;&#039;Name&#039;&#039;&#039; field. For example, like this: &amp;lt;code&amp;gt;bash /opt/vxlan-scripts/create-vxlan-interface.sh 100.89.128.6 member.snep.test&amp;lt;/code&amp;gt; This will create a GRETAP (and for legacy purposes, a VXLAN) interface and bring them up automagically. &#039;&#039;Ignore the fact it still says &amp;quot;VXLAN&amp;quot; everywhere, it does both.&#039;&#039;&lt;br /&gt;
# Now you can send the member their Wireguard Tunnel IP and their routed subnet over and they can finish their client-side setup according to the mini-tutorial above.&lt;br /&gt;
&lt;br /&gt;
==== But wait, what even &#039;&#039;is&#039;&#039; their routed subnet? ====&lt;br /&gt;
Each members routed subnet comes per default from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IPv4 block and has a &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; mask. This subnet is their &amp;quot;Retro LAN&amp;quot;, to which all their retro computers are hooked into via the router of their choosing. By default, NAT is enabled on the routers, so it wouldn&#039;t make a difference which subnet is used on the remote end for the retro machines. However, if someone wants to host servers in the CGHMN and doesn&#039;t want to do port forwading, they can disable NAT and let other membres directly connect to their machines via this routed subnet.&lt;br /&gt;
&lt;br /&gt;
To get the routed subnet of a member, take the number from the last octet of the Wireguard tunnel IP of a member, say &amp;lt;code&amp;gt;100.89.128.&#039;&#039;&#039;6&#039;&#039;&#039;&amp;lt;/code&amp;gt;, and put it into the third octet of the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; IP block and replace the &amp;lt;code&amp;gt;/13&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt;, so you get &amp;lt;code&amp;gt;100.96.&#039;&#039;&#039;6&#039;&#039;&#039;.0/24&amp;lt;/code&amp;gt;. That is their routed subnet, simple as that!&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=File:Example_Configuration_for_new_Wireguard_Peer_on_Core_Router.png&amp;diff=150</id>
		<title>File:Example Configuration for new Wireguard Peer on Core Router.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=File:Example_Configuration_for_new_Wireguard_Peer_on_Core_Router.png&amp;diff=150"/>
		<updated>2025-04-24T01:16:17Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Shows an example of all the values filled in, which are needed to add a new Member Wireguard connection to the Core Router&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=134</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=134"/>
		<updated>2025-03-30T05:09:30Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added list entries for delegated domains and member servers on the CGHMN Proxmox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Connection Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|AR300 Router&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|MT300n Router&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member-Delegated (Sub-) Domains ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Domain&lt;br /&gt;
!Nameserver&lt;br /&gt;
!Nameserver IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|coyote.retro&lt;br /&gt;
|a.ns.coyote.retro&lt;br /&gt;
|100.96.2.100&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|snep.retro&lt;br /&gt;
|ns1.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Member Servers hosted on the CGHMN side ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!VM/CT ID&lt;br /&gt;
!Server Name&lt;br /&gt;
!Server IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|10811&lt;br /&gt;
|srv01.snep.retro&lt;br /&gt;
|172.23.8.11&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=133</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=133"/>
		<updated>2025-03-29T21:15:01Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Connection Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|AR300 Router&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|MT300n Router&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC VPN tunnel&lt;br /&gt;
|100.89.128.4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=132</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=132"/>
		<updated>2025-03-29T21:13:37Z</updated>

		<summary type="html">&lt;p&gt;Snep: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Connection Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|AR300 Router&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|PC tunnel&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-Demo-Network&amp;diff=131</id>
		<title>CGHMN-Demo-Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-Demo-Network&amp;diff=131"/>
		<updated>2025-03-29T20:45:49Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added paragraph about changes to the network&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Demo Network for the Interim Computer Festival ===&lt;br /&gt;
This page documents the quickly set up demo network to show off the CGHMN network at the [https://sdf.org/icf/ SDF&#039;s Interim Computer Festival] taking place between March 22nd and 23rd. Consider this a sort-of draft, an experimental first version, a test on what might work and what doesn&#039;t.&lt;br /&gt;
&lt;br /&gt;
Currently, the basics are up and running on the CGHMN Proxmox hypervisor living in the [https://devhack.net/ /dev/hack Hackerspace] in Seattle. These include a router and Wireguard endpoint through an OPNsense VM, a VXLAN tunnel endpoint container with some custom scripts to make deploying new member tunnel easier and two containers running a basic authoritative BIND DNS server for &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; and one hosting a custom, internal Certificate Authority for those domains.&lt;br /&gt;
&lt;br /&gt;
=== Changes to the network layout ===&lt;br /&gt;
Since this page was written, there have been quite a lot of discussions about how and what we might change going forward, after the initial test of the network at the ICF was a success. The biggest change, so far, has been the idea to move away from VXLANs to GRETAP tunnels for the Layer 2 and non-IP Layer 3 traffic. This is mostly due to the fact that VXLANs, by their RFC definition, MAY NOT fragment packets coming into the VTEP (aka. a VXLAN tunnel endpoint) and packets flowing out of a VTEP MAY be reassembled if fragmented, but don&#039;t necessarily have to. In addition to this, the IP packets generated by the VXLAN tunnels have the Don&#039;t Fragment bit set, so those packets may also not be fragmented. This means that the underlying transport of the VXLAN tunnels, here Wireguard, would have to open a path that allows 1500 byte frames through its tunnel, which would make the tunnel packets themselves quite large at ~1600 bytes, which would then be fragmented by whatever routers are in between the client router and the CGHMN router. Turns out, that&#039;s quite inefficient. &lt;br /&gt;
&lt;br /&gt;
GRETAP tunnels, on the other hand, have the two flags &amp;lt;code&amp;gt;ignore-df&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nopmtudisc&amp;lt;/code&amp;gt;, which together with &amp;lt;code&amp;gt;ttl 255&amp;lt;/code&amp;gt; create a tunnel over IP, which can carry &#039;&#039;and fragment&#039;&#039; 1500 byte Ethernet frames over a smaller underlying transport, still Wireguard in this case. This was a massive boost not only in speed under certain circumstances, like running this all on a small travel router with a weak MIPS CPU, but also reliability, as less dropped packets could be observed and MTU blackholes finally not happening in our testing.&lt;br /&gt;
&lt;br /&gt;
To bring up a GRETAP tunnel within the network to the CGHMN central router, use the following commands on a Linux box:&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;ip link add gretap-cghmn type gretap remote 172.23.4.103 dev wg0 ignore-df nopmtudisc ttl 255&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip link set gretap-cghmn master br0 mtu 1500&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip link set gretap-cghmn up&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Where &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; is your CGHMN Wireguard tunnel and &amp;lt;code&amp;gt;br0&amp;lt;/code&amp;gt; is the bridge you&#039;d want to bridge the GRETAP tunnel to.&lt;br /&gt;
&lt;br /&gt;
However, to improve performance more and make the network a little more reliable, there was another idea for a change: Sending routable IP traffic not over the Layher 2 tunnel, but rather routing it directly through the Wireguard tunnel, which already is a straight Layer 3 path to the CGHMN core router. This is possible due to the nftables &amp;lt;code&amp;gt;bridge&amp;lt;/code&amp;gt; filter table, which can match and filter packets on bridge interfaces, incuding what &amp;quot;bridge port&amp;quot; they come in and go out of. This means we can filter IP traffic from leaving the retro LAN bridge, to which you&#039;d connect your retro machines via a phyiscal LAN port, by creating a filter that says &amp;quot;Block all traffic on bridge &amp;lt;code&amp;gt;br-retrolan&amp;lt;/code&amp;gt; which leaves through a GRETAP interface&amp;quot; and &amp;quot;Block all traffic on bridge &amp;lt;code&amp;gt;br-retrolan&amp;lt;/code&amp;gt; which comes in on a GRETAP interface&amp;quot;. Now, you can assign the router a static IP address on the bridge, so it can talk to your retro machines, enable DHCP and NAT and route IP traffic from your machines straight to the CGHMN via Wireguard. In the future, this shall be extended to work without NAT on the client side, so that every member has a small subnet, /24 for example, which is routed to the Wireugard tunnel client IP. This also means that the VLAN1 described in the next section might not need an IP address in the future so that the VLAN1 is purely non-IP traffic at least from the CGHMN side of things.&lt;br /&gt;
&lt;br /&gt;
Yet another idea mentioned was the ability to span tunnels directly between members, even without going through the CGHMN core network in the first place. This can be accomplished by creating another GRETAP interface whose &amp;lt;code&amp;gt;remote&amp;lt;/code&amp;gt; IP argument points to the IP of another members router, either through the existing CGHMN Wireguard tunnel or through a separate tunnel that you span between you and the other member. This GRETAP interface is then bridged to the &amp;lt;code&amp;gt;br-retrolan&amp;lt;/code&amp;gt; bridge and with a couple of (perhaps default) bridge firewall rules, you and the other member should be able to communicate directly! Of course, this also means we&#039;d have to implement some sort of loopback protection not just on the member router side (the default bridge firewall rules mentioned in the last sentence), but also on the core router side. so this idea is not yet fully implemented for testing.&lt;br /&gt;
&lt;br /&gt;
IP Allocations within the network are now kept track of [[CGHMN-IP-Allocations|in this Wiki page]], though the IPs listed there might not be applied in the current configuration yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Network Layout ===&lt;br /&gt;
This section describes the network layout currently set up for the CGHMN demo network, none of which is necessarily permanent and already set in stone. I (Snep) made some assumptions about domain names, IP addresses, firewall rules and general design ideas to get something up and running for the computer festival based on info from the many chats and discussions on the Cursed Silicon Discord&#039;s CGHMN channel (See [[Signup]] for more details). So, please feel free to give input on things you&#039;d like to see changed or added!&lt;br /&gt;
&lt;br /&gt;
On the Proxmox host, all VLANs mentioned below are available tagged on the bridge &amp;lt;code&amp;gt;brcghmn&amp;lt;/code&amp;gt;, with exception of VLAN1, which is untagged and the default network when a new container or VM is added to this bridge.&lt;br /&gt;
&lt;br /&gt;
For servers and retro clients, the subnet &amp;lt;code&amp;gt;172.23.0.0/16&amp;lt;/code&amp;gt; is currently in place, divided into smaller subnets, and might be subject to change later down the line. For Wireguard clients, the &amp;lt;code&amp;gt;100.89.128.0/22&amp;lt;/code&amp;gt; subnet out of the CGNAT block is used and again, might change later.&lt;br /&gt;
&lt;br /&gt;
Below is a further breakdown of VLANs existing in this CGHMN demo network:&lt;br /&gt;
&lt;br /&gt;
==== VLAN 1 - The Global LAN (172.23.0.0/22) ====&lt;br /&gt;
This network is our layer 2 bridged network to all members who wish to participate and is intended to be used for retro computers to directly communicate with each other even across the globe. This is accomplished by spanning a VXLAN tunnel across a Wireguard connection from the CGHMN server infrastructure to each members&#039; router endpoint, which can be any OpenWRT compatible device that contains the packages for VXLANs and Wireguard. The idea is to bridge on of at least two available interfaces from said router to the VXLAN network and thus directly bridge any connected retro machines to VLAN1. All members will be in the same L2 broadcast domain, meaning even non-IP protocols that are able to run over Ethernet should be able to communicate with each other from all over the world.&lt;br /&gt;
&lt;br /&gt;
Machines on this network are able to connect to all hosts on the Server VLAN (see below), the firewall for DNS, NTP and ICMP queries and to the root DNS and CA servers for DNS queries and HTTP access to the CA web server. They may also query DNS lookups at the legacy DNS server at &amp;lt;code&amp;gt;172.23.0.104&amp;lt;/code&amp;gt;. They are not, however, able to communicate with any hosts on the internet, the /dev/hack network or any of the other existing VLANs aside from specific exceptions.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.1.1-172.23.3.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.1.11-172.23.1.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;clients.retro&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 4 - Core Services (172.23.4.0/22) ====&lt;br /&gt;
This VLAN in intended for core internal services, like the root DNS server, VXLAN endpoint and our custom Certificate Authority. The Proxmox host also has an IP address in this subnet (&amp;lt;code&amp;gt;172.23.4.11&amp;lt;/code&amp;gt;), it does not however have any routes to the rest of this CGHMN demo infrastructure and thus can only be accessed from clients in the Core Services subnet. &lt;br /&gt;
&lt;br /&gt;
Hosts in this subnet may currently access the internet, the router for DNS, NTP and ICMP queries, query DNS lookups at the legacy DNS server at &amp;lt;code&amp;gt;172.23.4.104&amp;lt;/code&amp;gt; and the VXLAN endpoint may send UDP datagrams to anyone at port &amp;lt;code&amp;gt;4789&amp;lt;/code&amp;gt; for VXLAN tunnel replies, any other internal connections are prohibited.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.7.1-172.23.7.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.4.11-172.23.6.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;core.cghmn&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 8 - Servers (172.23.8.0/22) ====&lt;br /&gt;
This VLAN will contain all servers hosted and managed by members, which can be any (retro) service that works across an IP router. For anything that requires direct layer 2 access or the same broadcast domain as the client machines, it is advised to host said server in the Global LAN network. This is the only VLAN clients from the bridged Global LAN network may access freely, so members should be wary about what ports they open up for anyone outside of localhost. Another option is to run a tiny router instance based on OpenWRT in front of your server which will act as a basic firewall and NAT router behind which one can run their servers.&lt;br /&gt;
&lt;br /&gt;
Hosts in this subnet may not access the internet inherently, however a firewall rule is in place that allows specific servers internet access, it is still uncertain if this will make it to the final CGHMN or if this subnet is also supposed to be entirely sealed off from the public internet. During a few chats on the Discord server, the idea of hosting local package mirrors of popular distros and projects was mentioned so that both modern and retro systems won&#039;t need to connect to internet servers for package installations and upgrades. Hosts may access the router for DNS, NTP and ICMP queries and query DNS lookups at the legacy DNS server at &amp;lt;code&amp;gt;172.23.4.104&amp;lt;/code&amp;gt;, other internal connections are prohibited.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.11.1-172.23.11.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.8.11-172.23.10.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;hosting.retro&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 12 - DMZ (172.23.12.0/22) ====&lt;br /&gt;
Currently not in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Containers and VMs ===&lt;br /&gt;
Containers and VMs on the Proxmox host are currently assigned in the 10000 ID range to keep clear of existing VMs.&lt;br /&gt;
&lt;br /&gt;
There is one VM and three containers at the time of writing this:&lt;br /&gt;
&lt;br /&gt;
==== VM 10001 (demo-chhmn-router) ====&lt;br /&gt;
This is the OPNsense VM running as the primary router, firewall, DHCP server and Wireguard endpoint for the demo network. Its login credentials are currently in the paws of Snep, as I&#039;m still unsure where any passwords for the CGHMN are going to be stored safely and with proper access rights.&lt;br /&gt;
&lt;br /&gt;
The router has the first IP in any of the available demo network subnets and responds to IPv4 and IPv4 ICMP packets, DNS queries to its local Unbound resolver and NTP sync requests to the built-in NTP server.&lt;br /&gt;
&lt;br /&gt;
Unbound currently resolves all requests it cannot resolve locally recursively against the internet root servers and returns those replies to clients, this may be subject to change as we potentially plan on sealing the network off more. It is configured to forward all requests with a TLD of &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; to the internal DNS root server.&lt;br /&gt;
&lt;br /&gt;
The Wireguard endpoint servers as the connection into the CGHMN from the outside internet on &amp;lt;code&amp;gt;66.170.190.194:42070&amp;lt;/code&amp;gt; for anyone that wishes to parttake the network. See [[Signup]] for more details on how to join.&lt;br /&gt;
&lt;br /&gt;
==== Container 10401 (demo-cghmn-root-dns, VLAN4, 172.23.4.101) ====&lt;br /&gt;
This container, based on the absolutely tiny-footprinted Alpine image, hosts the BIND-based root DNS server for the internal CGHMN domains &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; together with the reverse DNS zone for the 172.23.0.0 network. It lives in the Core Services subnet and is reachable on port 53 for DNS queries from every other internal subnet. Zones are configured in the zone files under &amp;lt;code&amp;gt;/etc/bind/zones&amp;lt;/code&amp;gt; and loaded by the zone blocks in the &amp;lt;code&amp;gt;/etc/named.conf&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10401&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
==== Container 10402 (demo-cghmn-ca, VLAN4, 172.23.4.102) ====&lt;br /&gt;
This container, also based on Alpine, is hosting the custom Certificate Authority based on OpenSSL created and self-signed certificate files. It is currently constructed in a Root CA -&amp;gt; Intermediate CA -&amp;gt; Server Certificates structure, where the CA signed certificates of the intermediate CA, which then signs all certificates requested for servers and clients on the network. Clients thus should only need to install the CA certificate into their trusted keychain to have valid TLS connections to servers using certificates signed by this internal CA.&lt;br /&gt;
&lt;br /&gt;
Clients can access a web server on &amp;lt;code&amp;gt;certs.cghmn:80&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;172.23.4.102:80&amp;lt;/code&amp;gt; via plain HTTP to download the root CA and intermediate CA certificate files for installation on their retro machines. Note: This is not meant to be secure. When you add this root CA, we could pretend to be any server on the internet under any domain and any system that has the root CA or intermediate CA certificate installed will trust it. Don&#039;t add this on machines you would have personal data on or that you would let onto the public internet!&lt;br /&gt;
&lt;br /&gt;
The /root directory of this container contains a script called &amp;lt;code&amp;gt;create-and-sign-server-csr.sh&amp;lt;/code&amp;gt; that, when run without any arguments, will ask a few questions on the command line and generate a signed TLS certificate in the root directory for the specified DNS names to make deployment of new TLS certificates a little easier. This requires the password of the private key of the intermediate CA, which again is currently stored in Sneps password manager but of course will be copied to a safe location to store passwords once available for the CGHMN.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10402&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
==== Container 10403 (demo-cghmn-vxlan-endpoint, VLAN4, 172.23.4.103) ====&lt;br /&gt;
This container, another Alpine instance, connects all the VXLAN clients together under one virtual Linux bridge and is constructed with a couple if-up/if-down scripts and a Bash script to create new tunnels at &amp;lt;code&amp;gt;/opt/vxlan-scripts/create-vxlan-interface.sh&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
This script, when called like for example so: &amp;lt;code&amp;gt;create-vxlan-interface.sh 100.89.128.90&amp;lt;/code&amp;gt; will do the following:&lt;br /&gt;
&lt;br /&gt;
# Find the first unused VXLAN ID&lt;br /&gt;
# Output the VXLAN ID for configuring a new VXLAN tunnel on the client side&lt;br /&gt;
# Add an interface configuration to &amp;lt;code&amp;gt;/etc/vxlan-interfaces/&amp;lt;/code&amp;gt; which is sourced by ifupdown&lt;br /&gt;
# Bring up that new VXLAN interface, which bridges it to the Global LAN bridge&lt;br /&gt;
&lt;br /&gt;
after which the client with IP 100.89.128.90 can connect a VXLAN tunnel with the newly added VXLAN ID to their router and join the network.&lt;br /&gt;
&lt;br /&gt;
This is still a very manual process, though one which will probably become more streamlined in the future of the CGHMN network, perhaps with some APIs and/or custom OpenWRT web interface *wink wink*.&lt;br /&gt;
&lt;br /&gt;
This container is only reachable by the firewall itself and by the clients connecting their VXLAN bridge to port 4789 from the Wireguard tunnel, as it doesn&#039;t do any routing or hosting of services directly aside from the VXLAN endpoint.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt; on the Proxmox host onsole.&lt;br /&gt;
&lt;br /&gt;
==== Container 10404 (demo-cghmn-legacy-dns, VLAN4, 172.23.4.104) ====&lt;br /&gt;
This container, based on Alpine, runs a dnsmasq instance configured to look up certain DNS overrides either in the hosts file at &amp;lt;code&amp;gt;/etc/cghmn-dns-overrides&amp;lt;/code&amp;gt; or by including a dnsmasq configuration file from &amp;lt;code&amp;gt;/etc/dnsmasq-cghmn.d/*.conf&amp;lt;/code&amp;gt;. Any other requests it cannot resolve locally are forwarded to the Unbound DNS resolver running on the OPNsense router VM. This setup is used to create DNS overrides for existing domains to make old software, which is hardcoded to specific DNS entries, work again with custom servers hosted internally. &lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10404&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposed Organization of IDs and IPs ===&lt;br /&gt;
My (Sneps) idea behind Proxmox container and VM IDs are as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;101xx - 103xx&#039;&#039;&#039; are for Containers and VMs in the bridged layer 2 network, so any hosts that members want to run in the bridged network directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;104xx - 107xx&#039;&#039;&#039; are for Containers and VMs in the Core Services VLAN4, so anything that is necessary for the operation of the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;108xx - 111xx&#039;&#039;&#039; are for Containers and VMs in the Servers VLAN8, so anything that members would choose to host on the CGHMN Proxmox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For IPs, I left the first 10 IPs in each subnet reserved for things like routers, for example (perhaps a second router and a virtual IP for failover down the line?).&lt;br /&gt;
&lt;br /&gt;
After that, the first half of the subnet (see above under Network Layout for the actual start and end of this range) is supposed to be reserved for any hosts that are set up with a fully static IP. This is entirely outside of the DHCP range to avoid any conflicts. That DHCP range then starts with the second half of the subnet and goes up to the last available host IP of each subnet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other Notes ===&lt;br /&gt;
&lt;br /&gt;
* Currently, the advertised DNS server via DHCP is the included Unbound Server on the OPNsense instance. If we want to completely seal off clients and servers from the rest of the internet, we could directly point the clients towards our root DNS server for all requests.&lt;br /&gt;
* Currently, the OPNsense router does DHCP as it already has an IP in each VLAN and comes with a solid DHCP server that can also support failover out of the box (ISC DHCP). I (Snep) chose this route over a standalone DHCP server to avoid having a second container/VM in each subnet that solely does DHCP or DHCP proxying, mainly to keep the setup and maintenance work as low as possible.&lt;br /&gt;
* A customized OpenWRT image for the Gl.iNet MT300n and AR300n are currently being built and tested, which includes required packages and UCI configurations out of the box to make joining the network perhaps a little bit easier. Will update this page or create a new one and link to it once a working image exists!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reserved static IPs ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VLAN1, 172.23.0.11:&#039;&#039;&#039; WIREGUARD-EXTERNAL (CursedSilicon)&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=130</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=130"/>
		<updated>2025-03-23T06:43:21Z</updated>

		<summary type="html">&lt;p&gt;Snep: Changed VLAN12 to VLAN256&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|256&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!VXLAN ID&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|1001&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|1002&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|1003&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=129</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=129"/>
		<updated>2025-03-23T06:35:59Z</updated>

		<summary type="html">&lt;p&gt;Snep: Changed VLAN1 to VLAN12&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|12&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!VXLAN ID&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|1001&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|1002&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|1003&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=128</id>
		<title>CGHMN-IP-Allocations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-IP-Allocations&amp;diff=128"/>
		<updated>2025-03-23T06:23:00Z</updated>

		<summary type="html">&lt;p&gt;Snep: Initial page creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== IP Address Allocations in the CGHMN Network ===&lt;br /&gt;
This page documents any IP addresses that are allocated statically to routers, subnets and members.&lt;br /&gt;
&lt;br /&gt;
=== Networks on the CGHMN side ===&lt;br /&gt;
This is a list of all networks active on the CGHMN server side.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Network Name&lt;br /&gt;
!VLAN&lt;br /&gt;
!Subnet&lt;br /&gt;
!Router IP&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Global LAN&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|No IP traffic, no assigned IP addresses&lt;br /&gt;
|-&lt;br /&gt;
|Core Services&lt;br /&gt;
|4&lt;br /&gt;
|172.23.4.0/22&lt;br /&gt;
|172.23.4.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Servers&lt;br /&gt;
|8&lt;br /&gt;
|172.23.8.0/22&lt;br /&gt;
|172.23.8.1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Wireguard Members Tunnel&lt;br /&gt;
| -&lt;br /&gt;
|100.89.128.0/22&lt;br /&gt;
|100.89.128.0&lt;br /&gt;
|The .0 for the router is not a typo, on P2P links the network address can also be used for a host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Members&#039; Networks ===&lt;br /&gt;
This list contains the subnets that are assigned to member routers on the  network. Members receive one &amp;lt;code&amp;gt;/24&amp;lt;/code&amp;gt; network from the &amp;lt;code&amp;gt;100.96.0.0/13&amp;lt;/code&amp;gt; block, in first-come-first-serve sequential order per default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Member Name&lt;br /&gt;
!Tunnel IP&lt;br /&gt;
!VXLAN ID&lt;br /&gt;
!Routed Subnet(s)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|CursedSilicon&lt;br /&gt;
|100.89.128.1&lt;br /&gt;
|1001&lt;br /&gt;
|100.96.1.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Talija&lt;br /&gt;
|100.89.128.2&lt;br /&gt;
|1002&lt;br /&gt;
|100.96.2.0/24&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Snep&lt;br /&gt;
|100.89.128.3&lt;br /&gt;
|1003&lt;br /&gt;
|100.96.3.0/24&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-Demo-Network&amp;diff=127</id>
		<title>CGHMN-Demo-Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-Demo-Network&amp;diff=127"/>
		<updated>2025-03-20T04:49:19Z</updated>

		<summary type="html">&lt;p&gt;Snep: added information about the container 10404&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Demo Network for the Interim Computer Festival ===&lt;br /&gt;
This page documents the quickly set up demo network to show off the CGHMN network at the [https://sdf.org/icf/ SDF&#039;s Interim Computer Festival] taking place between March 22nd and 23rd. Consider this a sort-of draft, an experimental first version, a test on what might work and what doesn&#039;t.&lt;br /&gt;
&lt;br /&gt;
Currently, the basics are up and running on the CGHMN Proxmox hypervisor living in the [https://devhack.net/ /dev/hack Hackerspace] in Seattle. These include a router and Wireguard endpoint through an OPNsense VM, a VXLAN tunnel endpoint container with some custom scripts to make deploying new member tunnel easier and two containers running a basic authoritative BIND DNS server for &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; and one hosting a custom, internal Certificate Authority for those domains.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Network Layout ===&lt;br /&gt;
This section describes the network layout currently set up for the CGHMN demo network, none of which is necessarily permanent and already set in stone. I (Snep) made some assumptions about domain names, IP addresses, firewall rules and general design ideas to get something up and running for the computer festival based on info from the many chats and discussions on the Cursed Silicon Discord&#039;s CGHMN channel (See [[Signup]] for more details). So, please feel free to give input on things you&#039;d like to see changed or added!&lt;br /&gt;
&lt;br /&gt;
On the Proxmox host, all VLANs mentioned below are available tagged on the bridge &amp;lt;code&amp;gt;brcghmn&amp;lt;/code&amp;gt;, with exception of VLAN1, which is untagged and the default network when a new container or VM is added to this bridge.&lt;br /&gt;
&lt;br /&gt;
For servers and retro clients, the subnet &amp;lt;code&amp;gt;172.23.0.0/16&amp;lt;/code&amp;gt; is currently in place, divided into smaller subnets, and might be subject to change later down the line. For Wireguard clients, the &amp;lt;code&amp;gt;100.89.128.0/22&amp;lt;/code&amp;gt; subnet out of the CGNAT block is used and again, might change later.&lt;br /&gt;
&lt;br /&gt;
Below is a further breakdown of VLANs existing in this CGHMN demo network:&lt;br /&gt;
&lt;br /&gt;
==== VLAN 1 - The Global LAN (172.23.0.0/22) ====&lt;br /&gt;
This network is our layer 2 bridged network to all members who wish to participate and is intended to be used for retro computers to directly communicate with each other even across the globe. This is accomplished by spanning a VXLAN tunnel across a Wireguard connection from the CGHMN server infrastructure to each members&#039; router endpoint, which can be any OpenWRT compatible device that contains the packages for VXLANs and Wireguard. The idea is to bridge on of at least two available interfaces from said router to the VXLAN network and thus directly bridge any connected retro machines to VLAN1. All members will be in the same L2 broadcast domain, meaning even non-IP protocols that are able to run over Ethernet should be able to communicate with each other from all over the world.&lt;br /&gt;
&lt;br /&gt;
Machines on this network are able to connect to all hosts on the Server VLAN (see below), the firewall for DNS, NTP and ICMP queries and to the root DNS and CA servers for DNS queries and HTTP access to the CA web server. They may also query DNS lookups at the legacy DNS server at &amp;lt;code&amp;gt;172.23.0.104&amp;lt;/code&amp;gt;. They are not, however, able to communicate with any hosts on the internet, the /dev/hack network or any of the other existing VLANs aside from specific exceptions.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.1.1-172.23.3.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.1.11-172.23.1.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;clients.retro&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 4 - Core Services (172.23.4.0/22) ====&lt;br /&gt;
This VLAN in intended for core internal services, like the root DNS server, VXLAN endpoint and our custom Certificate Authority. The Proxmox host also has an IP address in this subnet (&amp;lt;code&amp;gt;172.23.4.11&amp;lt;/code&amp;gt;), it does not however have any routes to the rest of this CGHMN demo infrastructure and thus can only be accessed from clients in the Core Services subnet. &lt;br /&gt;
&lt;br /&gt;
Hosts in this subnet may currently access the internet, the router for DNS, NTP and ICMP queries, query DNS lookups at the legacy DNS server at &amp;lt;code&amp;gt;172.23.4.104&amp;lt;/code&amp;gt; and the VXLAN endpoint may send UDP datagrams to anyone at port &amp;lt;code&amp;gt;4789&amp;lt;/code&amp;gt; for VXLAN tunnel replies, any other internal connections are prohibited.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.7.1-172.23.7.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.4.11-172.23.6.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;core.cghmn&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 8 - Servers (172.23.8.0/22) ====&lt;br /&gt;
This VLAN will contain all servers hosted and managed by members, which can be any (retro) service that works across an IP router. For anything that requires direct layer 2 access or the same broadcast domain as the client machines, it is advised to host said server in the Global LAN network. This is the only VLAN clients from the bridged Global LAN network may access freely, so members should be wary about what ports they open up for anyone outside of localhost. Another option is to run a tiny router instance based on OpenWRT in front of your server which will act as a basic firewall and NAT router behind which one can run their servers.&lt;br /&gt;
&lt;br /&gt;
Hosts in this subnet may not access the internet inherently, however a firewall rule is in place that allows specific servers internet access, it is still uncertain if this will make it to the final CGHMN or if this subnet is also supposed to be entirely sealed off from the public internet. During a few chats on the Discord server, the idea of hosting local package mirrors of popular distros and projects was mentioned so that both modern and retro systems won&#039;t need to connect to internet servers for package installations and upgrades. Hosts may access the router for DNS, NTP and ICMP queries and query DNS lookups at the legacy DNS server at &amp;lt;code&amp;gt;172.23.4.104&amp;lt;/code&amp;gt;, other internal connections are prohibited.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.11.1-172.23.11.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.8.11-172.23.10.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;hosting.retro&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 12 - DMZ (172.23.12.0/22) ====&lt;br /&gt;
Currently not in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Containers and VMs ===&lt;br /&gt;
Containers and VMs on the Proxmox host are currently assigned in the 10000 ID range to keep clear of existing VMs.&lt;br /&gt;
&lt;br /&gt;
There is one VM and three containers at the time of writing this:&lt;br /&gt;
&lt;br /&gt;
==== VM 10001 (demo-chhmn-router) ====&lt;br /&gt;
This is the OPNsense VM running as the primary router, firewall, DHCP server and Wireguard endpoint for the demo network. Its login credentials are currently in the paws of Snep, as I&#039;m still unsure where any passwords for the CGHMN are going to be stored safely and with proper access rights.&lt;br /&gt;
&lt;br /&gt;
The router has the first IP in any of the available demo network subnets and responds to IPv4 and IPv4 ICMP packets, DNS queries to its local Unbound resolver and NTP sync requests to the built-in NTP server.&lt;br /&gt;
&lt;br /&gt;
Unbound currently resolves all requests it cannot resolve locally recursively against the internet root servers and returns those replies to clients, this may be subject to change as we potentially plan on sealing the network off more. It is configured to forward all requests with a TLD of &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; to the internal DNS root server.&lt;br /&gt;
&lt;br /&gt;
The Wireguard endpoint servers as the connection into the CGHMN from the outside internet on &amp;lt;code&amp;gt;66.170.190.194:42070&amp;lt;/code&amp;gt; for anyone that wishes to parttake the network. See [[Signup]] for more details on how to join.&lt;br /&gt;
&lt;br /&gt;
==== Container 10401 (demo-cghmn-root-dns, VLAN4, 172.23.4.101) ====&lt;br /&gt;
This container, based on the absolutely tiny-footprinted Alpine image, hosts the BIND-based root DNS server for the internal CGHMN domains &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; together with the reverse DNS zone for the 172.23.0.0 network. It lives in the Core Services subnet and is reachable on port 53 for DNS queries from every other internal subnet. Zones are configured in the zone files under &amp;lt;code&amp;gt;/etc/bind/zones&amp;lt;/code&amp;gt; and loaded by the zone blocks in the &amp;lt;code&amp;gt;/etc/named.conf&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10401&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
==== Container 10402 (demo-cghmn-ca, VLAN4, 172.23.4.102) ====&lt;br /&gt;
This container, also based on Alpine, is hosting the custom Certificate Authority based on OpenSSL created and self-signed certificate files. It is currently constructed in a Root CA -&amp;gt; Intermediate CA -&amp;gt; Server Certificates structure, where the CA signed certificates of the intermediate CA, which then signs all certificates requested for servers and clients on the network. Clients thus should only need to install the CA certificate into their trusted keychain to have valid TLS connections to servers using certificates signed by this internal CA.&lt;br /&gt;
&lt;br /&gt;
Clients can access a web server on &amp;lt;code&amp;gt;certs.cghmn:80&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;172.23.4.102:80&amp;lt;/code&amp;gt; via plain HTTP to download the root CA and intermediate CA certificate files for installation on their retro machines. Note: This is not meant to be secure. When you add this root CA, we could pretend to be any server on the internet under any domain and any system that has the root CA or intermediate CA certificate installed will trust it. Don&#039;t add this on machines you would have personal data on or that you would let onto the public internet!&lt;br /&gt;
&lt;br /&gt;
The /root directory of this container contains a script called &amp;lt;code&amp;gt;create-and-sign-server-csr.sh&amp;lt;/code&amp;gt; that, when run without any arguments, will ask a few questions on the command line and generate a signed TLS certificate in the root directory for the specified DNS names to make deployment of new TLS certificates a little easier. This requires the password of the private key of the intermediate CA, which again is currently stored in Sneps password manager but of course will be copied to a safe location to store passwords once available for the CGHMN.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10402&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
==== Container 10403 (demo-cghmn-vxlan-endpoint, VLAN4, 172.23.4.103) ====&lt;br /&gt;
This container, another Alpine instance, connects all the VXLAN clients together under one virtual Linux bridge and is constructed with a couple if-up/if-down scripts and a Bash script to create new tunnels at &amp;lt;code&amp;gt;/opt/vxlan-scripts/create-vxlan-interface.sh&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
This script, when called like for example so: &amp;lt;code&amp;gt;create-vxlan-interface.sh 100.89.128.90&amp;lt;/code&amp;gt; will do the following:&lt;br /&gt;
&lt;br /&gt;
# Find the first unused VXLAN ID&lt;br /&gt;
# Output the VXLAN ID for configuring a new VXLAN tunnel on the client side&lt;br /&gt;
# Add an interface configuration to &amp;lt;code&amp;gt;/etc/vxlan-interfaces/&amp;lt;/code&amp;gt; which is sourced by ifupdown&lt;br /&gt;
# Bring up that new VXLAN interface, which bridges it to the Global LAN bridge&lt;br /&gt;
&lt;br /&gt;
after which the client with IP 100.89.128.90 can connect a VXLAN tunnel with the newly added VXLAN ID to their router and join the network.&lt;br /&gt;
&lt;br /&gt;
This is still a very manual process, though one which will probably become more streamlined in the future of the CGHMN network, perhaps with some APIs and/or custom OpenWRT web interface *wink wink*.&lt;br /&gt;
&lt;br /&gt;
This container is only reachable by the firewall itself and by the clients connecting their VXLAN bridge to port 4789 from the Wireguard tunnel, as it doesn&#039;t do any routing or hosting of services directly aside from the VXLAN endpoint.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10403&amp;lt;/code&amp;gt; on the Proxmox host onsole.&lt;br /&gt;
&lt;br /&gt;
==== Container 10404 (demo-cghmn-legacy-dns, VLAN4, 172.23.4.104) ====&lt;br /&gt;
This container, based on Alpine, runs a dnsmasq instance configured to look up certain DNS overrides either in the hosts file at &amp;lt;code&amp;gt;/etc/cghmn-dns-overrides&amp;lt;/code&amp;gt; or by including a dnsmasq configuration file from &amp;lt;code&amp;gt;/etc/dnsmasq-cghmn.d/*.conf&amp;lt;/code&amp;gt;. Any other requests it cannot resolve locally are forwarded to the Unbound DNS resolver running on the OPNsense router VM. This setup is used to create DNS overrides for existing domains to make old software, which is hardcoded to specific DNS entries, work again with custom servers hosted internally. &lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10404&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposed Organization of IDs and IPs ===&lt;br /&gt;
My (Sneps) idea behind Proxmox container and VM IDs are as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;101xx - 103xx&#039;&#039;&#039; are for Containers and VMs in the bridged layer 2 network, so any hosts that members want to run in the bridged network directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;104xx - 107xx&#039;&#039;&#039; are for Containers and VMs in the Core Services VLAN4, so anything that is necessary for the operation of the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;108xx - 111xx&#039;&#039;&#039; are for Containers and VMs in the Servers VLAN8, so anything that members would choose to host on the CGHMN Proxmox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For IPs, I left the first 10 IPs in each subnet reserved for things like routers, for example (perhaps a second router and a virtual IP for failover down the line?).&lt;br /&gt;
&lt;br /&gt;
After that, the first half of the subnet (see above under Network Layout for the actual start and end of this range) is supposed to be reserved for any hosts that are set up with a fully static IP. This is entirely outside of the DHCP range to avoid any conflicts. That DHCP range then starts with the second half of the subnet and goes up to the last available host IP of each subnet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other Notes ===&lt;br /&gt;
&lt;br /&gt;
* Currently, the advertised DNS server via DHCP is the included Unbound Server on the OPNsense instance. If we want to completely seal off clients and servers from the rest of the internet, we could directly point the clients towards our root DNS server for all requests.&lt;br /&gt;
* Currently, the OPNsense router does DHCP as it already has an IP in each VLAN and comes with a solid DHCP server that can also support failover out of the box (ISC DHCP). I (Snep) chose this route over a standalone DHCP server to avoid having a second container/VM in each subnet that solely does DHCP or DHCP proxying, mainly to keep the setup and maintenance work as low as possible.&lt;br /&gt;
* A customized OpenWRT image for the Gl.iNet MT300n and AR300n are currently being built and tested, which includes required packages and UCI configurations out of the box to make joining the network perhaps a little bit easier. Will update this page or create a new one and link to it once a working image exists!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reserved static IPs ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VLAN1, 172.23.0.11:&#039;&#039;&#039; WIREGUARD-EXTERNAL (CursedSilicon)&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-Demo-Network&amp;diff=126</id>
		<title>CGHMN-Demo-Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-Demo-Network&amp;diff=126"/>
		<updated>2025-03-20T03:51:24Z</updated>

		<summary type="html">&lt;p&gt;Snep: Added reserved IP for WIREGUARD-EXTERNAL for CursedSilicon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Demo Network for the Interim Computer Festival ===&lt;br /&gt;
This page documents the quickly set up demo network to show off the CGHMN network at the [https://sdf.org/icf/ SDF&#039;s Interim Computer Festival] taking place between March 22nd and 23rd. Consider this a sort-of draft, an experimental first version, a test on what might work and what doesn&#039;t.&lt;br /&gt;
&lt;br /&gt;
Currently, the basics are up and running on the CGHMN Proxmox hypervisor living in the [https://devhack.net/ /dev/hack Hackerspace] in Seattle. These include a router and Wireguard endpoint through an OPNsense VM, a VXLAN tunnel endpoint container with some custom scripts to make deploying new member tunnel easier and two containers running a basic authoritative BIND DNS server for &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; and one hosting a custom, internal Certificate Authority for those domains.&lt;br /&gt;
&lt;br /&gt;
=== Network Layout ===&lt;br /&gt;
This section describes the network layout currently set up for the CGHMN demo network, none of which is necessarily permanent and already set in stone. I (Snep) made some assumptions about domain names, IP addresses, firewall rules and general design ideas to get something up and running for the computer festival based on info from the many chats and discussions on the Cursed Silicon Discord&#039;s CGHMN channel (See [[Signup]] for more details). So, please feel free to give input on things you&#039;d like to see changed or added!&lt;br /&gt;
&lt;br /&gt;
On the Proxmox host, all VLANs mentioned below are available tagged on the bridge &amp;lt;code&amp;gt;brcghmn&amp;lt;/code&amp;gt;, with exception of VLAN1, which is untagged and the default network when a new container or VM is added to this bridge.&lt;br /&gt;
&lt;br /&gt;
For servers and retro clients, the subnet &amp;lt;code&amp;gt;172.23.0.0/16&amp;lt;/code&amp;gt; is currently in place, divided into smaller subnets, and might be subject to change later down the line. For Wireguard clients, the &amp;lt;code&amp;gt;100.89.128.0/22&amp;lt;/code&amp;gt; subnet out of the CGNAT block is used and again, might change later.&lt;br /&gt;
&lt;br /&gt;
Below is a further breakdown of VLANs existing in this CGHMN demo network:&lt;br /&gt;
&lt;br /&gt;
==== VLAN 1 - The Global LAN (172.23.0.0/22) ====&lt;br /&gt;
This network is our layer 2 bridged network to all members who wish to participate and is intended to be used for retro computers to directly communicate with each other even across the globe. This is accomplished by spanning a VXLAN tunnel across a Wireguard connection from the CGHMN server infrastructure to each members&#039; router endpoint, which can be any OpenWRT compatible device that contains the packages for VXLANs and Wireguard. The idea is to bridge on of at least two available interfaces from said router to the VXLAN network and thus directly bridge any connected retro machines to VLAN1. All members will be in the same L2 broadcast domain, meaning even non-IP protocols that are able to run over Ethernet should be able to communicate with each other from all over the world.&lt;br /&gt;
&lt;br /&gt;
Machines on this network are able to connect to all hosts on the Server VLAN (see below), the firewall for DNS, NTP and ICMP queries and to the root DNS and CA servers for DNS queries and HTTP access to the CA web server. They are not, however, able to communicate with any hosts on the internet, the /dev/hack network or any of the other existing VLANs aside from specific exceptions.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.1.1-172.23.3.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.1.11-172.23.1.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;clients.retro&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 4 - Core Services (172.23.4.0/22) ====&lt;br /&gt;
This VLAN in intended for core internal services, like the root DNS server, VXLAN endpoint and our custom Certificate Authority. The Proxmox host also has an IP address in this subnet (&amp;lt;code&amp;gt;172.23.4.11&amp;lt;/code&amp;gt;), it does not however have any routes to the rest of this CGHMN demo infrastructure and thus can only be accessed from clients in the Core Services subnet. &lt;br /&gt;
&lt;br /&gt;
Hosts in this subnet may currently access the internet, the router for DNS, NTP and ICMP queries and the VXLAN endpoint may send UDP datagrams to anyone at port &amp;lt;code&amp;gt;4789&amp;lt;/code&amp;gt; for VXLAN tunnel replies, any other internal connections are prohibited.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.7.1-172.23.7.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.4.11-172.23.6.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;core.cghmn&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 8 - Servers (172.23.8.0/22) ====&lt;br /&gt;
This VLAN will contain all servers hosted and managed by members, which can be any (retro) service that works across an IP router. For anything that requires direct layer 2 access or the same broadcast domain as the client machines, it is advised to host said server in the Global LAN network. This is the only VLAN clients from the bridged Global LAN network may access freely, so members should be wary about what ports they open up for anyone outside of localhost. Another option is to run a tiny router instance based on OpenWRT in front of your server which will act as a basic firewall and NAT router behind which one can run their servers.&lt;br /&gt;
&lt;br /&gt;
Hosts in this subnet may not access the internet inherently, however a firewall rule is in place that allows specific servers internet access, it is still uncertain if this will make it to the final CGHMN or if this subnet is also supposed to be entirely sealed off from the public internet. During a few talks on the Discord server, the idea of hosting local package mirrors of popular distros and projects was mentioned so that both modern and retro systems won&#039;t need to connect to internet servers for package installations and upgrades. Hosts may access the router for DNS, NTP and ICMP queries, other internal connections are prohibited.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.11.1-172.23.11.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.8.11-172.23.10.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;hosting.retro&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 12 - DMZ (172.23.12.0/22) ====&lt;br /&gt;
Currently not in use.&lt;br /&gt;
&lt;br /&gt;
=== Containers and VMs ===&lt;br /&gt;
Containers and VMs on the Proxmox host are currently assigned in the 10000 ID range to keep clear of existing VMs.&lt;br /&gt;
&lt;br /&gt;
There is one VM and three containers at the time of writing this:&lt;br /&gt;
&lt;br /&gt;
==== VM 10001 (demo-chhmn-router) ====&lt;br /&gt;
This is the OPNsense VM running as the primary router, firewall, DHCP server and Wireguard endpoint for the demo network. Its login credentials are currently in the paws of Snep, as I&#039;m still unsure where any passwords for the CGHMN are going to be stored safely and with proper access rights.&lt;br /&gt;
&lt;br /&gt;
The router has the first IP in any of the available demo network subnets and responds to IPv4 and IPv4 ICMP packets, DNS queries to its local Unbound resolver and NTP sync requests to the built-in NTP server.&lt;br /&gt;
&lt;br /&gt;
Unbound currently resolves all requests it cannot resolve locally recursively against the internet root servers and returns those replies to clients, this may be subject to change as we potentially plan on sealing the network off more. It is configured to forward all requests with a TLD of &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; to the internal DNS root server.&lt;br /&gt;
&lt;br /&gt;
The Wireguard endpoint servers as the connection into the CGHMN from the outside internet on &amp;lt;code&amp;gt;66.170.190.194:42070&amp;lt;/code&amp;gt; for anyone that wishes to parttake the network. See [[Signup]] for more details on how to join.&lt;br /&gt;
&lt;br /&gt;
==== Container 10401 (demo-cghmn-root-dns, VLAN4, 172.23.4.101) ====&lt;br /&gt;
This container, based on the absolutely tiny-footprinted Alpine image, hosts the BIND-based root DNS server for the internal CGHMN domains &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; together with the reverse DNS zone for the 172.23.0.0 network. It lives in the Core Services subnet and is reachable on port 53 for DNS queries from every other internal subnet. Zones are configured in the zone files under &amp;lt;code&amp;gt;/etc/bind/zones&amp;lt;/code&amp;gt; and loaded by the zone blocks in the &amp;lt;code&amp;gt;/etc/named.conf&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10401&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
==== Container 10402 (demo-cghmn-ca, VLAN4, 172.23.4.102) ====&lt;br /&gt;
This container, also based on Alpine, is hosting the custom Certificate Authority based on OpenSSL created and self-signed certificate files. It is currently constructed in a Root CA -&amp;gt; Intermediate CA -&amp;gt; Server Certificates structure, where the CA signed certificates of the intermediate CA, which then signs all certificates requested for servers and clients on the network. Clients thus should only need to install the CA certificate into their trusted keychain to have valid TLS connections to servers using certificates signed by this internal CA.&lt;br /&gt;
&lt;br /&gt;
Clients can access a web server on &amp;lt;code&amp;gt;certs.cghmn:80&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;172.23.4.102:80&amp;lt;/code&amp;gt; via plain HTTP to download the root CA and intermediate CA certificate files for installation on their retro machines. Note: This is not meant to be secure. When you add this root CA, we could pretend to be any server on the internet under any domain and any system that has the root CA or intermediate CA certificate installed will trust it. Don&#039;t add this on machines you would have personal data on or that you would let onto the public internet!&lt;br /&gt;
&lt;br /&gt;
The /root directory of this container contains a script called &amp;lt;code&amp;gt;create-and-sign-server-csr.sh&amp;lt;/code&amp;gt; that, when run without any arguments, will ask a few questions on the command line and generate a signed TLS certificate in the root directory for the specified DNS names to make deployment of new TLS certificates a little easier. This requires the password of the private key of the intermediate CA, which again is currently stored in Sneps password manager but of course will be copied to a safe location to store passwords once available for the CGHMN.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10401&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
==== Container 10403 (demo-cghmn-vxlan-endpoint, VLAN4, 172.23.4.103) ====&lt;br /&gt;
This container, another Alpine instance, connects all the VXLAN clients together under one virtual Linux bridge and is constructed with a couple if-up/if-down scripts and a Bash script to create new tunnels at &amp;lt;code&amp;gt;/opt/vxlan-scripts/create-vxlan-interface.sh&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
This script, when called like for example so: &amp;lt;code&amp;gt;create-vxlan-interface.sh 100.89.128.90&amp;lt;/code&amp;gt; will do the following:&lt;br /&gt;
&lt;br /&gt;
# Find the first unused VXLAN ID&lt;br /&gt;
# Output the VXLAN ID for configuring a new VXLAN tunnel on the client side&lt;br /&gt;
# Add an interface configuration to &amp;lt;code&amp;gt;/etc/vxlan-interfaces/&amp;lt;/code&amp;gt; which is sourced by ifupdown&lt;br /&gt;
# Bring up that new VXLAN interface, which bridges it to the Global LAN bridge&lt;br /&gt;
&lt;br /&gt;
after which the client with IP 100.89.128.90 can connect a VXLAN tunnel with the newly added VXLAN ID to their router and join the network.&lt;br /&gt;
&lt;br /&gt;
This is still a very manual process, though one which will probably become more streamlined in the future of the CGHMN network, perhaps with some APIs and/or custom OpenWRT web interface *wink wink*.&lt;br /&gt;
&lt;br /&gt;
This container is only reachable by the firewall itself and by the clients connecting their VXLAN bridge to port 4789 from the Wireguard tunnel, as it doesn&#039;t do any routing or hosting of services directly aside from the VXLAN endpoint.&lt;br /&gt;
&lt;br /&gt;
=== Proposed Organization of IDs and IPs ===&lt;br /&gt;
My (Sneps) idea behind Proxmox container and VM IDs are as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;101xx - 103xx&#039;&#039;&#039; are for Containers and VMs in the bridged layer 2 network, so any hosts that members want to run in the bridged network directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;104xx - 107xx&#039;&#039;&#039; are for Containers and VMs in the Core Services VLAN4, so anything that is necessary for the operation of the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;108xx - 111xx&#039;&#039;&#039; are for Containers and VMs in the Servers VLAN8, so anything that members would choose to host on the CGHMN Proxmox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For IPs, I left the first 10 IPs in each subnet reserved for things like routers, for example (perhaps a second router and a virtual IP for failover down the line?).&lt;br /&gt;
&lt;br /&gt;
After that, the first half of the subnet (see above under Network Layout for the actual start and end of this range) is supposed to be reserved for any hosts that are set up with a fully static IP. This is entirely outside of the DHCP range to avoid any conflicts. That DHCP range then starts with the second half of the subnet and goes up to the last available host IP of each subnet.&lt;br /&gt;
&lt;br /&gt;
=== Other Notes ===&lt;br /&gt;
&lt;br /&gt;
* Currently, the advertised DNS server via DHCP is the included Unbound Server on the OPNsense instance. If we want to completely seal off clients and servers from the rest of the internet, we could directly point the clients towards our root DNS server for all requests.&lt;br /&gt;
* Currently, the OPNsense router does DHCP as it already has an IP in each VLAN and comes with a solid DHCP server that can also support failover out of the box (ISC DHCP). I (Snep) chose this route over a standalone DHCP server to avoid having a second container/VM in each subnet that solely does DHCP or DHCP proxying, mainly to keep the setup and maintenance work as low as possible.&lt;br /&gt;
* A customized OpenWRT image for the Gl.iNet MT300n and AR300n are currently being built and tested, which includes required packages and UCI configurations out of the box to make joining the network perhaps a little bit easier. Will update this page or create a new one and link to it once a working image exists!&lt;br /&gt;
&lt;br /&gt;
=== Reserved static IPs ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VLAN1, 172.23.0.11:&#039;&#039;&#039; WIREGUARD-EXTERNAL (CursedSilicon)&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
	<entry>
		<id>https://wiki.cursedsilicon.net/index.php?title=CGHMN-Demo-Network&amp;diff=125</id>
		<title>CGHMN-Demo-Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.cursedsilicon.net/index.php?title=CGHMN-Demo-Network&amp;diff=125"/>
		<updated>2025-03-20T02:57:56Z</updated>

		<summary type="html">&lt;p&gt;Snep: Details about the demo CGHMN network for the SDF Interim Computer Festival&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Demo Network for the Interim Computer Festival ===&lt;br /&gt;
This page documents the quickly set up demo network to show off the CGHMN network at the [https://sdf.org/icf/ SDF&#039;s Interim Computer Festival] taking place between March 22nd and 23rd. Consider this a sort-of draft, an experimental first version, a test on what might work and what doesn&#039;t.&lt;br /&gt;
&lt;br /&gt;
Currently, the basics are up and running on the CGHMN Proxmox hypervisor living in the [https://devhack.net/ /dev/hack Hackerspace] in Seattle. These include a router and Wireguard endpoint through an OPNsense VM, a VXLAN tunnel endpoint container with some custom scripts to make deploying new member tunnel easier and two containers running a basic authoritative BIND DNS server for &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; and one hosting a custom, internal Certificate Authority for those domains.&lt;br /&gt;
&lt;br /&gt;
=== Network Layout ===&lt;br /&gt;
This section describes the network layout currently set up for the CGHMN demo network, none of which is necessarily permanent and already set in stone. I (Snep) made some assumptions about domain names, IP addresses, firewall rules and general design ideas to get something up and running for the computer festival based on info from the many chats and discussions on the Cursed Silicon Discord&#039;s CGHMN channel (See [[Signup]] for more details). So, please feel free to give input on things you&#039;d like to see changed or added!&lt;br /&gt;
&lt;br /&gt;
On the Proxmox host, all VLANs mentioned below are available tagged on the bridge &amp;lt;code&amp;gt;brcghmn&amp;lt;/code&amp;gt;, with exception of VLAN1, which is untagged and the default network when a new container or VM is added to this bridge.&lt;br /&gt;
&lt;br /&gt;
For servers and retro clients, the subnet &amp;lt;code&amp;gt;172.23.0.0/16&amp;lt;/code&amp;gt; is currently in place, divided into smaller subnets, and might be subject to change later down the line. For Wireguard clients, the &amp;lt;code&amp;gt;100.89.128.0/22&amp;lt;/code&amp;gt; subnet out of the CGNAT block is used and again, might change later.&lt;br /&gt;
&lt;br /&gt;
Below is a further breakdown of VLANs existing in this CGHMN demo network:&lt;br /&gt;
&lt;br /&gt;
==== VLAN 1 - The Global LAN (172.23.0.0/22) ====&lt;br /&gt;
This network is our layer 2 bridged network to all members who wish to participate and is intended to be used for retro computers to directly communicate with each other even across the globe. This is accomplished by spanning a VXLAN tunnel across a Wireguard connection from the CGHMN server infrastructure to each members&#039; router endpoint, which can be any OpenWRT compatible device that contains the packages for VXLANs and Wireguard. The idea is to bridge on of at least two available interfaces from said router to the VXLAN network and thus directly bridge any connected retro machines to VLAN1. All members will be in the same L2 broadcast domain, meaning even non-IP protocols that are able to run over Ethernet should be able to communicate with each other from all over the world.&lt;br /&gt;
&lt;br /&gt;
Machines on this network are able to connect to all hosts on the Server VLAN (see below), the firewall for DNS, NTP and ICMP queries and to the root DNS and CA servers for DNS queries and HTTP access to the CA web server. They are not, however, able to communicate with any hosts on the internet, the /dev/hack network or any of the other existing VLANs aside from specific exceptions.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.1.1-172.23.3.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.1.11-172.23.1.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;clients.retro&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 4 - Core Services (172.23.4.0/22) ====&lt;br /&gt;
This VLAN in intended for core internal services, like the root DNS server, VXLAN endpoint and our custom Certificate Authority. The Proxmox host also has an IP address in this subnet (&amp;lt;code&amp;gt;172.23.4.11&amp;lt;/code&amp;gt;), it does not however have any routes to the rest of this CGHMN demo infrastructure and thus can only be accessed from clients in the Core Services subnet. &lt;br /&gt;
&lt;br /&gt;
Hosts in this subnet may currently access the internet, the router for DNS, NTP and ICMP queries and the VXLAN endpoint may send UDP datagrams to anyone at port &amp;lt;code&amp;gt;4789&amp;lt;/code&amp;gt; for VXLAN tunnel replies, any other internal connections are prohibited.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.7.1-172.23.7.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.4.11-172.23.6.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;core.cghmn&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 8 - Servers (172.23.8.0/22) ====&lt;br /&gt;
This VLAN will contain all servers hosted and managed by members, which can be any (retro) service that works across an IP router. For anything that requires direct layer 2 access or the same broadcast domain as the client machines, it is advised to host said server in the Global LAN network. This is the only VLAN clients from the bridged Global LAN network may access freely, so members should be wary about what ports they open up for anyone outside of localhost. Another option is to run a tiny router instance based on OpenWRT in front of your server which will act as a basic firewall and NAT router behind which one can run their servers.&lt;br /&gt;
&lt;br /&gt;
Hosts in this subnet may not access the internet inherently, however a firewall rule is in place that allows specific servers internet access, it is still uncertain if this will make it to the final CGHMN or if this subnet is also supposed to be entirely sealed off from the public internet. During a few talks on the Discord server, the idea of hosting local package mirrors of popular distros and projects was mentioned so that both modern and retro systems won&#039;t need to connect to internet servers for package installations and upgrades. Hosts may access the router for DNS, NTP and ICMP queries, other internal connections are prohibited.&lt;br /&gt;
&lt;br /&gt;
Addresses are handed out via DHCP by the router in the range &amp;lt;code&amp;gt;172.23.11.1-172.23.11.254&amp;lt;/code&amp;gt;, the range &amp;lt;code&amp;gt;172.23.8.11-172.23.10.255&amp;lt;/code&amp;gt; is reserved for static hosts. The search domain for this network is &amp;lt;code&amp;gt;hosting.retro&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== VLAN 12 - DMZ (172.23.12.0/22) ====&lt;br /&gt;
Currently not in use.&lt;br /&gt;
&lt;br /&gt;
=== Containers and VMs ===&lt;br /&gt;
Containers and VMs on the Proxmox host are currently assigned in the 10000 ID range to keep clear of existing VMs.&lt;br /&gt;
&lt;br /&gt;
There is one VM and three containers at the time of writing this:&lt;br /&gt;
&lt;br /&gt;
==== VM 10001 (demo-chhmn-router) ====&lt;br /&gt;
This is the OPNsense VM running as the primary router, firewall, DHCP server and Wireguard endpoint for the demo network. Its login credentials are currently in the paws of Snep, as I&#039;m still unsure where any passwords for the CGHMN are going to be stored safely and with proper access rights.&lt;br /&gt;
&lt;br /&gt;
The router has the first IP in any of the available demo network subnets and responds to IPv4 and IPv4 ICMP packets, DNS queries to its local Unbound resolver and NTP sync requests to the built-in NTP server.&lt;br /&gt;
&lt;br /&gt;
Unbound currently resolves all requests it cannot resolve locally recursively against the internet root servers and returns those replies to clients, this may be subject to change as we potentially plan on sealing the network off more. It is configured to forward all requests with a TLD of &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; to the internal DNS root server.&lt;br /&gt;
&lt;br /&gt;
The Wireguard endpoint servers as the connection into the CGHMN from the outside internet on &amp;lt;code&amp;gt;66.170.190.194:42070&amp;lt;/code&amp;gt; for anyone that wishes to parttake the network. See [[Signup]] for more details on how to join.&lt;br /&gt;
&lt;br /&gt;
==== Container 10401 (demo-cghmn-root-dns, VLAN4, 172.23.4.101) ====&lt;br /&gt;
This container, based on the absolutely tiny-footprinted Alpine image, hosts the BIND-based root DNS server for the internal CGHMN domains &amp;lt;code&amp;gt;.retro&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.cghmn&amp;lt;/code&amp;gt; together with the reverse DNS zone for the 172.23.0.0 network. It lives in the Core Services subnet and is reachable on port 53 for DNS queries from every other internal subnet. Zones are configured in the zone files under &amp;lt;code&amp;gt;/etc/bind/zones&amp;lt;/code&amp;gt; and loaded by the zone blocks in the &amp;lt;code&amp;gt;/etc/named.conf&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10401&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
==== Container 10402 (demo-cghmn-ca, VLAN4, 172.23.4.102) ====&lt;br /&gt;
This container, also based on Alpine, is hosting the custom Certificate Authority based on OpenSSL created and self-signed certificate files. It is currently constructed in a Root CA -&amp;gt; Intermediate CA -&amp;gt; Server Certificates structure, where the CA signed certificates of the intermediate CA, which then signs all certificates requested for servers and clients on the network. Clients thus should only need to install the CA certificate into their trusted keychain to have valid TLS connections to servers using certificates signed by this internal CA.&lt;br /&gt;
&lt;br /&gt;
Clients can access a web server on &amp;lt;code&amp;gt;certs.cghmn:80&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;172.23.4.102:80&amp;lt;/code&amp;gt; via plain HTTP to download the root CA and intermediate CA certificate files for installation on their retro machines. Note: This is not meant to be secure. When you add this root CA, we could pretend to be any server on the internet under any domain and any system that has the root CA or intermediate CA certificate installed will trust it. Don&#039;t add this on machines you would have personal data on or that you would let onto the public internet!&lt;br /&gt;
&lt;br /&gt;
The /root directory of this container contains a script called &amp;lt;code&amp;gt;create-and-sign-server-csr.sh&amp;lt;/code&amp;gt; that, when run without any arguments, will ask a few questions on the command line and generate a signed TLS certificate in the root directory for the specified DNS names to make deployment of new TLS certificates a little easier. This requires the password of the private key of the intermediate CA, which again is currently stored in Sneps password manager but of course will be copied to a safe location to store passwords once available for the CGHMN.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no root password set, console access works either via key-based SSH or by entering &amp;lt;code&amp;gt;pct enter 10401&amp;lt;/code&amp;gt; on the Proxmox host console.&lt;br /&gt;
&lt;br /&gt;
==== Container 10403 (demo-cghmn-vxlan-endpoint, VLAN4, 172.23.4.103) ====&lt;br /&gt;
This container, another Alpine instance, connects all the VXLAN clients together under one virtual Linux bridge and is constructed with a couple if-up/if-down scripts and a Bash script to create new tunnels at &amp;lt;code&amp;gt;/opt/vxlan-scripts/create-vxlan-interface.sh&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
This script, when called like for example so: &amp;lt;code&amp;gt;create-vxlan-interface.sh 100.89.128.90&amp;lt;/code&amp;gt; will do the following:&lt;br /&gt;
&lt;br /&gt;
# Find the first unused VXLAN ID&lt;br /&gt;
# Output the VXLAN ID for configuring a new VXLAN tunnel on the client side&lt;br /&gt;
# Add an interface configuration to &amp;lt;code&amp;gt;/etc/vxlan-interfaces/&amp;lt;/code&amp;gt; which is sourced by ifupdown&lt;br /&gt;
# Bring up that new VXLAN interface, which bridges it to the Global LAN bridge&lt;br /&gt;
&lt;br /&gt;
after which the client with IP 100.89.128.90 can connect a VXLAN tunnel with the newly added VXLAN ID to their router and join the network.&lt;br /&gt;
&lt;br /&gt;
This is still a very manual process, though one which will probably become more streamlined in the future of the CGHMN network, perhaps with some APIs and/or custom OpenWRT web interface *wink wink*.&lt;br /&gt;
&lt;br /&gt;
This container is only reachable by the firewall itself and by the clients connecting their VXLAN bridge to port 4789 from the Wireguard tunnel, as it doesn&#039;t do any routing or hosting of services directly aside from the VXLAN endpoint.&lt;br /&gt;
&lt;br /&gt;
=== Proposed Organization of IDs and IPs ===&lt;br /&gt;
My (Sneps) idea behind Proxmox container and VM IDs are as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;101xx - 103xx&#039;&#039;&#039; are for Containers and VMs in the bridged layer 2 network, so any hosts that members want to run in the bridged network directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;104xx - 107xx&#039;&#039;&#039; are for Containers and VMs in the Core Services VLAN4, so anything that is necessary for the operation of the CGHMN network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;108xx - 111xx&#039;&#039;&#039; are for Containers and VMs in the Servers VLAN8, so anything that members would choose to host on the CGHMN Proxmox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For IPs, I left the first 10 IPs in each subnet reserved for things like routers, for example (perhaps a second router and a virtual IP for failover down the line?).&lt;br /&gt;
&lt;br /&gt;
After that, the first half of the subnet (see above under Network Layout for the actual start and end of this range) is supposed to be reserved for any hosts that are set up with a fully static IP. This is entirely outside of the DHCP range to avoid any conflicts. That DHCP range then starts with the second half of the subnet and goes up to the last available host IP of each subnet.&lt;br /&gt;
&lt;br /&gt;
=== Other Notes ===&lt;br /&gt;
&lt;br /&gt;
* Currently, the advertised DNS server via DHCP is the included Unbound Server on the OPNsense instance. If we want to completely seal off clients and servers from the rest of the internet, we could directly point the clients towards our root DNS server for all requests.&lt;br /&gt;
* Currently, the OPNsense router does DHCP as it already has an IP in each VLAN and comes with a solid DHCP server that can also support failover out of the box (ISC DHCP). I (Snep) chose this route over a standalone DHCP server to avoid having a second container/VM in each subnet that solely does DHCP or DHCP proxying, mainly to keep the setup and maintenance work as low as possible.&lt;br /&gt;
* A customized OpenWRT image for the Gl.iNet MT300n and AR300n are currently being built and tested, which includes required packages and UCI configurations out of the box to make joining the network perhaps a little bit easier. Will update this page or create a new one and link to it once a working image exists!&lt;/div&gt;</summary>
		<author><name>Snep</name></author>
	</entry>
</feed>