Wireguard bei HA setup?

Started by Dunuin, September 10, 2021, 03:34:16 PM

Previous topic - Next topic
September 10, 2021, 03:34:16 PM Last Edit: September 10, 2021, 05:19:46 PM by Dunuin
Moin,

Ich betreibe hier 2 OPNsense VMs hinter einer Fritzbox. Die beiden OPNsenses laufen als HA mit virtuellen IPs.
Da läuft auch alles soweit gut, jedoch wollte ich jetzt gerne, dass da die OPNsenses als Wireguard-Server fungieren (da hatte ich bisher Raspis für, die aber inzwischen eingemottet sind).

Was ich da aber so gelesen habe wird man Wireguard technisch bedingt nicht als HA betreiben können, da dieses nur UDP nutzt und daher nicht mit virtuellen IPs umgehen kann. Das wäre jetzt auch kein Weltuntergang für mich, wenn Wireguard nur auf einer OPNsense laufen würde. Oder halt auf beiden OPNseses parallel aber dann eigenständig auf anderen Ports.

Ich bekomme da aber Wireguard einfach nicht zum Laufen. Das fängt schon bei der Fritzbox an.
Setup ist da so:
192.168.0.1 -> Fritzbox LAN
192.168.0.2 -> OPNsense-PHY (OPNsense Master Physisch)
192.168.0.3 -> OPNsense2-PHY (OPNsense Backup Physisch)
192.168.0.4 -> OPNsense-VIP (OPNsense virtuelle IP)

Wenn Wireguard mit virtuellen IPs nicht umgehen kann, dann wollte ich halt alles was im Fritzbox WAN auf 51821 ankommt gerne an OPNsense-PHY an Port 51821 port-forwarden und alles was im Fritzbox WAN auf 51822 ankommt forwarden an OPNsense2-PHY an Port 51822. Dann könnte ich einfach im Wireguard Client alles 2 mal einrichten und mich vom Client aus entscheiden, welchen von beiden Zugängen ich nutzen will.
Ich bekomme da aber nicht einmal ordentliche Port-Forwards in der Fritzbox hin...
Die Fritzbox ist eine 7560 vom Provider mit FritzOS 7.27. In der Fritzbox selbst werden auch alle 3 OPNsense IPs erkannt. Bisher habe ich da nur 14 Portfreigaben eingerichtet die alle an die virtuelle IP durchgeleitet werden, was auch soweit klappte.
Versuche ich da aber nun eine Portfreigabe für eine der beiden physischen IPs anzulegen, dann scheint da die Fritzbox durcheinander zu kommen. Erstelle ich z.B. eine neue Portfreigabe für das Gerät OPNsense-PHY und speichere diese, dann landet die Portfreigabe nicht bei OPNsense-PHY sondern wird bei dem Gerät OPNsense-VIP hinzugefügt. Ähnliches Problem bei OPNsense2-PHY. Scheinbar bringen da die wechselnden MACs und die virtuelle IP die Fritzbox durcheinander. Aktuell wird also mein Wireguard Port an die virtuelle IP durchgereicht, da mich die Fritzbox einfach keine Port-Forwards an die Physische IP machen lässt.


Ein anderes Problem ist, dass ich da nicht genau weiß, wie ich meine OPNsenses einzustellen habe.
Für mein Wireguard Netz habe ich 192.168.100.0/24 gewählt. 192.168.100.1 soll dann meine OPNsense und 192.168.100.2 mein Handy sein. Wireguard habe ich nach Tutorials so eingestellt, dass sich da eigentlich mein Handy zur OPNsense verbinden können sollte. Das Handy sendet laut Wireguard-Android-App zwar Daten beim Verbindungsversuch, empfängt aber keine Daten. In der OPNsense sehe ich keine Handshakes und auch das Firewall Log zeigt mir keine geblockten Pakete auf dem eingestellten Wireguard-Port. Ich habe da also die Vermutung da liegt das Problem schon zwischen Fritzbox and OPNsense, wo noch ein managed Switch und Virtualisierung zwischen hängen.

Was mir da aber noch nicht ganz klar ist:
1.) Das Wireguard-Plugin hat ja die Firewall-Gruppe "WireGuard" selbstständig erstellt. Aber unter "Interfaces -> Assignments" gibt es nun auch ein neues Interface "wg0" was ich erstellen könnte. Wofür genau sind die beiden zuständig? Wenn ich das wg0 Interface unter dem Namen "WG" hinzufüge, dann kann ich ja für beides Firewall Regeln erstellen.

2.) Mein Outbound-NAT ist auf "Manual" gestellt wegen den virtuellen IPs. Üblicherweise füge ich da für jedes Interface eine neue Regel hinzu. Das müsste ich dann auch sowohl für das "Wireguard" als auch das "wg0" Interface, also z.B. so?:
Interface: WAN
Source address: WireGuard net
Translation / target: 192.168.0.4 (Virtual WAN IP)

3.) Bei den Firewall Regeln für WireGuard habe ich nur folgenen Eintrag:
Interface: WireGuard
Direction: In
Protocol: Any
Source: 192.168.100.0/24
Destination: Any
Passt das oder brauche ich da wegen HA noch etwas anderes? Im Tutorial war nur diese eine Regel angegeben.

4.) Für das WAN Interface habe ich eingehende UDP Pakete erlaubt sofern die "WAN address" +  für den WireGuard-Port als Ziel haben. Was genau heißt dann in dem Fall "WAN address"? Ist das dann die physische WAN IP der OPNsense oder ist es die virtuelle WAN IP der OPNsense oder steht das für beides?

Wäre nett wenn da jemand Tipps hat. Ich würde da WireGuard eigentlich schon gerne mit der OPNsense nutzen anstatt ein neues VLAN mit einer neuen VM nur für Wireguard erstellen zu müssen, was dann am Ende ja doch wieder die OPNsense routen müsste, damit man von dem WireGuard-VLAN ins Internet oder auf andere VLAN kommen könnte.

Edit:
Wenn ich in der Fritzbox einen Port-Forward für 192.168.0.4 für Port 51821 erstelle (so wie für alle anderen Dienste die mit HA gut laufen) dann sehe ich einmalig in der OPNsense Firewall Log dieses:
__timestamp__ Sep 10 17:01:30
action [pass]
anchorname
datalen 156
dir [in]
dst 192.168.0.2
dstport 51821
ecn
id 19180
interface vtnet1
interface_name WAN
ipflags DF
ipversion 4
label Allow incoming WireGuards connections
length 176
offset 0
protoname udp
protonum 17
reason match
rid eb61b025f937d46287cd990ef8a616ee
rulenr 145
src Meine.Handy.IP.ADDR
srcport 24103
subrulenr
tos 0x0
ttl 54


Das sehe ich aber auch wirklich nur einmalig. Da kann ich so oft am Handy auf "Connect" klicken, solange ich die Fritzbox nicht reboote kommt der Log nicht noch einmal. Die WireGuard App auf dem Handy empfängt aber keine Pakete und ich sehe auch in OPNsense sonst keine Logs auf dem Port 51821 oder aus dem IP-Bereich 192.168.100.0/24. Auch keinen Handshake oder kein neuer Eintrag unter "List Configuration" im OPNsense Plugin.

Ich habe das inzwischen hinbekommen...hatte unter "VPNs -> Wireguard -> Local -> Edit -> Peers" vergessen meinen Client einzutragen...
Jetzt klappt da Zugriff per VPN auf alle lokale VLANs und Internet mit DNS.

Mir sind da aber immer noch viele Dinge unklar.

1.) Warum sollte man unter "Interfaces -> Assignment" ein Interface für "wg0" hinzufügen? Wenn ich das richtig verstehe ist wg0 mein VPN Tunnel der dann als Interface dient und den ich wie jede andere physische NIC konfigurieren kann. Macht das gleiche aber nicht schon die Firewall Regelkategorie "WireGuard"?
2.) Wenn ich für wg0 ein Interface "WG" anlege aber für dieses keine statische IP vergebe, dann hat das Interface trotzdem als Subnetz mein 192.169.100.0/24 Subnetz was ich bei Wireguard eingestellt habe. "WG net" ist also korrekt nutzbar aber "WG address" gibt es nicht, was aber schon sehr praktisch wäre damit ich Unbound sagen könnte das es auch auf "WG addess" lauschen soll. Gibt es da einen Grund warum einem alle Tutorials sagen man soll das wg0 Interface ohne vergebene IP erstellen?
3.) Wo genau ist jetzt das Problem mit den virtuellen IPs? Ich habe Wireguard bisher nur für meine Master-OPNsense eingerichtet aber da scheint es soweit mit virtuellen IPs zu laufen. Die Fritzbox port-forwarded alle UDP Pakete an die virtuelle WAN IP, die kommen dann bei der Master-OPNsense an. Und das Outbound-NAT für Wireguard läuft bei mir auch über die virtuelle WAN IP.
4.) Bei HA ist es ja wichtig, dass alle Interfaces genau gleich heißen. Das heißt dann auch, dass ich da auf jedenfall auf der anderen OPNsense auch ein Wireguard laufen lassen sollte, damit beide OPNsenses ein wg0 haben?
5.) HA synchronisiert mir ja alle Aliase, Firewall Regeln und Co zwischen beiden OPNsenses. Das heißt dann aber auch, dass da beide Wireguards die selben IPs und Subnetze nutzen müssten. Ich vermute mal das sorgt dann für ordentlich Probleme wenn da 2 mal der slebe Dienst auf der selben IP läuft?
6.) Was genau ist da jetzt der unterschied zwischen dem hinzufügbaren wg0 Interface und dem automatisch hinzugefügten "WireGuard"?