Fix WiFi conflict and SSH accessibility on fresh flash

- Remove wpa_supplicant@wlan0.service enablement: Netplan spawns its own
  wpa_supplicant instance, enabling the @wlan0 unit creates a second one
  that fights for the socket, causing WiFi instability and SSH drops
- Write /etc/nftables.conf to card at flash time: Armbian bookworm default
  nftables policy drops all input; SSH was unreachable despite sshd running.
  Ruleset allows established, loopback, ICMP, and TCP/22 only

Fixes DevTrack #317 and #295
This commit is contained in:
Cobra
2026-04-08 11:08:02 -04:00
parent 90c26ae24d
commit 3cdccbf47d
+25 -9
View File
@@ -525,15 +525,6 @@ DHCP=yes
IPv6PrivacyExtensions=yes
EOF
# Enable wpa_supplicant@wlan0 if the template service exists
WPA_TEMPLATE="${MOUNT_POINT}/lib/systemd/system/wpa_supplicant@.service"
WPA_WANTS="${MOUNT_POINT}/etc/systemd/system/multi-user.target.wants"
if [[ -f "$WPA_TEMPLATE" ]]; then
mkdir -p "$WPA_WANTS"
ln -sf /lib/systemd/system/wpa_supplicant@.service \
"${WPA_WANTS}/wpa_supplicant@wlan0.service"
fi
# Disable the generic wpa_supplicant.service — it conflicts with @wlan0 instance
# Both would fight over wlan0, causing WiFi instability and SSH drops
rm -f "${MOUNT_POINT}/etc/systemd/system/multi-user.target.wants/wpa_supplicant.service"
@@ -598,6 +589,31 @@ chmod 700 "$SSH_DIR"
chmod 600 "${SSH_DIR}/authorized_keys"
info "SSH authorized_keys configured"
# Ensure SSH is allowed through nftables (Armbian default drops input)
step "Configuring nftables firewall..."
cat > "${MOUNT_POINT}/etc/nftables.conf" << 'NFTEOF'
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
iif lo accept
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
tcp dport 22 accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
NFTEOF
info "nftables config written (SSH allowed)"
# Hostname
step "Setting hostname..."
echo "$BB_HOSTNAME" > "${MOUNT_POINT}/etc/hostname"