=======================
== Tango Kilo's Blog ==
=======================

Nfs Heimnetz

NFS-Freigaben nur im Heimnetz mounten (Linux, systemd, pfSense)

In diesem Beitrag zeige ich, wie du unter Linux beim Systemstart prüfst, ob du dich im Heimnetz befindest – und nur dann deine NFS-Freigaben automatisch mountest. Besonders nützlich für Laptops oder Entwickler-Workstations mit wechselnden Netzumgebungen.


Ausgangslage

  • Heimnetz mit pfSense-Router (pfsense.itc-embedded.de)
  • Zwei NFS-Server:
    • walhalla.itc-embedded.de:/Buero/mnt/nas/office
    • tomte.itc-embedded.de:/backup/mnt/nas/backup
  • Ubuntu/Linux mit systemd
  • Ziel: NFS-Freigaben nur mounten, wenn das Heimnetz verfügbar ist

Erkennung des Heimnetzes

Der Trick besteht darin, den DNS-Eintrag des pfSense-Routers abzufragen. Ist er auflösbar, sind wir ziemlich sicher im Heimnetz.

Test:

host pfsense.itc-embedded.de

Beispielantwort:

pfsense.itc-embedded.de has address 192.168.10.1

🖥️ Das Bash-Skript

Pfad: /usr/local/bin/mount-home-nfs.sh

#!/bin/bash

# Prüfe, ob Heimnetz (pfSense) erreichbar ist
if host pfsense.itc-embedded.de &>/dev/null; then
    echo "[+] Heimnetz erkannt. Versuche NFS-Mounts."

    # Nur mounten, wenn Mountpoints existieren und noch nicht gemountet sind
    if ! mountpoint -q /mnt/nas/office; then
        echo "→ Mounting office..."
        mount -t nfs4 walhalla.itc-embedded.de:/Buero /mnt/nas/office
    fi

    if ! mountpoint -q /mnt/nas/backup; then
        echo "→ Mounting backup..."
        mount -t nfs4 tomte.itc-embedded.de:/backup /mnt/nas/backup
    fi
else
    echo "[-] Nicht im Heimnetz. Keine NFS-Mounts."
fi

Systemd-Service einrichten

Pfad: /etc/systemd/system/mount-home-nfs.service

[Unit]
Description=Mount NFS shares when in home network
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/mount-home-nfs.sh
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

Einrichtung

sudo mkdir -p /mnt/nas/office /mnt/nas/backup
sudo chmod +x /usr/local/bin/mount-home-nfs.sh
sudo systemctl daemon-reexec
sudo systemctl enable mount-home-nfs.service

Starttest:

sudo systemctl start mount-home-nfs.service
sudo systemctl status mount-home-nfs.service

Optional: Manuell testen

/usr/local/bin/mount-home-nfs.sh

Erweiterungsmöglichkeiten

  • Unmount bei Verlassen des Heimnetzes (z. B. via NetworkManager-dispatcher)
  • Fallback-Logik, wenn NFS kurzzeitig nicht verfügbar ist
  • Logging in /var/log oder per systemd-journald

Fazit

Mit dieser einfachen Methode mountest du deine Netzwerkfreigaben nur dann, wenn du wirklich im richtigen Netz bist – ganz ohne unnötige Timeouts, Fehler oder Wartezeiten beim Booten unterwegs.

Minimalinvasiv. Robust. Linux-Style.