OPNsense Forum

International Forums => German - Deutsch => Topic started by: mt on August 31, 2022, 05:45:39 PM

Title: Viele Ports <--DNAT--> Viele IPs scripten oder API möglich?
Post by: mt on August 31, 2022, 05:45:39 PM
Moin zusammen,

ich teste gerade OPNSense auf Tauglichkeit, mein etwas angestaubtes iptables-System zu ersetzen. Soweit ich das beurteilen kann, lässt sich nur eine Aufgabe noch nicht zufriedenstellen lösen:
Ich möchte eine Vielzahl von Servern in meinem LAN mit unterschiedlicher IP und gleichem Port per SSH von außen über eine gemeinsame WAN-IP, dafür mit unterschiedlichen Ports zugänglich machen. Anders gesagt: Jeder Nutzer kann seinen Server über die eine gemeinsame WAN-IP mit einem eigenen SSH-Port erreichen.
Ich muss also regelmäßig einen WAN-Port-Bereich auf einen LAN-IP-Adressbereich per DNAT weiterleiten., z.B
203.0.113.123:{1...255} <----->  172.16.31.{1...255}:22
Ich habe aber keine Zeit, regelmäßig 255 Portweiterleitungen per Weboberfläche anzulegen.
Mit iptables lässt sich so etwas in in bash scripten, z.B.
for(( i=1;i<256;i++))
do
let sshport=$i+31000;
iptables -t nat -A PREROUTING -p tcp -d 203.0.113.123 --dport $sshport -j DNAT --to 172.16.31.$i:22
done

Geht so etwas auch mit OPNSense?
Ich habe bisher folgendes herausgefunden:
Fällt euch noch etwas ein? Wie würdet ihr das angehen?
                                                             
Vielen Dank!                                                             
Title: Re: Viele Ports <--DNAT--> Viele IPs scripten oder API möglich?
Post by: mt on September 02, 2022, 01:05:37 PM
Scheint nicht so eine typische Fragestellung zu sein. Ich probiere es noch kurz, und falls es nicht funktioniert bleibt mir nur bei iptables zu bleiben, zumindest für diese Aufgabe.
Title: Re: Viele Ports <--DNAT--> Viele IPs scripten oder API möglich?
Post by: JeGr on September 08, 2022, 02:25:32 PM
> 203.0.113.123:{1...255} <----->  172.16.31.{1...255}:22
> Ich habe aber keine Zeit, regelmäßig 255 Portweiterleitungen per Weboberfläche anzulegen.

Darf ich vielleicht einfach mal nachfragen, warum du das regelmäßig, oft und häufig anlegen musst um 255(!) interne Hosts mit SSH zu bespaßen? Und warum das dann immer neue Mappings sein müssen?

Das klingt eher nach Hosting, aber da hätte man im Regelfall mehr als eine IP. Aber an einem Anschluß mit einer IP mehrere Dutzendmal 255 Hosts intern zu haben verwundert mich jetzt etwas. Vielleicht lässt sich das tatsächlich dann anders als gedacht lösen, aber daher die Frage, wie und warum das so gebaut ist. :)

Cheers
Title: Re: Viele Ports <--DNAT--> Viele IPs scripten oder API möglich?
Post by: mt on September 09, 2022, 05:42:17 PM
Das ist tatsächlich so etwas wie Hosting, nur mit beschränkten Mitteln aber dafür für einen guten Zweck. Dient der Lehre. Studierende bekommen je Semester eine eigene VM (genauer einen Container...) um sich mit Internettechnologien vertraut zu machen. Es sind auch nicht 255 sondern weniger, ich richte aber immer 255 ein, damit ich nicht später nochmal nachlegen muss. Mir ist klar, dass ein /24 Block die Sache vereinfachen würde, aber ist gerade nicht verfügbar und auch eigentlich nicht nötig. HTTP geht mit einer externen IP per Subdomain über einen Proxy auf die entsprechende VM. Die Proxy-Config erzeuge ich auch per Script.
SSH wird per Port zugeordnet. Da können die gleich mal lernen, ssh -p12345 zu benutzen, dann hat man auch nicht so viele Loginversuche von irgendwelchen Kaspern im auth.log wie bei Port 22.
VPN wäre eine Alternative, aber das macht die Sache komplizierter und das möchte ich ungern supporten müssen ("So, jetzt zeige ich euch mal 3 Stunden auf 37 unterschiedlichen Betriebssystemen, welche Besonderheiten es beim Einrichten eines VPN gibt...").
IPv6 wäre evtl. eine Option.
Doppeltes NAT ginge auch: Portrange auf OPNSense weiterleiten an VM-Nat mit iptables, da dann Port->IP:22 scripten.
Ich bin aber eigentlich gar nicht auf der Suche nach Alternativen, sondern nach einem Verfahren, das mir mit OPNSense erlaubt, was mit iptables eben auch ganz einfach funktioniert. Wäre ja zu schön, wenn man per API an die Portweiterleitung  rankäme, alles andere ist doch irgendwie Gebastel.
Title: Re: Viele Ports <--DNAT--> Viele IPs scripten oder API möglich?
Post by: mt on September 09, 2022, 06:29:09 PM
Ach ja, es sind neue Mappings, weil einige Ihre Server noch etwas weiterverwenden und ich denen die nicht unterm Hintern abschalten möchte. Ich mag es außerdem übersichtlich und es gibt genügend Ports, so dass ich ein Schema etabliert habe, dass es mir bis ins Jahr 2065 erlaubt, auf den ersten Blick aus IP, Port oder Hostname die anderen Werte zu erzeugen...
Title: Re: Viele Ports <--DNAT--> Viele IPs scripten oder API möglich?
Post by: JeGr on September 12, 2022, 03:51:04 PM
> Wäre ja zu schön, wenn man per API an die Portweiterleitung  rankäme, alles andere ist doch irgendwie Gebastel.

Von dem was ich verstanden habe wird das auch nicht ohne weiteres außer es Skript-technisch oder API-mäßig zu bauen.

> 203.0.113.123:{1...255} <----->  172.16.31.{1...255}:22

Problem daran, warum das nicht ohne weiteres in der UI machbar ist (IMHO) dürfte das Problem sein, dass du keinen RegEx auf beliebige Werte legen kannst. Ich meine - sofern ichs richtig im Kopf habe - dass das auch in reiner PF Syntax nicht drin ist, das mit einer Zeile zu definieren, da er keinen Bezug zwischen den beiden Platzhaltern hätte und damit nicht wüsste, welcher Port zu welcher IP gematcht wird. Ich kann mich irren, aber ich meine dem war so.

Somit würde nur bleiben, das als einzelne Regeln zu definieren, was dann sehr wahrscheinlich auch die UI bzw. den Browser zum platzen bringen würde, wenn man mehrfach 255 Einträge untereinander als Tabelle anzeigen würde :)
Vielleicht stehe ich auch wie du im Wald vor lauter Bäumen aber aktuell würde mir keine Syntax einfallen, mit der man das sinnvoll zusammenfassen könnte...