Anleitung OpenWrt
Was Sie von uns erhalten
Ersetzen Sie diese Platzhalter durch die Daten, die Sie mit Ihrer Bestellung bei FixedIP.be erhalten haben.
PRIVATE_KEY | der private Schlüssel Ihrer Tunnel (geheim halten) |
PORT | der UDP-Port unserer Tunnelserver |
ENDPOINT_1 | die Adresse unseres Tunnelservers in Antwerpen |
SERVER_PUBLIC_KEY_1 | der öffentliche Schlüssel unseres Tunnelservers in Antwerpen |
TUNNEL_IP_1 | die Tunneladresse Ihres Routers zu Antwerpen |
SERVER_TUNNEL_IP_1 | die Tunneladresse auf unserer Seite in Antwerpen (Gateway) |
ENDPOINT_2 | die Adresse unseres Tunnelservers in Zaventem |
SERVER_PUBLIC_KEY_2 | der öffentliche Schlüssel unseres Tunnelservers in Zaventem |
TUNNEL_IP_2 | die Tunneladresse Ihres Routers zu Zaventem |
FIXED_IP | Ihre feste IPv4-Adresse |
FIXED_SUBNET | Ihr IPv4-Subnetz, zum Beispiel /29 |
IPV6_PREFIX | Ihr IPv6-Subnetz |
IPV6_LAN | ein /64 aus Ihrem IPv6-Subnetz für Ihr Netzwerk |
TUNNEL_IP6_1 | die IPv6-Tunneladresse Ihres Routers zu Antwerpen |
TUNNEL_IP6_2 | die IPv6-Tunneladresse Ihres Routers zu Zaventem |
LAN_HOST | die interne Adresse Ihres Servers oder NAS, zum Beispiel 192.168.1.10 |
Mit dieser Anleitung richten Sie Ihre feste IP auf einem Router mit OpenWrt 23.05 oder 24.10 ein (firewall4/nftables). Der Router baut zwei Tunnel auf, einen zu jedem PoP, und schaltet automatisch um, wenn einer ausfällt. Nur der Verkehr Ihrer festen IP läuft durch die Tunnel; der gesamte übrige Verkehr geht weiterhin über Ihr normales WAN.
Ihre feste IP kommt auf dem Router an und wird an ein Gerät in Ihrem Netzwerk (LAN_HOST) weitergeleitet. Alle Befehle führen Sie per SSH auf dem Router aus.
1. Die Pakete
opkg update
opkg install wireguard-tools luci-proto-wireguard
2. Die zwei Tunnel
uci set network.fixedip1=interface
uci set network.fixedip1.proto='wireguard'
uci set network.fixedip1.private_key='PRIVATE_KEY'
uci set network.fixedip1.listen_port='51821'
uci set network.fixedip1.mtu='1420'
uci add_list network.fixedip1.addresses='TUNNEL_IP_1/32'
uci add_list network.fixedip1.addresses='FIXED_IP/32'
uci set network.fixedip1_peer=wireguard_fixedip1
uci set network.fixedip1_peer.description='fixedip.be PoP 1'
uci set network.fixedip1_peer.public_key='SERVER_PUBLIC_KEY_1'
uci set network.fixedip1_peer.endpoint_host='ENDPOINT_1'
uci set network.fixedip1_peer.endpoint_port='PORT'
uci set network.fixedip1_peer.persistent_keepalive='25'
uci add_list network.fixedip1_peer.allowed_ips='0.0.0.0/0'
uci add_list network.fixedip1_peer.allowed_ips='::/0'
uci set network.fixedip1_peer.route_allowed_ips='0'
uci set network.fixedip2=interface
uci set network.fixedip2.proto='wireguard'
uci set network.fixedip2.private_key='PRIVATE_KEY'
uci set network.fixedip2.listen_port='51822'
uci set network.fixedip2.mtu='1420'
uci add_list network.fixedip2.addresses='TUNNEL_IP_2/32'
uci set network.fixedip2_peer=wireguard_fixedip2
uci set network.fixedip2_peer.description='fixedip.be PoP 2'
uci set network.fixedip2_peer.public_key='SERVER_PUBLIC_KEY_2'
uci set network.fixedip2_peer.endpoint_host='ENDPOINT_2'
uci set network.fixedip2_peer.endpoint_port='PORT'
uci set network.fixedip2_peer.persistent_keepalive='25'
uci add_list network.fixedip2_peer.allowed_ips='0.0.0.0/0'
uci add_list network.fixedip2_peer.allowed_ips='::/0'
uci set network.fixedip2_peer.route_allowed_ips='0'
route_allowed_ips='0' sorgt dafür, dass OpenWrt keine Standardroute durch die Tunnel legt: Ihr normaler Verkehr bleibt, wo er war. Ihre feste IP liegt auf fixedip1; ein WireGuard-Interface bleibt aktiv, auch wenn PoP 1 kurz nicht erreichbar ist.
3. Routing
Antworten gehen über den Tunnel zurück, über den die Verbindung hereinkam (Tabellen 101 und 102). Neuer Verkehr von Ihrer festen IP verwendet Tabelle 100, die in Schritt 6 auf den funktionierenden Tunnel zeigt.
uci set network.fixedip1_route=route
uci set network.fixedip1_route.interface='fixedip1'
uci set network.fixedip1_route.target='0.0.0.0/0'
uci set network.fixedip1_route.table='101'
uci set network.fixedip2_route=route
uci set network.fixedip2_route.interface='fixedip2'
uci set network.fixedip2_route.target='0.0.0.0/0'
uci set network.fixedip2_route.table='102'
uci set network.fixedip_mark1=rule
uci set network.fixedip_mark1.mark='0x101'
uci set network.fixedip_mark1.lookup='101'
uci set network.fixedip_mark2=rule
uci set network.fixedip_mark2.mark='0x102'
uci set network.fixedip_mark2.lookup='102'
uci set network.fixedip_src=rule
uci set network.fixedip_src.src='FIXED_IP/32'
uci set network.fixedip_src.lookup='100'
uci commit network
/etc/init.d/network reload
4. Firewall-Zone und Weiterleitung
uci add firewall zone
uci set firewall.@zone[-1].name='fixedip'
uci add_list firewall.@zone[-1].network='fixedip1'
uci add_list firewall.@zone[-1].network='fixedip2'
uci set firewall.@zone[-1].input='REJECT'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='REJECT'
uci add firewall redirect
uci set firewall.@redirect[-1].name='fixedip-https'
uci set firewall.@redirect[-1].src='fixedip'
uci set firewall.@redirect[-1].src_dip='FIXED_IP'
uci set firewall.@redirect[-1].src_dport='443'
uci set firewall.@redirect[-1].dest='lan'
uci set firewall.@redirect[-1].dest_ip='LAN_HOST'
uci set firewall.@redirect[-1].dest_port='443'
uci set firewall.@redirect[-1].proto='tcp'
uci set firewall.@redirect[-1].target='DNAT'
uci commit firewall
Erlauben Sie außerdem Ping aus den Tunneln. Unsere Tunnelserver pingen jeden Tunnel, um zu wissen, welcher funktioniert; ohne Antwort leiten wir Ihre feste IP nicht zu diesem Tunnel.
uci add firewall rule
uci set firewall.@rule[-1].name='fixedip-ping'
uci set firewall.@rule[-1].src='fixedip'
uci set firewall.@rule[-1].proto='icmp'
uci set firewall.@rule[-1].icmp_type='echo-request'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
5. Die Markierung für Antworten Ihres Servers
Wenn Ihr Server antwortet, hat dieses Paket noch die interne Adresse LAN_HOST als Absender. Um es über den richtigen Tunnel zurückzuschicken, markieren Sie die Verbindung, wenn sie hereinkommt. Legen Sie /etc/nftables.d/10-fixedip.nft an:
chain fixedip_mark {
type filter hook prerouting priority mangle; policy accept;
iifname "fixedip1" ct state new ct mark set 0x101
iifname "fixedip2" ct state new ct mark set 0x102
ct mark { 0x101, 0x102 } meta mark set ct mark
}
/etc/init.d/firewall restart
Verwenden Sie bereits Markierungen (zum Beispiel für mwan3 oder SQM)? Dann wählen Sie Werte, die noch frei sind.
6. Automatisches Failover
Ein kleines Skript wählt jede Minute den Tunnel für neuen Verkehr: PoP 1, wenn er antwortet, sonst PoP 2. Legen Sie /usr/sbin/fixedip-failover an:
#!/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
chmod 755 /usr/sbin/fixedip-failover
echo '* * * * * /usr/sbin/fixedip-failover' >> /etc/crontabs/root
/etc/init.d/cron restart
/usr/sbin/fixedip-failover
Eingehende Verbindungen brauchen das Skript nicht: Sie kommen über den Tunnel herein, der funktioniert, und die Antworten nehmen denselben Weg.
7. Auch ausgehend mit Ihrer festen IP (optional)
uci set network.fixedip_host=rule
uci set network.fixedip_host.src='LAN_HOST/32'
uci set network.fixedip_host.lookup='100'
uci commit network
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='lan'
uci set firewall.@forwarding[-1].dest='fixedip'
uci add firewall redirect
uci set firewall.@redirect[-1].name='fixedip-snat'
uci set firewall.@redirect[-1].src='lan'
uci set firewall.@redirect[-1].dest='fixedip'
uci set firewall.@redirect[-1].src_ip='LAN_HOST'
uci set firewall.@redirect[-1].src_dip='FIXED_IP'
uci set firewall.@redirect[-1].proto='all'
uci set firewall.@redirect[-1].target='SNAT'
uci commit firewall
/etc/init.d/network reload
/etc/init.d/firewall restart
8. IPv6
Fügen Sie TUNNEL_IP6_1/128 und TUNNEL_IP6_2/128 zu den Adressen von fixedip1 und fixedip2 hinzu, setzen Sie ein /64 auf Ihr LAN und legen Sie dieselben Regeln für IPv6 an:
uci add_list network.lan.ip6addr='IPV6_LAN::1/64'
uci set network.fixedip_src6=rule6
uci set network.fixedip_src6.src='IPV6_PREFIX'
uci set network.fixedip_src6.lookup='100'
uci commit network
/etc/init.d/network reload
Fügen Sie in fixedip-failover in beiden Zweigen auch ip -6 route replace default dev fixedip1 table 100 (bzw. fixedip2) hinzu. Öffnen Sie eingehenden IPv6-Verkehr pro Gerät mit einer traffic rule von Zone fixedip nach lan.
Mehrere Adressen
Haben Sie ein Subnetz (FIXED_SUBNET)? Dann können Sie es auf zwei Arten nutzen:
- Über Ihren Router (alle Adressen nutzbar): Fügen Sie jede Adresse als
/32zufixedip1hinzu und legen Sie pro Adresse einen Port Forward an wie in Schritt 4. - Direkt in Ihrem Netzwerk: Legen Sie das Subnetz auf ein eigenes Interface oder VLAN mit der ersten nutzbaren Adresse und ersetzen Sie in Schritt 3
FIXED_IP/32durchFIXED_SUBNET. Die Geräte verwenden ihre öffentliche Adresse direkt, ohne NAT; öffnen Sie mit traffic rules von Zonefixedip, was hereinkommen darf.
Überprüfen
wg show
ip rule
ip route show table 100
Bei beiden Tunneln muss latest handshake einen aktuellen Zeitpunkt zeigen, und Tabelle 100 zeigt auf fixedip1. Testen Sie danach von außen, zum Beispiel mit Ihrem Smartphone über mobile Daten: https://FIXED_IP muss bei Ihrem Server ankommen.
Failover testen: Blockieren Sie vorübergehend den ausgehenden UDP-Verkehr zu ENDPOINT_1 (zum Beispiel mit einer Traffic Rule) und warten Sie eine Minute: Tabelle 100 zeigt auf fixedip2 und Ihre feste IP bleibt erreichbar. Heben Sie die Blockierung danach wieder auf. Verwenden Sie dafür nicht ifdown fixedip1: Ihre feste IP liegt auf diesem Interface.
Rückgängig machen
for s in fixedip1 fixedip1_peer fixedip2 fixedip2_peer fixedip1_route fixedip2_route fixedip_mark1 fixedip_mark2 fixedip_src fixedip_host fixedip_src6; do uci -q delete network.$s; done
uci commit network
rm /etc/nftables.d/10-fixedip.nft /usr/sbin/fixedip-failover
sed -i '/fixedip-failover/d' /etc/crontabs/root
Entfernen Sie danach in LuCI (Network › Firewall) die Zone fixedip und die zugehörigen Port Forwards und starten Sie Netzwerk, Firewall und Cron neu.
Probleme?
- Kein Handshake: Prüfen Sie
ENDPOINT_1/ENDPOINT_2,PORTund die Schlüssel. - Handshake ok, aber Verbindungen hängen: Setzen Sie
mtufür beide Tunnel auf1360. - Von außen kommt nichts zurück: Prüfen Sie mit
nft list chain inet fw4 fixedip_mark, ob die Markierung zählt, und mitip rule, ob die Regeln für0x101/0x102vorhanden sind.
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.