#!/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" # Static variables used to configure the Wireguard tunnel WG_PEER_ADDRESS="wg-admin.cursedsilicon.net" WG_PEER_PUBKEY="k/QiJIbMakMKgTCHVt8/D+8k4DzRVM6U33F3gMZfRUg=" WG_PEER_PORT="42070" #WG_MTU=1634 WG_MTU=1420 # Wireguard IPv4 variables WG_TUNNEL_INNER_SUBNET_PREFIX4="100.89" WG_TUNNEL_INNER_SUBNET4_SIZE="22" WG_TUNNEL_INNER_SUBNET4="${WG_TUNNEL_INNER_SUBNET_PREFIX4}.128.0" WG_TUNNEL_INNER_LOCAL_IP4="${WG_TUNNEL_INNER_SUBNET_PREFIX4}.255.255" WG_TUNNEL_INNER_PEER_IP4="${WG_TUNNEL_INNER_SUBNET4}.128.1" WG_TUNNEL_REMOTE_SUBNET4="172.23.0.0/16" # 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="fd38:f85d:a2fe::/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_IP4}" VXLAN_PEER_IP="172.23.4.103" VXLAN_ID="9999" # 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 <