Ubiquiti UniFi Dream Machine Pro (UDM-PRO) – NAT deaktivieren

Ubiquiti Logo

Die Ubiquiti UniFi Dream Machine Pro (UDM-PRO) bietet ein gutes Preis-Leistungs-Verhältnis, weshalb sie oft im Privatgebrauch oder in kleinen Firmen zum Einsatz kommt. Idealerweise wird das Gerät direkt oder über ein Modem mit dem Internet verbunden. Hierfür stehen an der UDM-PRO die beiden WAN-Ports 9 (RJ45) und 10 (SFP) zur Verfügung. Auf beiden Ports ist die Network Address Translation (NAT) standardmäßig aktiviert. Innerhalb der Konfigurationsoberfläche besteht keine Möglichkeit NAT zu deaktivieren.

Falls die UDM-PRO unter bestimmten Voraussetzungen hinter einem Router, z.B. einer FRITZ!Box betrieben werden muss, dann hat man zwangsweise den Nachteil von doppeltem NAT. In vielen Fällen kann dieses Setup ohne weitere Einschränkungen genutzt werden. Doppeltes NAT führt aber oftmals bei Onlinespielen, Xbox, PlayStation und Co zu Problemen. Diese Probleme können jedoch behoben werden, indem die UDM-PRO in der FRITZ!Box als “Exposed Host” konfiguriert wird. Das doppelte NAT ist dann aber trotzdem noch vorhanden.

Lange Rede kurzer Sinn: In diesem Artikel möchte ich euch zeigen, wie ihr NAT auf den WAN-Ports der UDM-PRO deaktivieren könnt.

SSH aktivieren und verbinden

Zunächst müsst ihr den SSH-Zugang aktivieren und ein Passwort setzen. Dies erfolgt über die Einstellungen der UDM-PRO unter dem Punkt “Console Settings”. Bei älteren Versionen von UniFi OS sieht die Weboberfläche ein wenig anders aus.

UDM SSH aktivieren

Anschließend könnt ihr euch z.B. mit PuTTY via SSH auf die UDM-PRO verbinden. Der Username ist “root”.

Mit folgendem Befehl können wir die aktuelle NAT-Konfiguration einsehen:

ab UniFi OS 3.x:
xtables-multi iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK -v --line-number
UniFi OS 2.x und älter:
xtables-legacy-multi iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK -v --line-number

Standardmäßig sieht die NAT-Konfiguration folgendermaßen aus:

Chain UBIOS_POSTROUTING_USER_HOOK (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1     481K   66M MASQUERADE  all  --  any    eth8    anywhere             anywhere   
2        0     0 MASQUERADE  all  --  any    eth9    anywhere             anywhere

Hier ist ersichtlich, dass auf Port 9 (eth8) und Port 10 (eth9) NAT aktiviert ist.

“UDM / UDMPro Boot Script” installieren

Voraussetzung für das Deaktivieren von NAT ist das “UDM / UDMPro Boot Script“, welches auch nach einem Neustart oder Firmwareupdate bestehen bleibt.

Für die Installation wird das Boot Script heruntergeladen und installiert. Je nach Version von UniFi OS kann noch die alte Version des Skripts verwendet werden, welche bis UniFi OS 2.4.x funktionieren sollte.

curl -fsL "https://raw.githubusercontent.com/unifi-utilities/unifios-utilities/HEAD/on-boot-script/remote_install.sh" | /bin/sh

Alternativ ab UniFi OS 2.5.x und höher dann folgende Variante. Hier ist etwas mehr manuelle Handarbeit zu erledigen:

# Download package
curl -L https://github.com/unifi-utilities/unifios-utilities/raw/main/on-boot-script-2.x/packages/udm-boot-2x_1.0.1_all.deb -o /tmp/udm-boot-2x_1.0.1_all.deb

# Install it
dpkg -i /tmp/udm-boot-2x_1.0.1_all.deb

# Patches for 'udm-boot-2x_1.0.1_all.deb' package
sed -i 's/Description=Run On Startup UDM 2.x/Description=Run On Startup UDM 3.x/g' /lib/systemd/system/udm-boot.service
sed -i '/Restart=on-failure/d' /lib/systemd/system/udm-boot.service
sed -i '/RestartSec=5s/d' /lib/systemd/system/udm-boot.service

# Enable reload and start
systemctl enable udm-boot
systemctl daemon-reload
systemctl start udm-boot

Zum Schluss sollte geprüft werden, ob das Skript auch läuft:

systemctl status udm-boot.service

Sofern “Run On Startup UDM 3.x” angezeigt wird, passt alles.

NAT deaktivieren

Jetzt könnt ihr eigene Shell Scripte in “/data/on_boot.d” hinterlegen, die bei jedem UDM-PRO Start bzw. Reboot ausgeführt werden.

cd /data/on_boot.d

Dort erstellt ihr euer Skript zur Deaktivierung von NAT:

touch /data/on_boot.d/delete-nat.sh

Das Skript funktioniert ab UniFi OS 3.x und bekommt folgenden Inhalt:

#!/bin/bash
# Check if script runs directly after boot. If so, wait for 10 seconds.
uptimeMinutes=`cat /proc/uptime | awk '{print $1}'`
if [ ${uptimeMinutes::-3} -lt 300 ]
	then
		logger NAT-Script: Script zum 1. Mal nach Boot ausgefuehrt
		sleep 10
	else
		logger NAT-Script: Script via Cron-Job ausgefuehrt
fi

# Check if default NAT rules exist
if iptables -t nat -S UBIOS_POSTROUTING_USER_HOOK | grep -e "UBIOS_POSTROUTING_USER_HOOK -o eth8 -m comment --comment 00" -e "UBIOS_POSTROUTING_USER_HOOK -o eth9 -m comment --comment 00" > /dev/null
	then
		xtables-legacy-multi iptables -t nat -D UBIOS_POSTROUTING_USER_HOOK 1
		if iptables -t nat -S UBIOS_POSTROUTING_USER_HOOK | grep -e "UBIOS_POSTROUTING_USER_HOOK -o eth8 -m comment --comment 00" -e "UBIOS_POSTROUTING_USER_HOOK -o eth9 -m comment --comment 00" > /dev/null
			then
				xtables-legacy-multi iptables -t nat -D UBIOS_POSTROUTING_USER_HOOK 1
				if iptables -t nat -S UBIOS_POSTROUTING_USER_HOOK | grep -e "UBIOS_POSTROUTING_USER_HOOK -o eth8 -m comment --comment 00" -e "UBIOS_POSTROUTING_USER_HOOK -o eth9 -m comment --comment 00" > /dev/null
					then
						logger NAT-Script: NAT-Regel gefunden, Loeschen nicht erfolgreich \(Fehler!\)
					else
						logger NAT-Script: NAT-Regel gefunden und geloescht
				fi
			else
				logger NAT-Script: NAT-Regel gefunden und geloescht
		fi
	else
		logger NAT-Script: Keine NAT-Regel vorhanden
fi


# Check if cron job exists
if ls /etc/cron.d/delete-nat > /dev/null 2>&1
	then 
		logger NAT-Script: Cron-Job vorhanden
	else
		echo "*/15 * * * * /data/on_boot.d/delete-nat.sh" > /etc/cron.d/delete-nat
		logger NAT-Script: Cron-Job nicht vorhanden und erstellt
		/etc/init.d/cron restart 
fi
Das Skript ist eine leicht optimierte Version der ursprünglichen Variante aus dem Kommentar von other_tobi.

Es überprüft, ob die standardmäßig gesetzten NAT-Regeln vorhanden sind und entfernt diese. Außerdem wird ein rudimentäres Logging geboten.

Bei jeder Änderung im Routing oder in den Firewall-Regeln der UDM-PRO werden die beiden NAT-Policies wiederhergestellt. Aus diesem Grund wird ein Cronjob erstellt, welcher dafür sorgt, dass das Skript alle 15 Minuten ausgeführt wird. Somit wird sichergestellt, dass die Standard-NAT-Regeln wieder entfernt werden, sofern diese automatisch generiert werden.

Das Skript muss anschließend noch ausführbar gemacht werden:

chmod +x delete-nat.sh

Bei Bedarf könnt ihr das Skript direkt starten und prüfen, ob es funktioniert.

bash delete-nat.sh

Eine Überprüfung mit

xtables-legacy-multi iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK -v --line-number

zeigt, dass beide NAT-Regeln entfernt wurden:

Chain UBIOS_POSTROUTING_USER_HOOK (1 references)
num pkts bytes target prot opt in out source destination

Das Logging des Skripts könnt ihr folgendermaßen einsehen:

grep NAT /var/log/messages

Statische Route in der FRITZ!Box

Standardmäßig ist das FRITZ!Box Subnetz 192.168.178.0/24 und das Netz der UDM-PRO 192.168.1.0/24.

Damit Clients aus dem UDM-PRO-Subnetz auf das Internet oder die FRITZ!Box zugreifen können, wird noch eine statische Route auf der FRITZ!Box benötigt.

Diese könnt ihr unter “Heimnetz –> Netzwerke –> Netzwerkeinstellungen” anlegen. Dazu ganz nach unten scrollen und auf den Button “IPv4-Routen” klicken (siehe Bild).

Dort erstellt ihr eine neue Route und gebt folgende Daten ein:

  • Netzwerk: das Netz der UDM-PRO, standardmäßig 192.168.1.0
  • Subnetzmaske: die Subnetzmaske des vorher eingetragenen Netzes, standardmäßig 255.255.255.0
  • Gateway: die Adresse der UDM-PRO im FRITZ!Box Subnetz, diese kann unter “Heimnetzwerk” in Erfahrung gebracht werden

Mit Klick auf “Übernehmen” ist dieser Schritt erledigt.

Optional: Firewall-Regel in der UDM-PRO

Dieser Schritt ist nur notwendig, wenn ihr vom Subnetz der FRITZ!Box auf ein Subnetz “hinter” der UniFi Dream Machine Pro zugreifen möchtet. Anders herum funktioniert es ohne weitere Konfiguration.

Die Kommunikation wird nämlich noch durch die Firewall der UDM-PRO blockiert. Um dies zu ändern, muss eine neue Regel erstellt werden. Zunächst muss der UniFi Network Controller auf der UDM-PRO geöffnet werden. Anschließend unter “Einstellungen –> Security –> Internet Threat Management –> Firewall” auf den Button “Create new Rule” klicken.

Exemplarisch habe ich jeglichen Traffic aus dem Subnetz der FRITZ!Box freigegeben. Sofern möglich solltet ihr die Freigabe jedoch spezifischer gestalten, z.B. auf einzelne IP-Adressen einschränken und nicht ganze Subnetze freigeben.

Tobi

Hallo, mein Name ist Tobias und ich habe diesen Blog im April 2009 ins Leben gerufen. Seitdem blogge ich hier über Software, Internet, Windows und andere Themen, die mich interessieren. SSDblog ist mein zweiter Blog, indem es rund um das Thema SSDs geht. Ich würde mich freuen, wenn ihr meinen Feed abonniert oder mir auf Twitter und Facebook folgt.

152 Antworten

  1. Stefan sagt:

    Hallo Thomas,

    Danke für den tollen Blog.
    Ich selbst nutze aktuell noch das USG hinter eine Fritz.Box.
    Will aber eigentlich auf die UDM-Pro wechseln, aber das Doppelte NAT ist echt ein Problem.
    Du schreibst, bei jeder FR Regel die geändert oder neuerstellt wird, werden die NAT Regeln wieder neuerstellt?
    Das wäre ja Mist, wenn man jedes Mal das Script wieder ausführen müsste.

    Bitte sage mir, dass ich das Falsch verstehe ;-)

    Gruß Stefan

    • Tobi sagt:

      Hallo Stefan, nein das ist leider so. Ja ist echt Mist :(
      Allerdings ist das nur in der Anfangszeit ein Problem, während man die UDM-Pro einrichtet. Danach werden die Firewall-Regeln ja nicht mehr täglich angepasst, zumindest bei mir.
      Eventuell existiert noch eine Methode, um das Skript automatisch nach Änderungen in der Firewall zu triggern. Ich bleibe auf jeden Fall dran an diesem Thema.

  2. Stefan sagt:

    Hallo Tobi,

    sorry für das Thomas. War gestern wohl doch zu spät ;-)

    Danke für deine schnelle Rückmeldung. Wäre super, wenn du auch an dem Thema dran bleibst.

    Darf ich dich noch was anderes fragen?
    1. Gibt es eine Möglichkeit die Backup Config vom CloudKey G2 zu übertragen, so dass ich nicht alle neuerstellen muss?
    2. Hast du Erfahrungen mit Entertain und der UDM-Pro?

    Gruß
    Stefan

  3. Stefan Bertram sagt:

    Hi Tobi,

    habe die UDM-Pro hier und echt entäuscht.
    Kann meine Config nicht umziehen, da FW 1.8.6 der UDM nur den Netzwerk Controller 6.0.43 hat. der CK2+ hat bereits 6.0.45 mit der FW 2.0.27.
    Ein Downgrade ist scheinbar auch nicht so einfach…

    Nicht mal der Support kann mir eine Lösung anbieten. Kann mir nicht mal sagen, wann ein neuer FW relase kommt… Glaube ich bleibe bei der alten FW und verzichte auf dem UDM.

    Ich danke dir Vielmals für deine Hilfe, die war echt Super!

  4. Johannes Sigel sagt:

    Funktioniert das ganze auch mit der “normalen” Dream-Machine?
    Und wie setzt man die NAT-Config wieder auf Default zurück?
    Danke!

    • Tobi sagt:

      Für die normale UDM sollte es bei der neuesten Firmware 1.8.6 genauso funktionieren.
      Default wird automatisch gesetzt, sobald etwas an den Firewallregeln geändert wird.

  5. Johannes sagt:

    Hey Tobi. Danke für den Beitrag, der mich erstmalig darauf gebracht hat, das SNAT auszuschalten. Sehr gut!

    Ich wollte es bei meiner vorhandenen USG so einrichten, aber die Chains der IPTABLES hießen anders. Nach etwas googlen bin ich dann auf das hier gestoßen, welche einfacher zu konfigurieren ist und sogar persistent bleibt, auch wenn man selbst später etwas an Firewallregeln ändert: https://www.matthewschacherbauer.com/wp/guides/ubiquiti-unifi-security-gateway-disable-nat/
    Von UniFi ist das mit der json Datei auch explizit erklärt: https://help.ui.com/hc/en-us/articles/215458888-UniFi-How-to-further-customize-USG-configuration-with-config-gateway-json

    Hat es einen Grund, dass du hier die komplexere Methode gewählt hast?

    Ciao
    Johannes

  6. rud sagt:

    Hallo Tobi

    “NAT auf den WAN-Ports der UDM-Pro deaktivieren”
    Klappt das auch mit einer UDM-Pro hinter meinem Sophos Router/FireWall? Ist vergleichbar mit einer “pfsense”( hatte ich früher ). Kenn mich nicht so aus, möchte aber irgendwann auf Unifi umstellen, da ich bereits Switch und APs im Netzwerk nutze.

    • Tobi sagt:

      Klar das ist unabhängig davon, welcher Router davor verwendet wird.
      Evtl. wäre es ja auch eine Möglichkeit die Sophos komplett zu entfernen und alles über die UDM-Pro laufen zu lassen?

  7. alfredo sagt:

    Hallo Tobi,
    danke für die Anleitung funtioniert ! ist aber so das einer Änderung und Neustart alles wieder auf default setzt, ich muss händisch wieder das cd /mnt/data/on_boot.d
    sh delete-nat.sh ausfühen ! ? was mache ich falsch ? danke!

  8. Andre sagt:

    hello Tobi & Alfredo,
    looks like this doesnt work anymore after the latest UDM pro firmware update

    • Tobi sagt:

      do you mean starting with firmware 1.9.0 or 1.9.3?

    • other_tobi sagt:

      Das kann ich leider bestätigen.
      Ich habe das Paket auch bereits runter geworfen und neu installiert.
      Das Paket udm-onboot erzielt im Moment tatsächlich keinen Effekt mehr.
      Es liegt nicht am NAT-Script an sich, sobald das ausgeführt wird ist die Regel weg und man geht auch ungenatted wieder raus.
      Leider greift das Boot-Script von boostchicken im Moment jedoch nicht mehr.
      In den “Issues” auf Github auch bereits erwähnt.

      Ein Lösung ist mir bislang leider auch noch unbekannt.

  9. Eddi sagt:

    Lese ich das richtig, dass das deaktivieren von NAT bei der UDM Pro nicht mehr funktioniert?

    Funktioniert es bei der UDM noch?
    Würde es demnächst deaktivieren wollen.!?

  10. other_tobi sagt:

    Ergänzung zu meinem Kommentar:

    Udm Boot Script mit Version 1.0.5 läuft dann wieder.
    Das Script crashed aber wegen dem nat Script und der Service hängt sich dann auf. Liegt also doch an dem Zusammenspiel dieses nat bash scripts und dem udm boot script, aber nicht (wie von mir anfangs angenommen) daran, dass das udm Boot script selbst nicht mehr läuft. Es crashed nur WEGEN dem nat Script.
    Das liegt daran, weil die NAT Regel zu früh versucht wird zu löschen, ich vermute sie existiert in der Sekunde noch nicht.

    Morgen baue ich mal einen Delay ein, dann sollte es wieder gehen.

    • other_tobi sagt:

      Hier die Lösung in meinem Falle.

      Das Script prüft zum Einen, ob es in den ersten 5 Minuten eines Neustartes ausgeführt wurde. Dann wartet es 10 Sekunden bis es die NAT-Regel löscht. Das funktioniert nun zuverlässig.
      Darüber hinaus schreibe ich alle Vorgänge in /var/log/messages, was man dann immer einfach über ‘grep NAT /var/log/messages’ nachvollziehen kann, ob alles funktioniert.

      Darüber hinaus hat mich eh schon immer genervt, dass nach einer Anpassung an der UDM die NAT-Regel wieder drin war und ich selbst daran denken musste. Das Script prüft nun jedes Mal auch ob ein Cron-Job für selbiges vorhanden ist und wenn nicht, dann erstellt es diesen.
      Alle 15 Minuten wird somit ressourcenschonend kurz gecheckt, ob die NAT-Regel wieder da ist. Wenn ja, dann nimmt er sie direkt wieder raus.

      Hier das Script, bei Datei-Namen drauf achten diese anzupassen:

      #!/bin/sh
      
      # Check if Script runs directly after boot. If so, wait for 10 seconds.
      uptimeMinutes=`uptime | awk '{print $3}'`
      if [ $uptimeMinutes -lt 5 ]
      	then
      		logger NAT-Script: Script zum 1. Mal nach Boot ausgefuehrt					# log entry to /var/log/messages
      		sleep 10
      	else
      		logger NAT-Script: Script gem. Cron-Job ausgefuehrt						# log entry to /var/log/messages
      fi
      
      
      
      # Check if NAT rule is there
      if iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK | grep MASQUERADE > /dev/null
      	then
      		xtables-multi iptables -t nat -D UBIOS_POSTROUTING_USER_HOOK 1					# delete NAT rule
      		if iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK | grep MASQUERADE > /dev/null			# successful delete?
      			then 
      				logger NAT-Script: NAT-Regel gefunden, Loeschen nicht erfolgreich \(Fehler!\)	# log entry to /var/log/messages
      			else		
      				logger NAT-Script: NAT-Regel gefunden und geloescht				# log entry to /var/log/messages
      		fi
      	else
      		logger NAT-Script: Keine NAT-Regel vorhanden							# log entry to /var/log/messages
      fi
      
      # Check if cron job exists
      if ls /etc/cron.d/delete-nat > /dev/null 2>&1
      	then 
      		logger NAT-Script: Cron-Job vorhanden								# log entry to /var/log/messages
      	else
      		echo "*/15 * * * * /mnt/data/on_boot.d/delete-nat.sh" > /etc/cron.d/delete-nat
      		logger NAT-Script: Cron-Job nicht vorhanden und erstellt					# log entry to /var/log/messages
      fi
    • Tobi sagt:

      Hi Tobi,
      danke für die tolle Arbeit. Habe den Code in deinem Kommentar für eine bessere Lesbarkeit hervorgehoben und werde meinen Artikel anpassen und auf deinen Code verlinken.
      Viele Grüße Tobi

    • other_tobi sagt:

      Hey Namensvetter!
      Ich danke dir für den Blog, hatte mir den Einstieg erleichtert und mir überhaupt erst ermöglicht ein wenig weiter daran zu schreiben. Deine Anleitung ist super strukturiert und hat mir wirklich sehr geholfen, da gibt man gerne etwas zurück!
      Viele Grüße Tobi

    • Tobi sagt:

      Danke nochmals für das Skript! Ich habe es ein wenig optimiert (Uptime auslesen sowie Erkennung und Löschung der NAT-Regeln verbessert) und direkt im Artikel eingebaut.

  11. Eddi sagt:

    Vielen Dank für die Änderung des Skripts.

    Ist der Skript für die UDM oder UDM Pro abgestimmt?

    Weil hier wird ja in dem Skript die NAT Regel von einem Port entfernt? :

    # Check if NAT rule is there
    if iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK | grep MASQUERADE > /dev/null
    then
    xtables-multi iptables -t nat -D UBIOS_POSTROUTING_USER_HOOK 1 # delete NAT rule
    if iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK | grep MASQUERADE > /dev/null # successful delete?

    Bei der UDM Pro müssen ja die Regeln beider Ports (eth8 & eth9) entfernt werden.

    Wäre cool wenn du mir den Skript gegebenenfalls auf die UDM anpassen könntest oder deine Gesamtanleitung oben. :)
    Bin da leider dann nicht so ganz tief im Skripting drin.

    Danke schonmal vorab.

    • other_tobi sagt:

      Hi Eddi,

      ja, stimmt. Gut erkannt, das ist nur für die normale UDM.

      Der Delete ‘xtables-multi iptables -t nat -D UBIOS_POSTROUTING_USER_HOOK 1’ entfernt einfach immer die Regel an erster Position. Die normale UDM hat nur ein Interface, deshalb reicht dieser Befehl.
      Wenn du dem noch einen weiteren Befehle ‘xtables-multi iptables -t nat -D UBIOS_POSTROUTING_USER_HOOK 2’ vorneran stellst, dann entfernt er bei der UDM Pro beide Einträge.
      Beachte die Reihenfolge, erst den 2. dann den 1.
      Denn wenn du den 1. zuerst löschst ist der ehemalige 2. der neue 1. Eintrag :P
      Was dazu führt, dass mein Script bei der 2. Ausführung auch bei der Pro die 2. Regel raushauen würde, weil er immernoch einen Eintrag erkennt und den dann entfernt. Ist aber natürlich unschöner – müsste aber zufällig klappen.

  12. Eddi sagt:

    Hallo Tobi,

    vielen Dank…damit hast du mir schon weitergeholfen. :)

    Oben bei deinem Komentar von gestern hast du noch erwähnt, dass die Dateinamen ersetzt werden müssen beim neuen Script. Ich habe jedoch keine stelle im Quellcode gefunden wo man einen Dateinamen angleichen muss? Kannst du mir dabei noch weiterhelfen?

    Und kann man das NAT dauerhaft wieder aktivieren wenn es mal deaktiviert war? Wenn ja wie?
    Frage nur so viel weil ich demnächst das NAT bei meiner UDM deaktivieren werde/muss.
    Will dass der Script ordentlich durchläuft. :)

    • other_tobi sagt:

      Kein Problem, Eddi.
      Schau mal in die dritt-letzte Zeile. Dort wo der cronjob angelegt wird, wenn er nicht vorhanden ist.
      Das gesamte Script heißt bei mir delete-nat.sh
      Darauf beruft sich dieser cronjob eben genau, um dieses Script dann auch auszuführen. Benenne in Script also auch einfach delete-nat.sh oder bedenke es dort anzupassen.

      Zu deinem bedenken bezüglich rollback, dass das nat wieder ginge, diese sind unbegründet. Du kämpft eigentlich non-stop dagegen an, ddass die udm die Regel nicht wieder rein nimmt. Das macht sie nämlich bei jedem Neustart und jeder Änderung am Regelwerk oder dergleichen direkt im Betrieb wieder. (deshalb der cronjob, der alle 15min prüft, ob nat weiterhin deaktiviert ist)
      In dem Moment wo du das Script deaktivierst ist spätestens nach einem Neustart alles wieder beim alten!

  13. HillsboroRed sagt:

    Thank you very much Tobi and Tobi!

    I am using a UDM Pro behind a Peplink Balance 20X. I expanded the script to deactivate NAT on both WAN ports, but then devices reaching out to the Internet were not working for me. For me, the solution ended up being configuration in the UDM Pro.

    Settings > Services > DHCP > DHCP Relay
    and then add the IP address of the Peplink as a DHCP server.

    • HillsboroRed sagt:

      NOPE! My fault. The change above seems to do nothing useful except re-enable the NAT until the next time the script runs. Once the script runs, the UDM Pro can reach the Internet, but devices connected to the UDM Pro cannot. There is some kind of additional routing issue, perhaps something that I have introduced.

  14. Rainer sagt:

    Hallo Tobi,
    ich versuche Deine tolle Anleitung zur Umgehung des doppelten NAT umzusetzen und eigentlich klappt auch alles soweit, bis auf die statische Route in der FB. Meine UDM-Pro hat auf WAN 1 eine IP (78.94.248.xxx), welche vom Provider Vodafone vorgegeben wurde und die kann ich als Gateway nicht eintragen.
    Was läuft hier falsch?

    • Tobi sagt:

      Moment, da muss ich genauer nachfragen. In meinem Artikel ist es ja so, dass das NAT an der FRITZ!Box weiter zum Einsatz kommt und an der UDM-Pro deaktiviert wird. In diesem Fall müsstest du auf der UDM-Pro eine RFC 1918 Adresse haben.

      Oder hast du evtl. eine FRITZ!Box 6591 von Vodafone mit einem externen /30 Subnetz?

    • Marcus sagt:

      Er hat eine öffentliche IP, daher läuft die Fritzbox im Bridge Mode (Buissenes Tarif) und die UDM Pro bekommt diese.
      Damit wird das NAT der Fritzbox umgangen und er hat kein doppeltes NAT.
      Jetzt noch in der UDM das NAT deaktiviert und nix geht mehr.

    • Tobi sagt:

      Irgendwie bin ich verwirrt. Wenn du an der UDM-Pro eine öffentliche IP vom Provider hast, dann hast du doch sowieso kein doppeltes NAT!? Warum möchtest du es dann deaktivieren?
      Bzw. generell gefragt, was möchtest du erreichen?

    • Rainer sagt:

      Hallo Tobi und Marcus,
      lieben Dank für Eure schnelle Rückmeldung, welche ich leider nicht gleich mitbekommen habe.
      Ja, ich habe von (mittlerweile) Vodafone den 1000er Business Anschluß, für welchen lt. Internet und lt. Vodafone kein Bridge Modus geht. Deshalb habe ich die Box auf Port 2 in den Exposed Host geschaltet und lt. Vodafone die zwei IP-Adressen hinterlegt, einmal in der Fritz und einmal in der UDM.
      Zuerst war mein Zugang grützelangsam, hat sich aber nach einem Tag und Neustart der UDM gefangen. Nun habe ich Ping von 12-18 und bis zu 930 Mbits Down.
      Wie Marcus schon sagt, ging nach der Abschaltung des NAT in der UDM nix mehr. Ist das dann sicher, dass meine Fritz kein NAT hat oder wie kann ich das prüfen?

    • Tobi sagt:

      Danke für die weiteren Infos. Ja in diesem speziellen Fall sollte das NAT an der FRITZ!Box deaktiviert sein. Bei anderen Providern oder FRITZ!Boxen ohne angepasste Software kommt bei Verwendung der “Exposed-Host”-Funktion weiterhin double NAT zum Einsatz.
      Verifizieren kannst du das ganz einfach, indem du mit einem Gerät, welches hinter der UDM-Pro hängt, die Webseite https://www.whatismyip.com besuchst. Wird dort die gleiche IP angezeigt, welche in der UDM-Pro konfiguriert wurde, dann passt es. Andernfalls taucht dort die IP der FRITZ!Box auf. Alternativ kannst du auch einen Paketmitschnitt auf der UDM-Pro machen, was aber ein wenig Erfahrung erfordert.

      Die statische Route aus meinem Artikel brauchst du in deinem Fall dann auch nicht. Aus dem lokalen Netz der FRITZ!Box lässt sich nicht direkt auf das lokale Netz der UDM-Pro zugreifen. Umgekehrt funktioniert es auch nicht.

    • Rainer sagt:

      Hallo Tobi, nochmals danke für Deine schnelle und ausführliche Antwort.
      Ja, ich bekomme die UDM-Pro IP-Adresse, das ist mir selbst noch nicht aufgefallen.
      Darf ich Dich noch Fragen: Wie komme ich aus dem internen Netz auf die Fritzbox?
      Ich las diese bisher über meine Smarthome-Steuerung aus und kann das aktuell nicht mehr. Kann ich das über die WAN-Verbindung routen oder benötige ich einen zweiten Zugang zur FB (norm.Switchport zu FB Port, z.B. 3)?

    • Tobi sagt:

      Du könntest entweder direkt via Internet auf die FRITZ!Box zugreifen (das Benötigte muss dann natürlich via Portforwarding freigegeben werden) oder besser, du stellst eine zweite Verbindung zwischen FRITZ!Box und UDM-Pro her. Hier kannst du wie beschreiben z.B. Port 3 nutzen. Dieser Link sollte dir bei der Konfiguration helfen: https://avm.de/service/wissensdatenbank/dok/FRITZ-Box-7590/581_Statische-IP-Route-in-FRITZ-Box-einrichten/

  15. Toni sagt:

    Moin,

    danke für dein TUT, sehr verständlich aber ich habe da noch eine Frage.

    Meine Konfig: ISP->FB7590->UDM-Pro->Cam

    Ich habe bis jetz keine spürbaren Probleme trotz des aktiven NAT’s.
    Mich macht es jedoch kirre nicht auf meine CAMs Zugriff zu haben in dem UI-Netzwerk per FB-VPN.
    Wenn ich das richtig verstehe benötige ich eigentlich nur den letzten “Optional: Firewall-Regel in der UDM-PRO” Punkt um über einen VPN-Zugang (FB-Benutzer) der FB und der WAN-Eingehend Regel in der UDM-Pro mit der Zulassung dessen IP, Zugriff zu bekommen?

    Grüße

    • Toni sagt:

      Moin,

      das funktioniert leider nicht, komme nicht einmal auf die UDM-P trotz der sichtbaren Adresse dessen auf der FB7590.

      Mal zur Konfig:
      FB-Netz: 192.168.188.0/24
      VPN in FB Netz: 192.168.188.201/24
      UDM-P (WAN1-Port) in FB Netz: 192.168.188.35/24 an Port 5 (WAN als LAN5 eingestellt)

      UDM-P-Netz: 192.168.1.0/24
      UDM-P: 192.168.1.1/24
      CAM: 192.168.1.116/24

      Regel in UDM-P:
      WAN-Eingehend
      -Aktionen akzeptieren
      -Protokolle alle
      -Quelle VPN-IP 192.168.188.201
      -Ziel Netzwerk Lan (192.168.1.0/24) Typ IPv4 Subnetz

      Habe ich etwas übersehen oder vergessen oder denke ich falsch?

      Grüße

    • Tobi sagt:

      Die statische Route in der FRITZ!Box wird natürlich auch benötigt. Hast du diese eingerichtet?

    • Toni sagt:

      Ich habe es mal mit einer reinen Portweiterleitung probiert, dies funktioniert ohne NAT abschalten wunderbar.
      Nachdem ich die Portweiterleitungen wieder gelöscht habe und die statische Route in der FB eingetragen sowie die WAN-Eingehend Regel angelegt habe, komme ich auch ohne Probleme auf meine Geräte hinter der UDM.
      Danke für den Hinweis.

      Noch zu bewältigen wäre der Zugiff auf die UDM-Pro selbst.
      Weder über die FB-IP noch über die eigene UDM-Pro-IP, ist diese zu erreichen.
      Muss man dazu noch etwas Einstellen/Freischalten?

    • other_tobi sagt:

      Hey Toni,

      eine ursprüngliche Frage die mir gleich in den Sinn kam war, weshalb du deine VPN-Verbindung zur Fritzbox und nicht zur UDM terminieren lässt.
      Dein letztes beschriebenes Problem hier könnte eventuell auch daran liegen. Wenn du die VPN-Verbindung weiterhin zur Fritzbox selbst aufbauen möchtest, so muss dir klar sein, dass auch das Netz der Fritzbox aus Sicht der UDM im WAN liegt – also alle eingehenden Firewallregeln aus dem aus Sicht der UDM bösen Internet kommen. Auch wenn du dich schon auf der Fritzbox befindest, denn du hast nun mit der VPN Verbindung eine IP aus dem Fritzbox-Netz (da du diese dorthin, anstatt zur UDM aufbaust wie ich das verstanden habe).

      Lange Rede kurzer Sinn:
      Meine Empfehlung wäre die VPN-Verbindung direkt zur UDM aufzubauen, dann bist du wirklich IN deinem Netz.
      Oder du checkst mal die Firewall-Regeln auf der UDM. Du müsstest die von dir gewollte Verbindung mit Quelle “Fritzbox-VPN-Netz” eingehend in das UDM WAN Interface erlauben.
      -> So habe ich dein Problem und deinen Aufbau jedenfalls verstanden :)

    • other_tobi sagt:

      Nachtrag:

      Uuups… jetzt habe ich erst deinen Post davor gesehen – du hast das ja bereits alles berücksichtigt :-)
      Meine Frage bzgl VPN, warum dieser zur Fritzbox und nicht zur UDM terminiert, bliebe allerdings.

      Wenn ich deinen Post so auswerte, könnte der Zugriff auf die UDM deshalb nicht funktionieren, weil sie vermutlich mit ihrer WAN-IP (192.168.188.35/24) angesprochen wird, wenn es um keinen Transit-Verkehr geht, sondern du direkt auf diese möchtest.
      In deinem Post gilt deine Regel eingehend allerdings immer nur wenn man auf das UDM LAN zugreift (192.168.1.0/24).

  16. Stefan sagt:

    Hallo Zusammen,

    ich habe mir das neue Script angesehen und für die UDM-Pro angepasst. An sich funktioniert alles, nur löscht der die einzelenen Subnetze/ VLAns auch nur einzeln raus. D.h. das Script muss 11 Mal laufen, bis alle Source NAT Einträge entfernt sind.
    Hat jemand eine DIee, wie ich das noch weiter anpassen kann?

    Muss aber auch dazu sagen, dass ich jetzt das Script deaktiviert habe, da es Probleme machte mit der Bandbreite. Soblad das Script einlal lief und dabei ist es egal, ob noch SNAT Einträge vorhanden sind oder nicht, lag der Speed Test bei nur 20 bis 30 Mbit anstatt die Vollen 220Mbit.
    Verstehen tu ich das nicht aber es ist irgend ein Zusammenhang.

  17. Stefan Bertram sagt:

    NACHTRAG:
    Wegen der “Exposed Host” Funktion hatte ich bei AVM Nachgefragt, die sagen, das Doppelte NAT wäre dann inaktiv für diesen Port.

    • Stefan Bertram sagt:

      Hallo Tobi,

      die 11 Einträge sind für das Interface 8.
      Pro Ausführung des Scripts wurde bei mir immer noch ein VLAN entfernt, anstatt alle 11 VLANs für SNAT zu entfernen.
      In einem Ubiquiti Forum habe ich gestern gelesen, man könnte mit dem Parameter -F arbeiten anstatt mit -D, dann wären alle auf einem entfernt aber ich hatte gestern ehrlich geasagt keine Lust mehr das zu testen.

      Gruß
      Stefan

    • Tobi sagt:

      Nein das stimmt nicht. Ein Exposed Host ist einfach nur eine Portfreigabe für alle Ports, mehr nicht. D.h. alles wird via NAT an eine lokale IP weitergeleitet.

      Doppeltes NAT wäre nur im Bridge Modus inaktiv, bei dem das WAN direkt an einem Port durchgeleitet wird. Dies bietet AVM aber schon sehr lange nicht mehr offiziell an. Lediglich bei den FRITZ!Boxen mit Vodafone-Firmware wird das noch angeboten, siehe die Kommentare von Rainer.

    • Stefan Bertram sagt:

      Kann dir nur sagen, was der AVM Support zu mir gesagt hat.

      ich nutze die Funktion auch nicht.

    • other_tobi sagt:

      Ich stimme Tobi ebenfalls zu und widerspreche dem AVM Support hier. Da hat der Mitarbeiter Quatsch erzählt. Sieht man auch im Traffic-Mitschnitt.

      Exposed-Host ist einfach eine durchgängige Freigabe aller Ports für dieses Gerät.
      Würde hier plötzlich kein NAT mehr erfolgen, so könnten Verbindungen von dem Gerät ja gar nicht mehr ohne weiteren Konfigurationsaufwand ins WAN betrieben werden.

  18. Matthias sagt:

    Hallo Tobi,

    guter Blog- Artikel. Danke !
    Habe es so bei meiner UDM-Pro implementiert und funktioniert fast perfect.
    Alle 15 Minuten wenn der Cron Job laeuft habe ich Probleme mit ‘Teams’ Konferenzen.
    Teams meetings werden unterbrochen und muessen sich neu verbinden… und dass 4 mal in der Stunde ;)
    Lasse den Cron job jetzt einmal am Tag mitten in der Nacht laufen.

    Cheers,

    • Tobi sagt:

      Hmm das ist seltsam. Wenn die Regeln einmal entfernt wurden, macht das Skript eigentlich nichts mehr. Bei mir gibts keine Probleme.

    • Matthias sagt:

      Hallo Tobi,

      an dem Tag hatter der VPN ‘dial in’ Router bei mir in der Firma Probleme.
      Kann also daran liegen.
      Habe nun das scrip neu installiert und auch etwas angepasst.
      Wenn ich es jetzt in der Shell ausfuehre bekomme ich folgende Fehlermeldung:
      —–
      # sh delete-nat.sh
      sh: 21:22,: bad number
      #
      —–

      Laut Log funktioniert alles eigentlich… siehe weiter unten.

      Hier mein Script mit einer hinzugefuegten Zeile um beide NAT Eintraege zu entfernen:

      #!/bin/sh

      # Check if Script runs directly after boot. If so, wait for 10 seconds.
      uptimeMinutes=`uptime | awk ‘{print $3}’`
      if [ $uptimeMinutes -lt 5 ]
      then
      logger NAT-Script: Script zum 1. Mal nach Boot ausgefuehrt # log entry to /var/log/messages
      sleep 10
      else
      logger NAT-Script: Script gem. Cron-Job ausgefuehrt # log entry to /var/log/messages
      fi

      # Check if NAT rule is there
      if iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK | grep MASQUERADE > /dev/null
      then
      xtables-multi iptables -t nat -D UBIOS_POSTROUTING_USER_HOOK 2 # delete second NAT rule for UDM Pro
      xtables-multi iptables -t nat -D UBIOS_POSTROUTING_USER_HOOK 1 # delete first NAT rule
      if iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK | grep MASQUERADE > /dev/null # successful delete?
      then
      logger NAT-Script: NAT-Regel gefunden, Loeschen nicht erfolgreich \(Fehler!\) # log entry to /var/log/messages
      else
      logger NAT-Script: NAT-Regel gefunden und geloescht # log entry to /var/log/messages
      fi
      else
      logger NAT-Script: Keine NAT-Regel vorhanden # log entry to /var/log/messages
      fi

      # Check if cron job exists
      if ls /etc/cron.d/delete-nat > /dev/null 2>&1
      then
      logger NAT-Script: Cron-Job vorhanden # log entry to /var/log/messages
      else
      echo “*/15 * * * * /mnt/data/on_boot.d/delete-nat.sh” > /etc/cron.d/delete-nat
      logger NAT-Script: Cron-Job nicht vorhanden und erstellt # log entry to /var/log/messages
      fi

      Log Eintraege:
      # grep NAT /var/log/messages
      Jul 11 01:39:12 MSP-HQ user.notice root: NAT-Script: Script gem. Cron-Job ausgefuehrt
      Jul 11 01:39:12 MSP-HQ user.notice root: NAT-Script: NAT-Regel gefunden und geloescht
      Jul 11 01:39:12 MSP-HQ user.notice root: NAT-Script: Cron-Job nicht vorhanden und erstellt
      Jul 11 01:40:36 MSP-HQ user.notice root: NAT-Script: Script gem. Cron-Job ausgefuehrt
      Jul 11 01:40:36 MSP-HQ user.notice root: NAT-Script: Keine NAT-Regel vorhanden
      Jul 11 01:40:36 MSP-HQ user.notice root: NAT-Script: Cron-Job vorhanden
      Jul 11 01:54:57 MSP-HQ user.notice root: NAT-Script: Script gem. Cron-Job ausgefuehrt
      Jul 11 01:54:57 MSP-HQ user.notice root: NAT-Script: NAT-Regel gefunden und geloescht
      Jul 11 01:54:57 MSP-HQ user.notice root: NAT-Script: Cron-Job vorhanden
      #

    • Tobi sagt:

      Nimm das Skript oben aus meinem Artikel. Habe es auch entsprechend angepasst und die Abfragelogik optimiert. Im unoptimierten Fall würden auch von Hand hinzugefügte NAT-Regel gelöscht werden.

  19. Markus sagt:

    Hallo,
    vielen Dank für die Beschreibung und das aktualisierte Script für die UDM Firmware ab 1.9.3.
    Ich habe dazu eine Frage: Als Laie habe ich nicht verstanden, wo ich das Script aus Tobis Kommentar einbinden soll? Erstelle ich dazu einfach ein neues Script im Ordner /mnt/data/on_boot.d über die Kommandozeile, genau so wie man es für das delete-nat.sh gemacht hat?

    Vielen Dank :)

    • Tobi sagt:

      Hallo Markus, ich habe den Artikel mit einem leicht angepasstem Skript ergänzt. Sollte jetzt klar sein, wie du vorgehen musst. Falls nicht, einfach nochmal fragen.

    • Markus sagt:

      Vielen Dank, Tobi! Damit ist es nun auch für mich klar.

      Ich habe noch eine weiterführende Frage: Ich habe eine Nextcloud auf einer FreeNAS Box installiert, mit einem Reverse Proxy. Nun muss ich für den Zugang darauf Ports freigeben. Bevor ich meine UDM Pro hatte, habe ich das direkt in der FritzBox gemacht und alles lief ohne Probleme.

      Nun steckt ja die UDM Pro mit drin und wenn ich das NAT darin deaktiviere, übernimmt ja die FritzBox dies allein. Nun kann ich aber in der FritzBox nicht mehr die Ports für die IP meines Reverse Proxy anlegen, da die IP Range ja die der UDM Pro ist und nicht die der FritzBox – FB akzeptiert diese IPs logischerweise nicht.

      Jetzt frage ich mich, ob ich für meinen Case nicht eher das NAT in der UDM Pro belassen muss, um dort die Ports weiterzuleiten, und NAT in der Fritz Box deaktivieren muss? Ich finde dazu bei meiner FB allerdings keine Möglichkeit (7581). Einen “Bridge” Mode gibt es hier scheinbar gar nicht. Weißt du zufällig irgendwas darüber?

    • Tobi sagt:

      Du bist auf dem richtigen Weg. Du musst die Portfreigabe nach wie vor an der FRITZ!Box machen. Allerdings nicht mit der IP des Reverse Proxys, sondern mit der WAN-IP der Firewall, also der IP aus dem FRITZ!Box-Netz.
      Darüber hinaus benötigst du eine weitere Portweiterleitung auf der UDM-PRO und ebenso eine passende Firewall-Regel unter der Kategorie “WAN eingehend”.

    • other_tobi sagt:

      @Markus – hier ein Beispiel wie von Tobi schon erläutert:

      WAN-IP deiner Fritbox: 66.66.66.66
      Transportnetz zw. Fritzbox & UDM: 10.10.10.0/30
      WAN-IP deiner UDM: 10.10.10.1
      Reverseproxy IP: 10.10.50.50/24
      Angebotener Dienst am RevProxy auf bspw. TCP Port: 444

      Rufst du nun den Dienst auf 66.66.66.66:444 auf um dorthin zu gelangen müsste eine Portweiterleitung auf der Fritzbox für Port 444 zur 10.10.10.1 eingerichtet werden.
      Auf der UDM brauchst du die eingehende Firewall-Regel die das zunächst einmal zulässt. Außerdem brauchst du dann dort die Weiterleitung von TCP Port 444 auf 10.10.50.50.

      So sollte es klappen.

      Tobi hatte es ja schon genau so erläutert, wollte es nur mit einem Beispiel etwas greifbar für dich machen.

    • Markus sagt:

      Erst einmal vielen Dank an Tobi & Tobi für die Erklärung. Mit dem Beispiel bekomme ich es bestimmt hin, versuche mich gleich mal dran!

      Nun habe ich allerdings doch noch ein Problem beim Einfügen des Scripts. Sorry, ich stelle mich wahrscheinlich total blöd an; aber nach dem “touch /mnt/data/on_boot.d/delete-nat.sh” Befehl, copy & paste ich einfach den kompletten Script-Block in die Kommandozeile? Oder muss ich das Zeile für Zeile machen? Wenn ich es komplett einfüge, werden scheinbar irgendwelche Befehle dort erkannt und mir werden Listenweise Befehle ausgegeben …

      Danach ist es auch so, dass das Script nicht zu funktionieren scheint, denn wenn ich testweise eine Port-Weiterleitung anlege sind die NAT-Einträge sofort wieder da.

      Danke nochmal für eure Hilfe.

    • other_tobi sagt:

      Der touch erstellt dir nur eine leere Datei.

      Gehe danach mit
      nano /mnt/data/on_boot.d/delete-nat.sh
      in die Datei. Du öffnest sozusagen den Befehlszeilen Editor “nano” auf diese Datei hin.
      Dort fügst du dann den Inhalt (also die ganzen Skript-Zeilen) ein.
      Das dann speichern und einfach nochmal mit dem gleichen Befehl im Nachgang reingucken, ob auch alles drin ist.

      Sobald du das Skript ausführbar gemacht hast (einfach Tobis Anleitung weiter folgen), kannst du testen ob es funktioniert, in dem du dir vorher mal die Nat-Regeln anzeigen lässt (dort sollte die Regel dann ja noch vorhanden sein) und dann das Skript mal händisch ausführst (einfach ‘/mnt/data/on_boot.d/delete-nat.sh’ eingeben und ENTER) und dann schaust ob zum einen Fehlermeldungen kommen und zum Anderen, ob die NAT-Regel auch nun weg ist.
      Wie weiter oben beschrieben kannst du auch über ‘grep NAT /var/log/messages’ die Logs checken, da das Skript recht gesprächig in die Logs schreibt.

    • Markus sagt:

      Ah! Vielen Dank. nano kenne ich, aber ich habe immer eine “command not found” bekommen … habe jetzt verstanden, dass ich nano erstmal installieren muss:

      # unifi-os shell
      # apt update
      # apt install nano

      um dann (nach wie vor im shell) nano auf der Datei ausführen zu können. Was gelernt!

    • Markus sagt:

      Mhmpf, jetzt komme ich trotzdem nicht weiter; ich kann nano jetzt zwar im shell ausführen, darüber komme ich aber nicht in das /mnt/data/on_boot.d Verzeichnet. Und in root kann ich nano nicht ausführen. Mhm!

    • other_tobi sagt:

      Du bist in der falschen Umgebung :-)
      Nicht zuvor unifi-os shell eingeben.

      Verbinde dich per SSH und dann bist du bereits richtig.
      Dann mache ein ‘cd /mnt/data/on_boot.d/’. Wenn das klappt, bist du schonmal im richtigen Verzeichnis.
      Dort mal ein kurzes ‘ls -l’ machen, dann siehst du, ob dein Script schon da ist.
      Wenn du darüber lokalisiert hast, dass du in der richtigen Umgebung bist, dann kannst du nochmal loslegen!

    • Markus sagt:

      Aber ich kann nano nur im Shell installieren, wenn ich es auf root ebene ausführe passiert folgenddes:

      # cd /mnt/data/on_boot.d/
      # ls -l
      total 0
      -rw-r–r– 1 root root 0 Jul 7 11:06 delete-nat.sh
      # nano delete-nat.sh
      -sh: nano: not found

      nano ist dort also gar nicht verfügbar, das heißt ich komme nicht in die Datei …

    • other_tobi sagt:

      Oh, das hatte ich nicht auf dem Schirm! Dann nutze ‘vi’, das ist ein anderer Editor. Habe gerade nachgesehen, der ist vorhanden.
      Bevor du in den Unweiten der Steuerung dieses Editors verloren gehst google kurz wie du dort eine Eingabe machst und speicherst und wieder rauskommst aus dem Editor – der ist für Nicht-Unixler etwas ungewohnt.

    • Markus sagt:

      VI habe ich grad versucht, damit komme ich rein, habe jetzt alles eingefügt und gespeichert. Ich kann das Script jetzt auch ausführen und die NAT-Regeln werden gelöscht. Sobald ich eine Port-Weiterleitung testweise einrichte, sind sie aber nach wie vor sofort wieder da :( In die Logs wird auch nichts geschrieben …

  20. Markus sagt:

    Ok, es scheint nun doch zu funktionieren, ich habe den Punkt überlesen, dass das Script ja “nur” alle 15 Minuten ausgeführt wird und nicht instantan. Dementsprechend ist das NAT nach einer Änderung natürlich noch eine Weile drin. Vielen Dank euch!
    Jetzt mache ich mich mal an das Forwarding zu meinem Reverse Proxy … :D

    • Markus sagt:

      So, nun noch einmal zum Reverse-Proxy Thema.

      Ich habe nun in der FritzBox eine Port-Freigabe eingerichtet für die IP, die die UDM-Pro von der FritzBox erhalten hat (als Beispiel: 192.168.178.01) auf Port 443.

      In der UDM Pro habe ich nun eine Port Weiterleitung von 443 auf die IP des Reverse Proxy angelegt (bspws. 10.0.0.99). Von “überall” ist korrekt, oder muss ich das auf die IP der FritzBox (also dann 192.168.178.1) beschränken?

      Jedenfalls wird mir der Port nun auch als offen angezeigt, wie ich über ein Online-Tool überprüft habe. Soweit so gut.

      Nun scheitere ich bei der Firewall-Regel. Was genau muss ich da erlauben? Tobi, du hast ja geschrieben:

      “Rufst du nun den Dienst auf 66.66.66.66:444 auf um dorthin zu gelangen müsste eine Portweiterleitung auf der Fritzbox für Port 444 zur 10.10.10.1 eingerichtet werden.
      Auf der UDM brauchst du die eingehende Firewall-Regel die das zunächst einmal zulässt”

      Ich verstehe nicht ganz, was ich hier nun in der Regel bei Source und Destination eintragen muss.

    • Tobi sagt:

      Nein du müsst “überall” aktiv lassen, denn die UDM-PRO sieht die externe IP-Adresse des Geräts, welches zugreifen möchte. Außer du hättest eine feste externe IP bzw. IP-Range die du freigeben möchtest. Für Smartphones etc. trifft das aber nicht zu und du musst “überall” aktiv lassen.

      Bei der Firewall-Regel habe ich gerade gesehen, dass durch das Port-Forwarding automatisch eine entsprechende Firewall-Regel erstellt wird. Hier musst du also gar nichts mehr von Hand hinzufügen.

    • Markus sagt:

      Juhu! Jetzt klappt alles. Vielen vielen Dank für eure Geduld und die Hilfe!

  21. Wolfgang sagt:

    Hallo Tobi,

    zunächst großes Lob für Deine Mühe und Deine Hilfsbereitschaft, das ist nicht immer selbstverständlich.
    Ich konnte Deine Anleitung umsetzen, vieles klappt auch schon richtig gut. Jedoch: ich hatte an der FritzBox die 4 DVB-C Tuner genutzt, um diese über TV-Headend anzusprechen. Nun ist ja nach dem Unstellung dir Fritte in einem anderen Netz (bei mir 192.168.178.1) und mein TV Headend auf meinem Synology NAS unter 192.168.17.6. Gibt es überhaupt eine Möglichkeit, die Fritzbox Tuner noch zu nutzen?

    Danke und Gruß
    Wolfgang

    • Tobi sagt:

      Hallo Wolfgang,
      danke für Dein Lob :)
      Wenn du alles nach Anleitung eingerichtet hast, müsstest du von deinem NAS mit 192.168.17.6 ohne Probleme auf die FRITZ!Box zugreifen können.

  22. Stefan Meder sagt:

    Hallo Tobi,

    ich lese gerade mit begeisterung deinen Blog. Hast du dich eigentlich schon mal mit UDM und Magenta TV von der Telekom beschäftigt?

    Viele Grüße und schönes Wochenende
    Stefan

  23. Ingo sagt:

    Hi!
    Erstmal großes Lob an Tobi und alle anderen Mitwirkenden!

    Ich benötige die NAT Deaktivierung nur temporär, bis meine neue Leitung gelegt wurde.

    Wie kann das Ganze wieder in den Werkszustand zurück gesetzt werden?
    Ich meine, das dass der komplett Originalzustand der Software wiederhergestellt ist.

    Viele Grüße
    Ingo

  24. Ingo sagt:

    Hi, ich schon wieder :)

    Bei mir hat sich nun folgendes Problem ergeben:

    Ich habe vor der UDM Pro aktuell (noch) einen Telekom Speedport Hybrid Router (DSL+LTE Tunnel).
    Sobald ich das NAT deaktiviere, komme ich aus dem internen Netz der UMD Pro nicht mehr ins Internet.

    Das Problem ist, dass ich in dem Telekom Speedport Hybrid Router keine Route zum internen Netz der UDM Pro eintragen kann. Es gibt keine Eingabemöglichkeit im Webinterface für Routen. Hat scheinbar etwas mit dem Bonding für den DSL/LTE-Tunnel zu tun.

    Hat jemand eine Idee, wie man das Ganze dennoch zum Laufen bringen kann?

    Aktuelle Konfiguration:

    Telekom Speedport Hybrid Router
    WAN: DSL/LTE Tunnel
    Intern: 192.168.2.1

    UDM Pro
    WAN: 192.168.2.2
    Intern: 192.168.100.0/24 (div. Clients und APs)

    Viele Grüße
    Ingo

    • Tobi sagt:

      Hallo Ingo,
      hier wäre eine mögliche Lösung mit einem weiteren Router: https://telekomhilft.telekom.de/t5/Telefonie-Internet/Statische-Route-mit-im-Speedport-Hybrid-einrichten-Neuauflage/m-p/2888545/highlight/true#M850007
      Ist aber für eine temporäre Lösung vermutlich zu aufwendig.

      Wenn es aber sowieso nur eine temporäre Lösung sein muss, würde ich die Clients direkt an den Speedport hängen bzw. die Verbindung vom Speedport zur UDM-PRO vom WAN- auf einen LAN-Port umstecken.

      Viele Grüße
      Tobias

    • Ingo sagt:

      Hi Tobi!

      Danke für die schnelle Antwort.
      Den Artikel von Telekom hilft hatte ich auch gesehen.
      Finde ich aber auch etwas aufwendig und bin mir auch nicht zu 100% sicher, ob das dann funktioniert. Wenn es die Zeit zu lässt, versuche ich das vielleicht doch mal.

      Aktuell habe ich es wie du vorgeschlagen hast, den Speedport auf einen LAN-Port gesteckt und dann Gateway und Nameserver auf den Speedport umgebogen. Dadurch sind aber leider die ganzen schönen Funktionen der UDM Pro ausgehebelt und die UDM Pro fungiert eigentlich nur noch als WLAN-Controller.

      Viele Grüße
      Ingo

  25. Udo sagt:

    Hi Tobi,

    wollte eben mit Deiner Anleitung Nat auf meiner UDM-Pro deaktivieren. Leider bekomme ich einen Fehler “Could not resolve host: udm-boot.boostchicken.dev” und ich kann das boot script gar nicht installieren.

    Hab mir erlaubt das zu ersetzen:

    wget https://github.com/boostchicken/udm-utilities/releases/download/1.0.5-fix/udm-boot_1.0.5_all.deb
    dpkg -i udm-boot_1.0.5_all.deb
    exit

    Jetzt hat es funktioniert…

    Gruß
    Udo

  26. Dominik sagt:

    Hallo Tobi,

    ist das noch aktuell? wenn ich schritt für schritt durchgehe, ist das NAT zwar kurz mal aus, jedoch bald wieder an. Oder ist es inzwischen nicht mehr möglich?

    • Tobi sagt:

      Ja ist es noch. Bei jeder manuellen Änderung der Firewallregeln ist das NAT wieder aktiv. Es wird aber dann automatisch wieder deaktiviert, sofern der Cron-Job sauber läuft.

  27. Dominik sagt:

    Ok, dann muss ich nochmals prüfen. Besten Dank.
    Eine andere Frage hätte ich noch.
    Ich habe die udm pro hinter einer FRITZ!Box hängen. Auf der FRITZ!Box auch eine statische Route angelegt.
    Jedoch komme ich aus dem Netz der FRITZ!Box auf kein Gerät im Netz der udm(Ping)
    Was könnte hier noch fehlen ?

  28. Timm sagt:

    Hi! Wenn du in dem Script die Zeile zum Anlegen des Cron-Jobs noch durch
    echo “*/15 * * * * “$(readlink -f $0) > /etc/cron.d/delete-nat
    ersetzt, funktioniert es auch noch automatisch, wenn man das script umbenennt (bei mir z.B. 30-delete-nat.sh)

  29. Bud Spencer sagt:

    @Tobi, danke für deine Anleitung und das Wissen das du teilst, hat mir sehr geholfen.

    Grüße
    Bud Spencer

  30. Bud Spencer sagt:

    Funktioniert das script mit UniFi OS UDM 1.10.4.3702

    Wenn ich mit der Anleitung fertig und und einen Test mache:

    Steht immer noch:
    # xtables-multi iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK -v –line-number
    Chain UBIOS_POSTROUTING_USER_HOOK (1 references)
    num pkts bytes target prot opt in out source destination
    1 76616 8296K MASQUERADE all — any eth4 anywhere anywhere /* 00000001095216660481 */

    • Bud Spencer sagt:

      Fehler gefunden, für die UDM (nicht Pro) müssen die Interfaces im script angepasst werden.

      Statt eth8 / eth9 , wird eth4 genutzt.

  31. lacky sagt:

    hallo!
    ..kann die Fritz Box dann hinter die UDM-Pro ins Netz zugreifen?
    zb. für das Live Bild auf den DECT Telefonen?

    • other_tobi sagt:

      Ja, das geht. Für dein Szenario sogar ohne weitere Konfiguration, da du die DECT-Telefone nicht über IP ansprichst und damit gar kein Weg über die UDM führt, sondern direkt vom Phone zur Fritzbox bzw. zurück.
      Für alles Weitere musst du nur in der UDM Regeln zur Erlaubnis anlegen und abgeht’s. Wobei du berücksichtigen solltest, dass du dann dein Netz nach außenhin öffnest und das so restriktiv wie möglich halten. Im besten Falle wird von Innen auf die Fritzbox zugegriffen, dann ist der Rückweg sowieso durch die Stateful Inspection immer kurzzeitig offen – sprich, dafür musst du gar nichts tun.

  32. Michael Weichert sagt:

    Hallo Tobi,

    Eine exzellente Anleitung und Thread zum Thema doppeltes NAT.
    Auch die Lösung mit BOOSTCHICKEN ist ein prima Hinweis.

    Wie sieht es mit IPv6 configuration aus?
    Funktioniert dein script auch mit ipv6

    Mein Ziel ist es kein doppeltes NAT zu betreiben und ipv6 mit Geräten an der UDM zu betreiben.

    Meine config = FritzBox 7490 -> UDM Pro -> Unify Switch – UniFi AP’s

    • Tobi sagt:

      Ich bin kein Profi im IPv6-Bereich, aber soweit ich weiß war bei IPv6 offiziell kein NAT vorgesehen. Es kamen dann trotzdem NAT-Implementierungen raus, die aber nicht in Consumer-Produkten unterstützt werden. Kurz gesagt, die FRITZ!Box macht kein NAT bei IPv6.

    • other_tobi sagt:

      Tobi hat absolut Recht.
      Es gibt zwar die Möglichkeit bei IPv6 zu natten, allerdings sollte man dafür gute Gründe haben. Das bedeutet auch, dass der Standard-Fall eben genau kein NAT ist.
      Dir wird ein Prefix (/64er Netz) des Providers aus dem öffentlichen Adressraum zugeordnet, was bei dir an der Fritzbox ankommt. Solange du das NAT nicht aktiv dort aktivierst, nattet die diesen nicht, sondern wird genau diesen Adressraum an die IPv6-Clients verteilen. Du müsstest sehen, dass deine UDM genau aus dem Bereich eine IPv6-Adresse von der Fritzbox zugeordnet bekommt.

      Um meine Behauptung auf Seiten der UDM zu beweisen, dass kein NAT aktiv ist, gebe mal dort in der Shell ein:
      ip6tables -nvL -t nat

      Du wirst sehen, dass dort kein NAT stattfindet. Die im Artikel genannten Implementierungen in iptables gelten nur für IPv4. Da es dort standardmäßig aktiv ist, müssen hier diese Anstrengungen gemacht werden es zu deaktivieren.

      Was mich vielmehr interessieren würde, ob dein IPv6 ohne Probleme läuft und welche IPv6-Adressen deine Clients besitzen? Das oben genannte zugeteilte Prefix deines Providers an deine Fritzbox müsste durch diese nämlich delegiert werden, damit deine UDM das in deinem LAN verteilen könnte – und das wüsste ich nicht, wie das mit der Fritzbox geht.
      Wenn es bei dir also funktioniert, müsste da irgendeine andere Lösung aktiv sein. Aufschluss bekäme man zunächst darüber, ob bspw. ein Client im UDM-Netz eine IPv6-Adresse aus dem zugeteilten Prefix des Providers an die Fritzbox bekommt. (Prefix kannst du einsehen in der Fritzbox)
      Würde mich interessieren wie das bei dir funktioniert, bzw. welche Mechanismen da im Gange sind. Man lernt immer dazu! :-)

  33. Seppl sagt:

    Hallo,

    sehr interessanter Artikel – bin in dem Thema recht neu und hätte dazu eine Frage. Ich betreibe die UDM Pro an einem Deutsche Glasfaser Anschluß und habe das folgende Problem:
    Ich sehe beim Surfen im Netz eine IP Adresse, auf der UDM Pro Seite eine andere WAN Adresse – also doppeltes NAT!? Ich kann auf dem NT vor der UDM Pro natürlich keine Route setzen, was habe ich hier für Möglichkeiten?

    Gruß Seppl

    • Tobi sagt:

      Mit Deutsche Glasfaser habe ich keine Erfahrung, aber ich habe folgendes gefunden:

      Deutsche Glasfaser stellt ihren Privatkunden eine öffentliche IPv6-Adresse, ein separates IPv6-Prefix (für das interne Netzwerk) und eine IPv4-Adresse aus dem Carrier Grade NAT Bereich (100.64.0.0 /10) zur Verfügung. Also DualStack mit CGNATv4.

      D.h. ja du hast zwangsweise doppeltes NAT und beim CGNAT von Deutsche Glasfaser auch keine Möglichkeit das zu entfernen.

  34. miller_time sagt:

    Vielen Dank für den Artikel,sollte das ganze auch auf der UDR laufen? Nach meinem Verständnis wird auf der UDR das BootScript nicht mehr benötigt, und das Script auf Bash angepasst werden ?

  35. Mike sagt:

    Vielen Dank für den tollen Artikel. Habe eine FritzBox die per DHCP eine IP vom ISP kriegt, eine UDM-Pro und hinter UDM-Pro läuft PiHole mit Stubby als DNS Resolver.
    Gerne würde ich Double NAT umgehen, aber nicht wegen der Geschwindigkeit, sondern um meinen eigenen DNS Resolver zu nutzen.

    PiHole + Stubby laufen als VM auf einem Intel NUC, wo noch weitere VMs laufen – ich habe (derzeit) keine separate Hardware, die ich direkt an die Fritzbox hängen könnte, um dort PiHole + Stubby laufen lassen zu können.
    Konkrete Frage wäre: ist es sicher, double NAT gemäss deiner Anleitung zu deaktivieren, die UDM-Pro-FW für die FB zu öffnen, damit die FB die PiHole-Stubby VM als DNS Resolver nutzen kann.

    Vielen Dank!

  36. Andreas sagt:

    Hallo,

    danke für die Anleitung. Ich glaube es klappt bei mir nicht richtig.
    Ich hatte Fritz!Box als Modem und USG dahinter gehabt. Da hatte ich Doppeltes NAT mit eine json Script unterbunden.
    Jetzt habe ich USG durch UDM Pro ersetzt. Bei xtables wird bei mir nur eth8 angezeigt.

    # xtables-multi iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK -v –line-number
    Chain UBIOS_POSTROUTING_USER_HOOK (1 references)
    num pkts bytes target prot opt in out source destination
    1 105K 8669K MASQUERADE all — any eth8 anywhere anywhere /* 00000001095216660481 */
    Ich habe versucht nach deiner Anleitung vorzugehen aber wenn ich sh Befehl ausführe bekomme ich:

    “root@ubnt:/mnt/data/on_boot.d# sh delete-nat.sh
    delete-nat.sh: 5: delete-nat.sh: Bad substitution”

    und dann spuckt xtabels genau die selbe Antwort:
    # xtables-multi iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK -v –line-number
    Chain UBIOS_POSTROUTING_USER_HOOK (1 references)
    num pkts bytes target prot opt in out source destination
    1 105K 8669K MASQUERADE all — any eth8 anywhere anywhere /* 00000001095216660481 */

    Was mache ich denn falsch?

    Danke im Voraus
    Viele Grüße
    Andreas

  37. Wolfgang sagt:

    Hallo Tobi,

    ich brauche mal wieder Deine Untersützung:

    Netz Standort A
    FritzBox 192.168.178.1
    UDM-PRO
    WAN-IP 192.168.178.3
    Gateway-IP 192.168.17.1
    Local tunnel IP-Adresse 192.168.255.1 Port 1194

    Netz Standort B
    FritzBox 192.168.179.1
    UDM
    WAN-IP 192.168.179.8
    Gateway-IP 192.168.34.1
    Local tunnel IP-Adresse 192.168.255.2 Port 1194

    Beide Standorte sind über ein Unifi Site-to-Site VPN mit dem Protokoll OpenVPN verbunden. Das klappt auch alles wunderbar.
    Wenn ich jedoch versuche, aus dem Netz A auf die FritzBox im Netz B zuzugreifen (und vice versa), klappt das nicht. In den lokalen Netzen kann ich auf die jeweilige FritzBox zugreifen.
    Kannst Du mir sagen, was noch zu tun ist um das zu beheben? Bin leider weder allzu Netzwerk- noch Unifi erfahren.

    Danke und Gruß
    Wolfgang

    • Tobi sagt:

      Hallo Wolfang,
      du musst auf jeden Fall die VPN-IP-Range 192.168.255.0/24 an den FRITZ!Boxen als statische Route eintragen. Am Standort A mit Gateway 192.168.178.3 und am Standort B mit Gateway 192.168.179.8 und jeweils 255.255.255.0 Subnetz. Das sollte schon ausreichend sein.

  38. Werner sagt:

    Vielen Dank für die tolle Anleitung.

    Kann man bei der UDM-Pro nur NAT auf Port 9 (eth8) deaktivieren, so das NAT auf Port 10 (eth9) noch aktiv ist?

  39. Michael sagt:

    Moin Tobi,
    vielen Dank für Deine Anleitung.

    Ich muss zwar kein doppeltes NAT eliminieren, möchte aber einen NTP-Server starten und ein DDNS-Update nach dem Start ausführen.

    Die Skripte habe ich in /mnt/data/on_boot.d/ installiert und ausführbar gemacht.
    Wenn ich die UDM-Pro neustarte werden die Skripte aber nicht automatisch ausgeführt.
    Nach dem Neustart kann ich diese aber manuell ausführen und sie starten ordnungsgemäß.

    Hast Du eine Idee, woran das liegen könnte?

    Vielen Dank und viele Grüße

  40. Michael sagt:

    Hallo Tobi,
    vielen Dank für die tolle Anleitung. Habe es vor einiger Zeit damit konfiguriert und es hat alles geklappt.
    Nun wollte ich den optionalen Part nachholen, sprich Zugriff aus dem Fritzbox Netz ins UDM Netz.
    Leider funktioniert es bei mir nicht trotz der eingetragenen Firewall Regel.
    Der Zugriff aus dem UDM Netz ins Fritz Netz ist problemlos möglich. Anders herum geht gar nichts egal welche Regel ich wo eintrage.
    Aktuell habe ich unter “Internet In” die IP-Group 192.168.178.0/24 eingetragen mit Destination zum Network “Default” (ja kein besonders einfallsreicher Name) als Accept Action.
    Ich habe aber auch schon diverse Quellen und Ziele durchprobiert, nichts funktioniert. Kann es noch einen anderen Grund geben warum das nicht klappt?
    Vielen Dank und einen schönen Gruß

    • Tobi sagt:

      Nein sieht gut aus.
      Hast du bedacht, dass bei einer Änderung der Firewall-Regeln die NAT-Policies in der UDM-PRO wiederhergestellt werden?

    • Michael sagt:

      Habe ich tatsächlich nicht bedacht. habe es dann aber nachgeholt.
      Leider ohne Erfolg. Ich hab jetzt zwar kein doppeltes NAT, aber funktionieren will der Zugriff aus dem Fritz-Netz trotzdem nicht.

  41. Roman sagt:

    Servus Tobi,

    habe grade erfolgreich meinem DREAMROUTER das NATen ausgetrieben, hab dein script etwas angepasst da das Ding nur einen WAN-Port hat und der eth4 heisst.

    Da NATen hat ein Eine, nur in der Zeile 3 schmeckt ihm was nicht:

    if [ ${uptimeMinutes::-3} -lt 300 ]

    er sagt mir “Bad substitution”

    Kannst du mir hier evtl. unter die Arme greifen?

    • Tobi sagt:

      Die UDR läuft mit Debian 9 und nicht mehr mit dem “unifi-os” Container wie die UDM-PRO.
      Mit dieser Info und etwas Hilfe von Google solltest du das Skript ohne Probleme anpassen können.

    • Marco sagt:

      Hallo Tobi,

      auch ich habe dieses Problem und kriege es gerade leider nicht gelöst. Ich finde den Syntaxfehler nicht, ich habe schon diverses versucht. Ich nutze eine UDM-SE

  42. Ruben sagt:

    Ich bekomme das Skript auf meiner UDM-SE nicht installiert. Ich bekomme immer den folgenden Fehler “Error while cleaning up”, wenn ich die Anleitung befolge und die folgende Befehlssyntax über Putty ausführe: curl -fsL “https://github.com/unifi-utilities/unifios-utilities/tree/main/on-boot-script/remote_install.sh” | /bin/sh

    Ich habe lediglich den Github Link für den Abruf des Skripts aktualisiert. Ich komme aber nicht weiter. Was mache ich falsch?

    Nachfolgend der Verlauf, was ich über Putty eingegeben hatte bzw. was für Meldungen kamen.
    UDR/UDMSE detected, installing on-boot script…
    Removed /etc/systemd/system/multi-user.target.wants/udm-boot.service.
    Creating systemctl service file
    Enabling UDM boot…
    Created symlink /etc/systemd/system/multi-user.target.wants/udm-boot.service → / etc/systemd/system/udm-boot.service.
    UDM Boot Script installed

    Downloading CNI plugins script…
    CNI plugins script installed
    Executing CNI plugins script…
    Downloading https://github.com/containernetworking/plugins/releases/download/v1. 1.1/cni-plugins-linux-arm64-v1.1.1.tgz.sha256
    Downloading https://github.com/containernetworking/plugins/releases/download/v1. 1.1/cni-plugins-linux-arm64-v1.1.1.tgz
    Pouring /mnt/data/.cache/cni-plugins/cni-plugins-linux-arm64-v1.1.1.tgz

    Downloading CNI bridge script…
    CNI bridge script installed
    Executing CNI bridge script…
    /mnt/data/on_boot.d/06-cni-bridge.sh

    On boot script installation finished

    You can now place your scripts in `/mnt/data/on_boot.d`

    root@Dream-Machine-Special-Edition:~# curl -fsL “https://github.com/unifi-utilit ies/unifios-utilities/tree/main/on-boot-script/remote_install.sh” | /bin/sh
    /bin/sh: 9: Syntax error: newline unexpected
    root@Dream-Machine-Special-Edition:~# curl -L https://udm-boot.boostchicken.dev -o udm-boot_1.0.5_all.deb
    dpkg -i udm-boot_1.0.5_all.deb
    systemctl enable udm-boot
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
    100 3364 100 3364 0 0 4964 0 –:–:– –:–:– –:–:– 4964
    (Reading database … 97190 files and directories currently installed.)
    Preparing to unpack udm-boot_1.0.5_all.deb …
    /var/lib/dpkg/tmp.ci/preinst: 19: /var/lib/dpkg/tmp.ci/preinst: /sbin/ssh-proxy: not found
    dpkg: error processing archive udm-boot_1.0.5_all.deb (–install):
    subprocess new pre-installation script returned error exit status 127
    /var/lib/dpkg/tmp.ci/postrm: 24: /var/lib/dpkg/tmp.ci/postrm: /sbin/ssh-proxy: n ot found
    dpkg: error while cleaning up:
    subprocess new post-removal script returned error exit status 127
    Errors were encountered while processing:
    udm-boot_1.0.5_all.deb
    root@Dream-Machine-Special-Edition:~# curl -L https://udm-boot.boostchicken.dev -o udm-boot_1.0.5_all.deb
    dpkg -i udm-boot_1.0.5_all.deb
    systemctl enable udm-boot
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
    100 3364 100 3364 0 0 7182 0 –:–:– –:–:– –:–:– 7182
    (Reading database … 97190 files and directories currently installed.)
    Preparing to unpack udm-boot_1.0.5_all.deb …
    /var/lib/dpkg/tmp.ci/preinst: 19: /var/lib/dpkg/tmp.ci/preinst: /sbin/ssh-proxy: not found
    dpkg: error processing archive udm-boot_1.0.5_all.deb (–install):
    subprocess new pre-installation script returned error exit status 127
    /var/lib/dpkg/tmp.ci/postrm: 24: /var/lib/dpkg/tmp.ci/postrm: /sbin/ssh-proxy: not found
    dpkg: error while cleaning up:
    subprocess new post-removal script returned error exit status 127
    Errors were encountered while processing:
    udm-boot_1.0.5_all.deb
    root@Dream-Machine-Special-Edition:~# UDR/UDMSE detected, installing on-boot script…
    Removed /etc/systemd/system/multi-user.target.wants/udm-boot.service.
    Creating systemctl service file
    Enabling UDM boot…
    Created symlink /etc/systemd/system/multi-user.target.wants/udm-boot.service → / etc/systemd/system/udm-boot.service.
    UDM Boot Script installed

    Downloading CNI plugins script…
    CNI plugins script installed
    Executing CNI plugins script…
    Downloading https://github.com/containernetworking/plugins/releases/download/v1. 1.1/cni-plugins-linux-arm64-v1.1.1.tgz.sha256
    Downloading https://github.com/containernetworking/plugins/releases/download/v1. 1.1/cni-plugins-linux-arm64-v1.1.1.tgz
    Pouring /mnt/data/.cache/cni-plugins/cni-plugins-linux-arm64-v1.1.1.tgz

    Downloading CNI bridge script…
    CNI bridge script installed
    Executing CNI bridge script…
    /mnt/data/on_boot.d/06-cni-bridge.sh

    On boot script installation finished

    You can now place your scripts in `/mnt/data/on_boot.d`

    root@Dream-Machine-Special-Edition:~# curl -fsL “https://github.com/unifi-utilit ies/unifios-utilities/tree/main/on-boot-script/remote_install.sh” | /bin/sh
    /bin/sh: 9: Syntax error: newline unexpected
    root@Dream-Machine-Special-Edition:~# curl -L https://udm-boot.boostchicken.dev -o udm-boot_1.0.5_all.deb
    dpkg -i udm-boot_1.0.5_all.deb
    systemctl enable udm-boot
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
    100 3364 100 3364 0 0 4964 0 –:–:– –:–:– –:–:– 4964
    (Reading database … 97190 files and directories currently installed.)
    Preparing to unpack udm-boot_1.0.5_all.deb …
    /var/lib/dpkg/tmp.ci/preinst: 19: /var/lib/dpkg/tmp.ci/preinst: /sbin/ssh-proxy: not found
    dpkg: error processing archive udm-boot_1.0.5_all.deb (–install):
    subprocess new pre-installation script returned error exit status 127
    /var/lib/dpkg/tmp.ci/postrm: 24: /var/lib/dpkg/tmp.ci/postrm: /sbin/ssh-proxy: n ot found
    dpkg: error while cleaning up:
    subprocess new post-removal script returned error exit status 127
    Errors were encountered while processing:
    udm-boot_1.0.5_all.deb
    root@Dream-Machine-Special-Edition:~# curl -L https://udm-boot.boostchicken.dev -o udm-boot_1.0.5_all.deb
    udm-boot_1.0.5_all.deb while processing:ned error exit status 127n/ssh-proxy: not foundndt_1.0.5_all.deb
    -bash: UDR/UDMSE: No such file or directory
    -bash: Removed: command not found
    -bash: Creating: command not found
    -bash: Enabling: command not found
    -bash: Created: command not found
    -bash: UDM: command not found
    -bash: Downloading: command not found
    -bash: CNI: command not found
    -bash: Executing: command not found
    -bash: Downloading: command not found
    -bash: Downloading: command not found
    -bash: Pouring: command not found
    -bash: Downloading: command not found
    -bash: CNI: command not found
    -bash: Executing: command not found
    -bash: On: command not found
    -bash: /mnt/data/on_boot.d: Is a directory
    -bash: You: command not found
    -bash: root@Dream-Machine-Special-Edition:~#: command not found
    -bash: /bin/sh:: No such file or directory
    -bash: root@Dream-Machine-Special-Edition:~#: command not found
    (Reading database … 97190 files and directories currently installed.)
    Preparing to unpack udm-boot_1.0.5_all.deb …
    /var/lib/dpkg/tmp.ci/preinst: 19: /var/lib/dpkg/tmp.ci/preinst: /sbin/ssh-proxy: not found
    dpkg: error processing archive udm-boot_1.0.5_all.deb (–install):
    subprocess new pre-installation script returned error exit status 127
    /var/lib/dpkg/tmp.ci/postrm: 24: /var/lib/dpkg/tmp.ci/postrm: /sbin/ssh-proxy: not found
    dpkg: error while cleaning up:
    subprocess new post-removal script returned error exit status 127
    Errors were encountered while processing:
    udm-boot_1.0.5_all.deb
    -bash: fg: %: no such job
    -bash: Dload: command not found
    -bash: 0: command not found
    -bash: 100: command not found
    -bash: Reading: command not found
    -bash: Preparing: command not found
    -bash: /var/lib/dpkg/tmp.ci/preinst:: No such file or directory
    -bash: syntax error near unexpected token `(‘
    -bash: subprocess: command not found
    -bash: /var/lib/dpkg/tmp.ci/postrm:: No such file or directory
    -bash: dpkg:: command not found
    -bash: subprocess: command not found
    -bash: Errors: command not found
    -bash: udm-boot_1.0.5_all.deb: command not found
    -bash: root@Dream-Machine-Special-Edition:~#: command not found
    (Reading database … 97190 files and directories currently installed.)
    Preparing to unpack udm-boot_1.0.5_all.deb …
    /var/lib/dpkg/tmp.ci/preinst: 19: /var/lib/dpkg/tmp.ci/preinst: /sbin/ssh-proxy: not found
    dpkg: error processing archive udm-boot_1.0.5_all.deb (–install):
    subprocess new pre-installation script returned error exit status 127
    /var/lib/dpkg/tmp.ci/postrm: 24: /var/lib/dpkg/tmp.ci/postrm: /sbin/ssh-proxy: not found
    dpkg: error while cleaning up:
    subprocess new post-removal script returned error exit status 127
    Errors were encountered while processing:
    udm-boot_1.0.5_all.deb
    -bash: fg: %: no such job
    -bash: Dload: command not found
    -bash: 0: command not found
    -bash: 100: command not found
    -bash: Reading: command not found
    -bash: Preparing: command not found
    -bash: /var/lib/dpkg/tmp.ci/preinst:: No such file or directory
    -bash: syntax error near unexpected token `(‘
    -bash: subprocess: command not found
    -bash: /var/lib/dpkg/tmp.ci/postrm:: No such file or directory
    -bash: dpkg:: command not found
    -bash: subprocess: command not found
    -bash: Errors: command not found
    -bash: udm-boot_1.0.5_all.deb: command not found
    -bash: UDR/UDMSE: No such file or directory
    -bash: Removed: command not found
    -bash: Creating: command not found
    -bash: Enabling: command not found
    -bash: Created: command not found
    -bash: UDM: command not found
    -bash: Downloading: command not found
    -bash: CNI: command not found
    -bash: Executing: command not found
    -bash: Downloading: command not found
    -bash: Downloading: command not found
    -bash: Pouring: command not found
    -bash: Downloading: command not found
    -bash: CNI: command not found
    -bash: Executing: command not found
    -bash: On: command not found
    -bash: /mnt/data/on_boot.d: Is a directory
    -bash: You: command not found
    -bash: root@Dream-Machine-Special-Edition:~#: command not found
    -bash: /bin/sh:: No such file or directory
    -bash: root@Dream-Machine-Special-Edition:~#: command not found
    (Reading database … 97190 files and directories currently installed.)
    Preparing to unpack udm-boot_1.0.5_all.deb …
    /var/lib/dpkg/tmp.ci/preinst: 19: /var/lib/dpkg/tmp.ci/preinst: /sbin/ssh-proxy: not found
    dpkg: error processing archive udm-boot_1.0.5_all.deb (–install):
    subprocess new pre-installation script returned error exit status 127
    /var/lib/dpkg/tmp.ci/postrm: 24: /var/lib/dpkg/tmp.ci/postrm: /sbin/ssh-proxy: not found
    dpkg: error while cleaning up:
    subprocess new post-removal script returned error exit status 127
    Errors were encountered while processing:
    udm-boot_1.0.5_all.deb
    -bash: fg: %: no such job
    -bash: Dload: command not found
    -bash: 0: command not found
    -bash: 100: command not found
    -bash: Reading: command not found
    -bash: Preparing: command not found
    -bash: /var/lib/dpkg/tmp.ci/preinst:: No such file or directory
    -bash: syntax error near unexpected token `(‘
    -bash: subprocess: command not found
    -bash: /var/lib/dpkg/tmp.ci/postrm:: No such file or directory
    -bash: dpkg:: command not found
    -bash: subprocess: command not found
    -bash: Errors: command not found
    -bash: udm-boot_1.0.5_all.deb: command not found
    -bash: root@Dream-Machine-Special-Edition:~#: command not found
    (Reading database … 97190 files and directories currently installed.)
    Preparing to unpack udm-boot_1.0.5_all.deb …
    /var/lib/dpkg/tmp.ci/preinst: 19: /var/lib/dpkg/tmp.ci/preinst: /sbin/ssh-proxy: not found
    dpkg: error processing archive udm-boot_1.0.5_all.deb (–install):
    subprocess new pre-installation script returned error exit status 127
    /var/lib/dpkg/tmp.ci/postrm: 24: /var/lib/dpkg/tmp.ci/postrm: /sbin/ssh-proxy: not found
    dpkg: error while cleaning up:

  43. DNB sagt:

    Hallo Tobi,

    ersteinmal vielen Dank für die tolle Anleitung!

    Ich habe alles nach deiner Anleitung auf der UDM-Pro installiert und NAT erfolgreich deaktiviert. Das funktionierte auch lange Zeit gut. Jetzt ist mir aber aufgefallen, das unter der Version (vielleicht auch schon früher) v. 1.12.30 das NAT wieder aktiviert ist ??? Ich habe nichts weiter geändert…und trozdem hat es sich wieder aktiviert. Hast du eine Idee dazu? Wie kann das sein?

    • Tobi sagt:

      Hast du schonmal geprüft, ob dein Cronjob sauber läuft und funktioniert?

    • DNB sagt:

      vielen Dank Tobi für die schnelle Rückmeldung. Ja, habe total übersehen. Der Cronjob lief nicht sauber. Jetzt ist alles behoben und das NAT ist wieder erfolgreich deaktiviert :-D Danke nochmals!

  44. Jan sagt:

    Hi Tobi,

    auch von mir vielen Dank für die super ausführliche Beschreibung!

    Ich habe das jetzt alles erfolgreich so eingerichtet, die Standard NAT Regeln sind auch erfolgreich gelöscht.

    Ich klenne mich leider mit der Materie nicht so aus, es gibt noch weitere NAT Regeln, welche auf eine gewisse lokale IP Adresse gehen.

    Was es damit auf sich hat weiß ich allerdings leider nicht. (Ich vermute evtl hat das mit einer Port-Freigabe zu tun?)

    In jeden Fall scheint meine UDM Pro immer noch doppeltes NAT zu verursachen, wenn ich tracert nutze, sehe ich zwei lokale Hops (UDM Pro und FritzBox).

    Bin auf Version 1.12.33

    Könntest du mir hier weiter Helfen?

    Vielen Dank nochmal,
    Jan

    • Tobi sagt:

      Genau die anderen NAT-Regeln kommen von der Port-Freigabe.
      Ein Traceroute zeigt nur die einzelnen Hops an und kann nicht pauschal beantworten, ob doppeltes NAT vorliegt oder nicht. Dies kann erst zusammen mit dem Wissen der lokalen IPs beantwortet werden. Wenn die UDM-PRO nur routet aber kein NAT aktiv hat, siehst du nämlich trotzdem zwei Hops.
      Also am besten einfach via CLI prüfen, ob die besagten NAT-Regeln existieren oder nicht.

    • Jan sagt:

      Ah okay.

      Ich habe im Internet überall gelesen, dass wenn tracert zwei Hops mit lokalen IPs anzeigt, dass dann doppeltes NAT besteht.

      Dann gehe ich einfach einmal davon aus, dass das alles soweit geklappt hat, aktuell funktinoiert alles anderre auch einwandfrei :)

      Vielen Dank noch einmal!

  45. Manfred sagt:

    Hallo Tobi

    Kann es sein, das das Script nicht mehr funktioniert auf UDM-Pro 2.x?

    Führt man das Script aus, gibts einen Fehler in Zeile 5: delete-nat.sh: 5: delete-nat.sh: Bad substitution

    Gibt man obigen Code in einen Shell Checker (shellcheck.net) wird für Zeile 5 eine Warnung ausgegeben: ^– SC3057 (warning): In POSIX sh, string indexing is undefined.

    Vielen Dank

  46. Simon sagt:

    Moin,

    das Script konnte ich erfolgreich in meine UDM Pro implementieren. Die NAT-Regeln werden brav gelöscht. Nun habe ich, bevor ich die Einstellungen an der Fritz!Box durchführen wollte, geschaut, ob an die UDM angeschlossene Geräte weiterhin Zugriff auf das Internet haben. Das haben sie auch weiterhin. Ich hatte mit dem Gegenteil gerechnet, denn im Tutorial steht:

    “Damit Clients aus dem UDM-PRO-Subnetz auf das Internet oder die FRITZ!Box zugreifen können, wird noch eine statische Route auf der FRITZ!Box benötigt.”

    Es wird durch die Maßnahme doch nur das Doppel-NAT deaktiviert. Die Fritz!Box nattet somit weiter an die UDM. Ist der Exposed Host dann überhaupt nötig?

    Gruß
    Simon

    • Simon sagt:

      Vergesst es! Irgendwas war falsch eingestellt. Nachdem ich alles nochmal durchgegangen bin, war kein Zugriff auf das Internet mehr möglich, sondern erst nachdem die statische Route konfiguriert war. Passt also. ;-)

  47. Wolfgang M. Spieß sagt:

    Hallo Tobi,

    ich schliesse mich der Frage von Manfred an: Nach dem Update auf 2.5.17 läuft das script nicht mehr. Kannst Du vielleicht einen Blick darauf werfen? Ich habe mich zwar daran versucht, scheitere jedoch aufgrund mangelnder Kentnisse.

    Danke und lieben Gruß
    Wolfgang

  48. Kim sagt:

    Hi Tobi, thanks for publishing this script. This was really helpful. I was able to tweak it and make it work on 3.x. However I don’t understand the purpose of these lines, are they really needed?

    # Check if script runs directly after boot. If so, wait for 10 seconds.
    uptimeMinutes=`cat /proc/uptime | awk ‘{print $1}’`
    if [ ${uptimeMinutes::-3} -lt 300 ]
    then
    logger NAT-Script: Script zum 1. Mal nach Boot ausgefuehrt
    sleep 10
    else
    logger NAT-Script: Script via Cron-Job ausgefuehrt
    fi

    • Tobi sagt:

      There was an issue since UDM-PRO firmware 1.9.3 that the script did not work anymore and some other services crashed after restart. This occured due to the fact that the script ran to fast after starting and tried to delete the NAT rules even if they didn’t exist yet.

      These lines check if the script is running directly after booting and if yes intrudocues a 10 second delay which fixes the issue.

  49. Richard Schieder sagt:

    Hallo Tobi.
    Wie bekomme ich das script auf 3.0.20 zum laufen?
    1. xtables-multi:
    Der Befehl heisst jetzt xtables-legacy-multi
    2./mnt/data/on_boot.d/
    das Verzeichnis wird jetzt unter /data/on_boot.d/ eingebunden.

    Nach den Ändereungen bekomme ich beim ausführen des scripts einen bad substitotion.

    mit bash delete-nat.sh funktioniert es.
    aber halkt nicht mit sh delete-nat.sh bzw ./delete-nat.sh
    Deshalb wird das script auch nicht ausgeführt beim booten.

    Vielen Dank für deine Hilfe.

    • Tja Pech gehabt. sagt:

      Tobi hat scheinbar kein Interesse mehr.

    • Tobi sagt:

      Das ist nicht ganz richtig. Bin nur nicht auf 3.0.20 und kann daher noch nicht helfen.

    • JSO sagt:

      Hi, zusätzlich zu den benannten Änderungen, musste ich noch ändern:
      3. /etc/init.d/crond restart durch /etc/init.d/cron restart ersetzen
      4. uptimeMinutes=`cat /proc/uptime | awk ‘{print $1}’` durch die zwei Zeilen:
      uptimeMinutes=`cat /proc/uptime`
      uptimeMinutes= awk ‘{print $ uptimeMinutes}’

      vielleicht nicht besonders schön. Aber das Skript läuft

    • JSO sagt:

      Hi, bei 4. war ich falsch. Es wird eine Float-Zahl erzeugt. Die muss zu Int umgewandelt werden. Statt uptimeMinutes=`cat /proc/uptime | awk ‘{print $1}’` habe ich uptimeMinutes=`cat /proc/uptime | awk ‘{print $1}’ | awk ‘{ V=$1+0 ; printf(“%.0f\n”, V); }’` . Dann musste noch die If-Anweisung angepasst werden. Statt if [ ${uptimeMinutes::-3} -lt 300 ] nutze ich if [ $uptimeMinutes -lt 300 ].

      Mit dem Eintrag bei cron habe ich noch Herausforderungen. Die Datei wird angelegt, aber sie wird nicht alle 15 min ausgeführt. Vielleicht hat noch jemand eine Idee…

  50. Reiter sagt:

    Hallo, ich bin durch Zufall jetzt erst auf diesen Beitrag gestoßen und finde es klasse.. leider habe ich schon die neuste Version auf der udm pro , ist glaub die 3.1.15 kann gerade nicht nachsehen.
    Und da funktioniert das Script ja wohl nicht mehr…
    Wírd es da eine Lösung geben? Und wird die dann ganz vorn im Beitrag verlinkt oder findet man die dann hier Zwischen den ganzen Beiträgen ?
    Ich würde gern das NAT auf Port 9 (wan Port) und Port 10 wan Port 1 glaube ich ausschalten
    Danke für diesen Beitrag hier
    Ich hoffe mir kann jemand helfen

    Mfg
    Reiter

  51. Reiter sagt:

    Na hallo, wie ich oben schon schrieb… die neuste Version ist die 3.1.15
    Wird es da auch eine Lösung für geben
    Die FRITZ!Box hängt davor als exposed Host und wenn ich da einmal NAT einsparen könnte wäre das klasse

    Danke schonmal

  52. DNB sagt:

    Das skript hat bei mir funktioniert (vielleicht wird das jetzt komplet angezeigt?!):

    #!/bin/bash
    # Check if script runs directly after boot. If so, wait for 30 seconds.
    uptimeMinutes=$(awk ‘{print $1}’ /proc/uptime)
    if (( ${uptimeMinutes%.*} /etc/cron.d/delete-nat
    /etc/init.d/crond restart
    fi

    • Tobi sagt:

      Versuche das Skript mal zwischen folgende HTML-Tags zu stecken:
      <\pre><\code class="language-*">
      <\/code><\/pre>
      Dabei natürlich die “\” entfernen.

  53. DNB sagt:

    Das skript hat bei mir funktioniert bei mir (UDM-Pro v. 3.1.16)


    #!/bin/bash

    # Check if script runs directly after boot. If so, wait for 27 seconds.
    uptimeMinutes=$(awk '{print $1}' /proc/uptime)
    if (( ${uptimeMinutes%.*} =1; i-- ))
    do
    iptables -t nat -D $chain $i
    done
    fi

    # Check if cron job exists, if not create it and restart cron daemon
    if [[ ! -e /etc/cron.d/delete-nat ]]; then
    echo "*/26 * * * * /data/on_boot.d/delete-nat.sh" > /etc/cron.d/delete-nat
    /etc/init.d/crond restart
    fi

    @Tobi Danke für den Hinweis mit den HTML-Tags, zum Code einfügen…

  54. DNB sagt:

    Das skript hat bei mir funktioniert bei mir (UDM-Pro v. 3.1.16), das ist nur der Mittelere Teil aus meinem Script (kriege nicht alles reinkopiert?!):

    # NAT Regeln loeschen zu überprüfende Kette
    chain="UBIOS_POSTROUTING_USER_HOOK"

    # Überpruefen Sie, ob es Regeln in der Kette gibt
    if iptables -t nat -L $chain | grep -E 'MASQUERADE.*eth[89]'; then

    # Anzahl der Regeln in der Kette holen
    num_rules=$(iptables -t nat -L $chain --line-numbers | grep -E 'MASQUERADE.*eth[89]' | wc -l)
    # Jede Regel einzeln von hinten nach vorne löschen
    for (( i=$num_rules; i>=1; i-- ))
    do
    iptables -t nat -D $chain $i
    done
    fi

    @Tobi Danke für den Hinweis mit den HTML-Tags, zum Code einfügen…

  55. DNB sagt:

    Hey Tobi, vielen Dank für deine Hinweise. Nach deinem Rat probiere ich jetzt einmal den gesamten code in nachfolgenden Link zu stecken.

    Das NAT-Skript im nachfolgenden Link funktioniert bei mir wunderbar (UDM-Pro v. 3.1.16):

    https://hastebin.com/share/erexegudih.bash

    Wer erst noch „UDM / UDMPro Boot Script“ installieren muss, hier meine von antary (Tobi) und github zusammengesuchte und erstellte Zusammenfassung:

    # Überprüfen, ob NAT aktiviert oder deaktiviert ist:

    xtables-legacy-multi iptables -t nat -L UBIOS_POSTROUTING_USER_HOOK -v --line-number

    # NAT Aktiviert:

    Chain UBIOS_POSTROUTING_USER_HOOK (1 references)
    num pkts bytes target prot opt in out source destination
    1 0 0 MASQUERADE all -- any eth9 anywhere anywhere /* 00000001095216660481 */
    2 34914 4137K MASQUERADE all -- any eth8 anywhere anywhere /* 00000001095216660482 */

    # NAT Deaktiviert:

    Chain UBIOS_POSTROUTING_USER_HOOK (1 references)
    num pkts bytes target prot opt in out source destination

    # SSH Verbindung aufbauen:
    Username: root
    IP: xxx.xxx.xxx.xxx
    Passwort:

    # Kontrollieren ob Boostchicken läuft (sollte anzeigen: Run On Startup UDM 3.x)

    systemctl status udm-boot.service

    # Boostchicken Installieren [1]

    # Download package

    curl -L https://github.com/unifi-utilities/unifios-utilities/raw/main/on-boot-script-2.x/packages/udm-boot-2x_1.0.1_all.deb -o /tmp/udm-boot-2x_1.0.1_all.deb

    # Install it

    dpkg -i /tmp/udm-boot-2x_1.0.1_all.deb

    # Patches for ‘udm-boot-2x_1.0.1_all.deb’ package [2]

    sed -i 's/Description=Run On Startup UDM 2.x/Description=Run On Startup UDM 3.x/g' /lib/systemd/system/udm-boot.service
    sed -i '/Restart=on-failure/d' /lib/systemd/system/udm-boot.service
    sed -i '/RestartSec=5s/d' /lib/systemd/system/udm-boot.service

    # Enable reload and start

    systemctl enable udm-boot
    systemctl daemon-reload
    systemctl start udm-boot

    # NAT Skript erstellen:

    cd /data/on_boot.d/
    ls (Dateien Auflisten: Wenn Skript „delete-nat.sh“ vorhanden, weiter zum Bearbeiten. Ansonsten erstellen: touch /data/on_boot.d/delete-nat.sh)

    # Konsolenbefehle zum Bearbeiten der „delete-nat.sh“ Datei (Inhalt, siehe NAT-Skript Link)

    vim delete-nat.sh (Öffnen der Datei)
    dd (Drücken, zum Löschen von Zeilen)
    SHIFT + A (Bearbeitungsmodus, Code Einfügen oder Ändern)
    ESC (Bearbeitungsmodus Beenden)
    SHIFT + ZZ (Speichern und Beenden)

    # Skript ausführbar machen:

    chmod +x delete-nat.sh

    # Skript manuell ausführen:

    ./delete-nat.sh

    [1] https://github.com/unifi-utilities/unifios-utilities/tree/main/on-boot-script-2.x
    [2] https://github.com/unifi-utilities/unifios-utilities/issues/523#issuecomment-1733527918

    @ Tobi, wenn du Zeit hast, kannst du dieses Skript gerne nochmal testen und wenn’s ebenfalls funktionsfähig ist, in einem weiteren Teil deiner Webseite als Anleitung für die UDM-Pro v. 3.x.x ergänzen. Danke für deine bisherigen Bemühungen.

    • DNB sagt:

      Im nat-Skript hat sich ein fehler eingeschlichen:
      https://hastebin.com/share/erexegudih.bash

      und zwar ist folgender Eintrag im Cron-Job nicht mehr aktuell :

      echo "*/26 * * * * /data/on_boot.d/delete-nat.sh" > /etc/cron.d/delete-nat

      bitte durch folgendes ersetzen (es fehlt ein “root”):

      echo "*/26 * * * * root /data/on_boot.d/delete-nat.sh" > /etc/cron.d/delete-nat

    • Tobi sagt:

      Bitte nochmal hochladen, dann ergänze ich es im Artikel!

    • DNB sagt:

      NAT-Skript für UDM-PRO 3.x
      NEU: Optimiert, überprüft und löscht nur eth8 und eth9 alle MASQUERADE-Regeln nacheinander
      #!/bin/bash
      # Prüft ob das Skript binnen 360 sek. nach Systemstart ausgeführt wird und wartet dann 23 sek.
      uptimeSeconds=$(awk '{print $1}' /proc/uptime)
      if (( ${uptimeSeconds%.*} =1; i-- ))
      do
      iptables -t nat -D $chain $i
      done
      fi

      # Create cron job if it doesn't exist every 26 minutes
      if ! ls /etc/cron.d/delete-nat > /dev/null 2>&1
      then
      echo " MAILTO=""
      SHELL=/bin/sh
      PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
      */26 * * * * root /data/on_boot.d/delete-nat.sh" > /etc/cron.d/delete-nat
      /etc/init.d/cron restart
      fi

  56. Saiko165 sagt:

    Die nat-Skript Seite geht nicht mehr.

  57. userx sagt:

    Hi,
    der link zum NAT-Script ist leider nicht mehr aktuell, kann jemand den Code in der aktuellen Version evtl. nochmal irgendwo posten und dann hier verlinken?

    Grüße

  58. Mors Alfabesi Bileklik sagt:

    Hi,
    der link zum NAT-Script ist leider nicht mehr aktuell, kann jemand den Code in der aktuellen Version evtl. nochmal irgendwo posten und dann hier verlinken?

  59. Reiter sagt:

    Hallo, ich wollte mal fragen ob es noch eine Möglichkeit gibt mit der momentanen OS Version 3.1.16
    Das NAT auszuschalten
    So wie ich das mit bekommen habe ist,wohl alles soweit gelöscht worden. Auch das Boot Script.
    Wäre super wenn sich jemand bereit erklären würde das nochmal in Angriff zu nehmen da es ja eine wichtige Sache ist
    Über Antwort würde ich mich sehr freuen.
    Zugriff auf die Shell habe ich.. Aber es hat sich wohl alles geändert.. auch das überprüfen der iptables
    Oder kann mir jemand helfen
    Danke im vorraus

  60. Sebastian sagt:

    Ich glaube Mittlerweile lässt sich ganz offiziell in der GUI das NAT konfigurieren. Hat schon jemand Erfahrung damit gemacht?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert