Lange setze ich bereits OpenWrt ein, habe bisher jedoch einen physikalischen Server dafür eingesetzt, und zuvor ein Raspberry Pi4.
Nun habe ich den alten 1366er Server mit 2 Xeons abgeschafft, und OpenWrt läuft vernünftig in einer KVM Instanz auf meinem NAS, da ist genug Dampf hinter. Ich habe eine Intel i340-T4 durchgereicht an die OpenWrt VM.
Weiterhin möchte ich für den Fall eines Ausfalls des Servers ein Backup in Form meines Raspberry Pis nutzen, die Geschwindigkeit mit 600-700mbps reicht dafür aus.
Dafür muss ich jedoch ein VRRP Cluster aufbauen.
https://openwrt.org/docs/guide-user/net ... ailability
Das ist der Guide den es aktuell im OpenWrt Wiki dazu gibt. Der funktioniert so leider alles andere als vernünftig, bzw. mit ein paar motivierten Menschen im IRC komme ich aktuell weiter da vielleicht mal ein aktuelles Konzept zu schaffen, welches auch mal funktioniert.
Ansonsten gibt es noch einige weitere Probleme:
Gibt es eine vernünftige Dokumentation zu keepalived? Haltet ihr BFD für notwendig?
Folgende Ansätze habe ich bisher durchdacht.
Hauptproblem: Auf WAN Seite sitzt eine Fritzbox, und die braucht zur Zuordnung von Portfreigaben und IPv6-PD eine MAC Adresse. Daher muss ich es irgendwie hinkriegen, dass beide Router irgendwie die gleiche WAN MAC haben, ggf. auch ne virtuelle MAC,
Code: Alles auswählen
use_vmac
Ansatz 1:
Der Master Router soll seine Interface regulär aktiv halten.
Backup Router soll von der Konfiguration her identisch sein, beide sollen keine virtuelle IP haben welche auf xxx.xxx.xxx.1 zeigt.
Jedoch soll der Backup Router die interfaces ber ifdown ausgeschaltet haben, solange der Master Router verfügbar ist, das gleiche gilt für das WAN Interface.
Auf dem WAN Interface soll die gleiche MAC Adresse drauf sein , sowohl bei Master Router und Backup Router. Grund dafür: Prefix Delegation und Portfreigaben für die Fritzbox sollen aktiv bleiben.
Was haltet ihr von diesem Ansatz?
Ansatz 2:
Master und Backup Router haben beide eine keepalived Instanz am laufen, wobei der Master die .1 Adresse im jeweiligen Subnet anbietet.
Beide Router beantworten DHCP Requests, und beide Router müssen syncen (Klappt nur mäßig, habe festgestellt, die initial erwähnte dhcp.leases ist tatsächlich nicht alles was benötigt wird um ein korrektes Funktionieren der Auflösung zu gewährleisten).
Auf WAN Seite nimmt der Master Router die .2 ein, der Backup Router die .3, und die virtuelle IP Adresse ist die .4.
Die reine Konnektivität, ohne Auflösung der internen Hostnames, und ohne IPv6 , und IPv6-PD klappt in diesem Fall prima, aber das ist so nicht optimal.
Primär möchte ich das Problem mit der IPv6-PD und den Portfreigaben lösen, damit diese auch funktionieren wenn ein Router ausfällt, dannach möchte ich mich um die DHCP und DNS Thematik kümmern.
Habt ihr vielleicht weitere Ideen?
In einigen älteren Blog Posts von einigen habe ich gesehen, dass die Benutzung von macvlan Interfaces bei dem Problem auf der WAN Seite Abhilfe schaffen kann, weiß jemand was dazu?
Hier mal die keepalived Configs von beiden Routern, einmal Master, und dann Backup.
Weiterhin nutze ich 2 WAN Anbindungen, wobei die eine nur im Falle eines Ausfalls der primären WAN Anbindung zum Einsatz kommt. (Primär Vodafone Kabel, Backup DSL 16k).
Vielleicht hat ja jemand Ideen, freue mich auf eine angeregte Diskussion

Code: Alles auswählen
! failover E1 and I1 at the same time
vrrp_sync_group G1 {
group {
E1
E2
I1
I2
I3
I4
I5
I6
}
}
! internal
vrrp_instance I1 {
state MASTER
interface bonding-i0.3
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.3.1/24
}
authentication {
auth_type PASS
auth_pass secret
}
preempt
}
vrrp_instance I2 {
state MASTER
interface bonding-i0.200
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.200.1/24
}
authentication {
auth_type PASS
auth_pass secret
}
preempt
}
vrrp_instance I3 {
state MASTER
interface bonding-i0.320
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
172.20.192.1/19
}
authentication {
auth_type PASS
auth_pass secret
}
preempt
}
vrrp_instance I4 {
state MASTER
interface bonding-i0.340
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
172.20.224.1/19
}
authentication {
auth_type PASS
auth_pass secret
}
preempt
}
vrrp_instance I5 {
state MASTER
interface bonding-i0.2
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.2.1/24
}
authentication {
auth_type PASS
auth_pass secret
}
preempt
}
vrrp_instance I6 {
state MASTER
interface bonding-i0.110
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
172.20.32.1/19
}
authentication {
auth_type PASS
auth_pass secret
}
preempt
}
! external
vrrp_instance E1 {
state MASTER
interface bonding-i0.2100
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.178.4/24
}
virtual_routes {
src 192.168.178.4 to 0.0.0.0/0 via 192.168.178.1 dev bonding-i0.2100 metric 5
}
authentication {
auth_type PASS
auth_pass secret
}
preempt
}
vrrp_instance E2 {
state MASTER
interface bonding-i0.1100
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.154.4/24
}
virtual_routes {
src 192.168.154.4 to 0.0.0.0/0 via 192.168.154.1 dev bonding-i0.1100 metric 5
}
authentication {
auth_type PASS
auth_pass secret
}
preempt
}
Code: Alles auswählen
! failover E1 and I1 at the same time
vrrp_sync_group G1 {
group {
E1
E2
I1
I2
I3
I4
I5
I6
}
}
! internal
vrrp_instance I1 {
state BACKUP
interface eth0.3
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.3.1/24
}
authentication {
auth_type PASS
auth_pass secret
}
nopreempt
}
vrrp_instance I2 {
state BACKUP
interface eth0.200
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.200.1/24
}
authentication {
auth_type PASS
auth_pass secret
}
nopreempt
}
vrrp_instance I3 {
state BACKUP
interface eth0.320
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
172.20.192.1/19
}
authentication {
auth_type PASS
auth_pass secret
}
nopreempt
}
vrrp_instance I4 {
state BACKUP
interface eth0.340
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
172.20.224.1/19
}
authentication {
auth_type PASS
auth_pass secret
}
nopreempt
}
vrrp_instance I5 {
state BACKUP
interface eth0.2
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.2.1/24
}
authentication {
auth_type PASS
auth_pass secret
}
nopreempt
}
vrrp_instance I6 {
state BACKUP
interface eth0.110
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
172.20.32.1/19
}
authentication {
auth_type PASS
auth_pass secret
}
nopreempt
}
! external
vrrp_instance E1 {
state BACKUP
interface eth0.2100
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.178.4/24
}
virtual_routes {
src 192.168.178.4 to 0.0.0.0/0 via 192.168.178.1 dev eth0.2100 metric 5
}
authentication {
auth_type PASS
auth_pass secret
}
nopreempt
}
vrrp_instance E2 {
state BACKUP
interface eth0.1100
virtual_router_id 51
priority 99
advert_int 1
virtual_ipaddress {
192.168.154.4/24
}
virtual_routes {
src 192.168.154.4 to 0.0.0.0/0 via 192.168.154.1 dev eth0.1100 metric 5
}
authentication {
auth_type PASS
auth_pass secret
}
nopreempt
}