← Alle Anleitungen

Anleitung Linux

Was Sie von uns erhalten

Ersetzen Sie diese Platzhalter durch die Daten, die Sie mit Ihrer Bestellung bei FixedIP.be erhalten haben.

PRIVATE_KEYder private Schlüssel Ihrer Tunnel (geheim halten)
PORTder UDP-Port unserer Tunnelserver
ENDPOINT_1die Adresse unseres Tunnelservers in Antwerpen
SERVER_PUBLIC_KEY_1der öffentliche Schlüssel unseres Tunnelservers in Antwerpen
TUNNEL_IP_1die Tunneladresse Ihres Routers zu Antwerpen
SERVER_TUNNEL_IP_1die Tunneladresse auf unserer Seite in Antwerpen (Gateway)
ENDPOINT_2die Adresse unseres Tunnelservers in Zaventem
SERVER_PUBLIC_KEY_2der öffentliche Schlüssel unseres Tunnelservers in Zaventem
TUNNEL_IP_2die Tunneladresse Ihres Routers zu Zaventem
FIXED_IPIhre feste IPv4-Adresse
FIXED_SUBNETIhr IPv4-Subnetz, zum Beispiel /29
IPV6_PREFIXIhr IPv6-Subnetz
IPV6_LANein /64 aus Ihrem IPv6-Subnetz für Ihr Netzwerk
TUNNEL_IP6_1die IPv6-Tunneladresse Ihres Routers zu Antwerpen
TUNNEL_IP6_2die IPv6-Tunneladresse Ihres Routers zu Zaventem
LAN_HOSTdie interne Adresse Ihres Servers oder NAS, zum Beispiel 192.168.1.10

Mit dieser Anleitung richten Sie Ihre feste IP direkt auf einem Linux-Server ein (Debian, Ubuntu, Fedora, ...). Der Server baut zwei Tunnel auf, einen zu jedem PoP, und schaltet automatisch um, wenn einer ausfällt. Nur der Verkehr von und zu Ihrer festen IP läuft durch die Tunnel; der übrige Verkehr des Servers geht weiterhin über Ihre normale Verbindung.

Möchten Sie einen Linux-Rechner als Router für Ihr gesamtes Netzwerk verwenden? Dann lesen Sie auch Linux als Router weiter unten.

1. WireGuard installieren

# Debian / Ubuntu
sudo apt install wireguard-tools nftables

# Fedora / RHEL
sudo dnf install wireguard-tools nftables

2. Die zwei Tunnel

Legen Sie /etc/wireguard/fixedip1.conf an:

[Interface]
PrivateKey = PRIVATE_KEY
Address = TUNNEL_IP_1/32
ListenPort = 51821
MTU = 1420
# Keine Routen: welcher Verkehr durch den Tunnel geht, legt Schritt 3 fest.
Table = off

[Peer]
PublicKey = SERVER_PUBLIC_KEY_1
Endpoint = ENDPOINT_1:PORT
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Und /etc/wireguard/fixedip2.conf, mit demselben Schlüssel:

[Interface]
PrivateKey = PRIVATE_KEY
Address = TUNNEL_IP_2/32
ListenPort = 51822
MTU = 1420
Table = off

[Peer]
PublicKey = SERVER_PUBLIC_KEY_2
Endpoint = ENDPOINT_2:PORT
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Schützen Sie die Dateien und starten Sie beide Tunnel:

sudo chmod 600 /etc/wireguard/fixedip1.conf /etc/wireguard/fixedip2.conf
sudo systemctl enable --now wg-quick@fixedip1 wg-quick@fixedip2

3. Ihre feste IP und das Routing

Die feste IP kommt auf ein eigenes Dummy-Interface, unabhängig von beiden Tunneln. Antworten gehen über den Tunnel zurück, über den die Verbindung hereinkam; neuer Verkehr von Ihrer festen IP geht über den Tunnel, der funktioniert. Legen Sie /usr/local/sbin/fixedip-up an:

#!/bin/sh
# Feste IP auf einem eigenen Interface
ip link add fixedip0 type dummy 2>/dev/null
ip addr replace FIXED_IP/32 dev fixedip0
ip link set fixedip0 up

# Antworten über den Tunnel, über den die Verbindung hereinkam
nft -f - <<'NFT'
table inet fixedip
delete table inet fixedip
table inet fixedip {
    chain pre {
        type filter hook prerouting priority mangle; policy accept;
        iifname "fixedip1" ct state new ct mark set 1
        iifname "fixedip2" ct state new ct mark set 2
    }
    chain out {
        type route hook output priority mangle; policy accept;
        ct mark != 0 meta mark set ct mark
    }
}
NFT
ip route replace default dev fixedip1 table 101
ip route replace default dev fixedip2 table 102
ip rule del fwmark 1 table 101 2>/dev/null; ip rule add fwmark 1 table 101 priority 100
ip rule del fwmark 2 table 102 2>/dev/null; ip rule add fwmark 2 table 102 priority 101
ip rule del from FIXED_IP table 100 2>/dev/null; ip rule add from FIXED_IP table 100 priority 102

# Neuer Verkehr: PoP 1, wenn er antwortet, sonst PoP 2
/usr/local/sbin/fixedip-failover

Und /usr/local/sbin/fixedip-failover:

#!/bin/sh
if ping -c 2 -W 2 -I fixedip1 SERVER_TUNNEL_IP_1 >/dev/null 2>&1; then
    ip route replace default dev fixedip1 table 100
else
    ip route replace default dev fixedip2 table 100
fi

Machen Sie beide ausführbar und lassen Sie sie automatisch laufen:

sudo chmod 755 /usr/local/sbin/fixedip-up /usr/local/sbin/fixedip-failover

/etc/systemd/system/fixedip.service:

[Unit]
Description=fixedip.be fixed IP
After=wg-quick@fixedip1.service wg-quick@fixedip2.service
Requires=wg-quick@fixedip1.service wg-quick@fixedip2.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/sbin/fixedip-up

[Install]
WantedBy=multi-user.target

/etc/systemd/system/fixedip-failover.timer (mit einer gleichnamigen .service, die ExecStart=/usr/local/sbin/fixedip-failover ausführt, Type=oneshot):

[Unit]
Description=fixedip.be failover check

[Timer]
OnBootSec=30
OnUnitActiveSec=15

[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now fixedip.service fixedip-failover.timer

4. Ihre Dienste

Ein Dienst, der auf allen Adressen lauscht (0.0.0.0 oder ::), ist sofort über Ihre feste IP erreichbar. Soll ein Dienst nur auf Ihrer festen IP lauschen, binden Sie ihn an FIXED_IP.

Vergessen Sie Ihre Firewall nicht. Mit ufw zum Beispiel:

sudo ufw allow in on fixedip1 to FIXED_IP port 443 proto tcp
sudo ufw allow in on fixedip2 to FIXED_IP port 443 proto tcp

Erlauben Sie Ping auf den Tunneln (Standard bei ufw): Unsere Tunnelserver pingen TUNNEL_IP_1 und TUNNEL_IP_2, um zu wissen, welcher Tunnel funktioniert. Ohne Antwort leiten wir Ihre feste IP nicht zu diesem Tunnel.

5. Auch ausgehend mit Ihrer festen IP (optional)

Für ein einzelnes Programm wählen Sie die Quelladresse selbst:

curl --interface FIXED_IP https://ifconfig.me

Soll der gesamte ausgehende Verkehr des Servers über Ihre feste IP laufen? Dann fügen Sie am Ende von fixedip-failover in beiden Zweigen eine Standardroute mit src FIXED_IP hinzu, zum Beispiel ip route replace default dev fixedip1 src FIXED_IP metric 50. Beachten Sie, dass der Server dann auch seine Updates und seinen DNS-Verkehr über die Tunnel abwickelt.

6. IPv6

Fügen Sie in beiden Konfigurationsdateien die IPv6-Tunneladresse zu Address hinzu (TUNNEL_IP6_1/128 und TUNNEL_IP6_2/128), setzen Sie eine Adresse aus Ihrem Subnetz auf fixedip0 und fügen Sie dieselben Regeln für IPv6 hinzu:

ip -6 addr replace IPV6_LAN::1/128 dev fixedip0
ip -6 route replace default dev fixedip1 table 101
ip -6 route replace default dev fixedip2 table 102
ip -6 rule add fwmark 1 table 101 priority 100
ip -6 rule add fwmark 2 table 102 priority 101
ip -6 rule add from IPV6_PREFIX table 100 priority 102

und in fixedip-failover jeweils auch ip -6 route replace default dev fixedip1 table 100 (bzw. fixedip2).

Linux als Router

Verwenden Sie den Rechner als Router für Ihr Netzwerk? Dann aktivieren Sie Forwarding (net.ipv4.ip_forward=1) und fügen eine DNAT-Regel von FIXED_IP auf LAN_HOST hinzu. Da die Antworten von LAN_HOST über das Netzwerk hereinkommen, brauchen Sie die Markierung auch in prerouting:

nft add chain inet fixedip nat '{ type nat hook prerouting priority dstnat; }'
nft add rule inet fixedip nat ip daddr FIXED_IP dnat ip to LAN_HOST
nft add rule inet fixedip pre ct mark != 0 meta mark set ct mark

Haben Sie ein Subnetz (FIXED_SUBNET)? Dann legen Sie es auf ein LAN-Interface und ersetzen from FIXED_IP durch from FIXED_SUBNET. Die Geräte verwenden ihre öffentliche Adresse dann direkt, ohne NAT.

Überprüfen

sudo wg show
ip rule
ip route show table 100
curl --interface FIXED_IP https://ifconfig.me

Bei beiden Tunneln muss latest handshake einen aktuellen Zeitpunkt zeigen, Tabelle 100 zeigt auf fixedip1, und der curl-Befehl gibt Ihre feste IP zurück.

Failover testen: sudo systemctl stop wg-quick@fixedip1. Innerhalb einer halben Minute zeigt Tabelle 100 auf fixedip2 und Ihre feste IP bleibt erreichbar. Starten Sie den Tunnel danach wieder.

Rückgängig machen

sudo systemctl disable --now fixedip-failover.timer fixedip.service wg-quick@fixedip1 wg-quick@fixedip2
sudo ip link del fixedip0
sudo nft delete table inet fixedip
sudo rm /etc/wireguard/fixedip1.conf /etc/wireguard/fixedip2.conf /usr/local/sbin/fixedip-up /usr/local/sbin/fixedip-failover
sudo rm /etc/systemd/system/fixedip.service /etc/systemd/system/fixedip-failover.*

Probleme?

  • Kein Handshake: Prüfen Sie ENDPOINT_1/ENDPOINT_2, PORT und die Schlüssel. Lassen Sie ausgehenden UDP-Verkehr zu PORT zu.
  • Handshake ok, aber Verbindungen hängen: Setzen Sie MTU = 1360 in beiden Dateien. Bei 4G/5G und manchen Glasfaser- oder Starlink-Verbindungen ist 1420 zu viel.
  • Eingehende Pakete kommen an, aber nichts geht zurück: Prüfen Sie mit ip rule, ob die Regeln vorhanden sind, und setzen Sie gegebenenfalls net.ipv4.conf.all.rp_filter=2.

Kommen Sie nicht weiter? Schreiben Sie uns an info@fixedip.be

Bereit für Ihre feste IP?

Starten Sie noch heute und seien Sie überall erreichbar.