#!/bin/sh # Set router defaults runing first boot # Ensure this script is only run once if CONFIGED=$(uci get system.@system[0].cghmn_is_configured 2>/dev/null) && [ "$CONFIGED" = "1" ]; then exit 0 fi # Get last four letters of eth0 MAC FULL_MAC=$(ip link show eth0 | awk '/link\/ether/ { gsub(":",""); print substr($2,0,4) ":" substr($2,5,4) ":" substr($2,9,4) }') MAC_LASTFOUR=$(echo "${FULL_MAC}" | awk -F':' '{ print $3 }') NEW_HOSTNAME="CGHMN-Node-$MAC_LASTFOUR" # Turn last four letters of MAC into IPv4 address suffix LOCAL_IP4_FROM_MAC=$(printf "%d.%d" $(echo "${MAC_LASTFOUR}" | awk '{ print "0x" substr($0,0,2) " 0x" substr($0,3,2) }')) # Static variables used to configure the Wireguard tunnel WG_PEER_ADDRESS="insert.target.server.domain" WG_PEER_PUBKEY="VAVFX88DKGoO2naiWml1jepF7MVrIjDAbMhhYq5S1nQ=" # Wireguard IPv4 variables WG_TUNNEL_INNER_SUBNET4="10.234." WG_TUNNEL_INNER_SUBNET4_SIZE="16" WG_TUNNEL_INNER_LOCAL_IP4="${WG_TUNNEL_INNER_SUBNET4}${LOCAL_IP4_FROM_MAC}" WG_TUNNEL_INNER_PEER_IP4="${WG_TUNNEL_INNER_SUBNET4}.0.1" WG_TUNNEL_REMOTE_SUBNET4="10.201.0.0/23" # Wireguard IPv6 variables WG_TUNNEL_INNER_SUBNET6="fd38:f85d:a2fd::" WG_TUNNEL_INNER_SUBNET6_SIZE="64" WG_TUNNEL_INNER_LOCAL_IP6="${WG_TUNNEL_INNER_SUBNET6}${FULL_MAC}" WG_TUNNEL_INNER_PEER_IP6="${WG_TUNNEL_INNER_SUBNET6}ffff:ffff:ffff:ffff" WG_TUNNEL_REMOTE_SUBNET6="2001:470:5168:201::/64" # Generate new Wireguard private key for this node WG_PRIVKEY="$(wg genkey)" # Static variables used to configure the VXLAN interface VXLAN_LOCAL_IP="${WG_TUNNEL_INNER_LOCAL_IP6}" VXLAN_PEER_IP="${WG_TUNNEL_INNER_PEER_IP6}" VXLAN_ID="101" # Before adding new config, clear old firewall zones and rules while uci -q delete firewall.@rule[0]; do :; done while uci -q delete firewall.@zone[0]; do :; done while uci -q delete firewall.@forwarding[0]; do :; done # Batch-add most UCI configuration next uci -q batch <