Guide Linux
Ce que vous recevez de nous
Remplacez ces repères par les données reçues lors de votre commande chez FixedIP.be.
PRIVATE_KEY | la clé privée de vos tunnels (à garder secrète) |
PORT | le port UDP de nos serveurs de tunnel |
ENDPOINT_1 | l'adresse de notre serveur de tunnel à Anvers |
SERVER_PUBLIC_KEY_1 | la clé publique de notre serveur de tunnel à Anvers |
TUNNEL_IP_1 | l'adresse de tunnel de votre routeur vers Anvers |
SERVER_TUNNEL_IP_1 | l'adresse de tunnel de notre côté à Anvers (passerelle) |
ENDPOINT_2 | l'adresse de notre serveur de tunnel à Zaventem |
SERVER_PUBLIC_KEY_2 | la clé publique de notre serveur de tunnel à Zaventem |
TUNNEL_IP_2 | l'adresse de tunnel de votre routeur vers Zaventem |
FIXED_IP | votre adresse IPv4 fixe |
FIXED_SUBNET | votre sous-réseau IPv4, par exemple /29 |
IPV6_PREFIX | votre sous-réseau IPv6 |
IPV6_LAN | un /64 de votre sous-réseau IPv6 pour votre réseau |
TUNNEL_IP6_1 | l'adresse de tunnel IPv6 de votre routeur vers Anvers |
TUNNEL_IP6_2 | l'adresse de tunnel IPv6 de votre routeur vers Zaventem |
LAN_HOST | l'adresse interne de votre serveur ou NAS, par exemple 192.168.1.10 |
Ce guide vous permet de configurer votre IP fixe directement sur un serveur Linux (Debian, Ubuntu, Fedora, ...). Le serveur établit deux tunnels, un vers chaque PoP, et bascule automatiquement si l'un d'eux tombe. Seul le trafic depuis et vers votre IP fixe passe par les tunnels ; le reste du trafic du serveur continue de passer par votre connexion habituelle.
Vous souhaitez utiliser une machine Linux comme routeur pour tout votre réseau ? Lisez alors aussi Linux comme routeur en bas de page.
1. Installer WireGuard
# Debian / Ubuntu
sudo apt install wireguard-tools nftables
# Fedora / RHEL
sudo dnf install wireguard-tools nftables
2. Les deux tunnels
Créez /etc/wireguard/fixedip1.conf :
[Interface]
PrivateKey = PRIVATE_KEY
Address = TUNNEL_IP_1/32
ListenPort = 51821
MTU = 1420
# Pas de routes : l'étape 3 détermine quel trafic passe par le tunnel.
Table = off
[Peer]
PublicKey = SERVER_PUBLIC_KEY_1
Endpoint = ENDPOINT_1:PORT
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Et /etc/wireguard/fixedip2.conf, avec la même clé :
[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
Protégez les fichiers et démarrez les deux tunnels :
sudo chmod 600 /etc/wireguard/fixedip1.conf /etc/wireguard/fixedip2.conf
sudo systemctl enable --now wg-quick@fixedip1 wg-quick@fixedip2
3. Votre IP fixe et le routage
L'IP fixe est placée sur sa propre interface dummy, indépendante des deux tunnels. Les réponses repartent par le tunnel par lequel la connexion est entrée ; le nouveau trafic depuis votre IP fixe passe par le tunnel qui fonctionne. Créez /usr/local/sbin/fixedip-up :
#!/bin/sh
# IP fixe sur sa propre interface
ip link add fixedip0 type dummy 2>/dev/null
ip addr replace FIXED_IP/32 dev fixedip0
ip link set fixedip0 up
# Réponses via le tunnel par lequel la connexion est entrée
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
# Nouveau trafic : PoP 1 s'il répond, sinon PoP 2
/usr/local/sbin/fixedip-failover
Et /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
Rendez les deux exécutables et faites-les tourner automatiquement :
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 (avec un .service du même nom qui exécute ExecStart=/usr/local/sbin/fixedip-failover, 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. Vos services
Un service qui écoute sur toutes les adresses (0.0.0.0 ou ::) est immédiatement joignable sur votre IP fixe. Si vous voulez qu'un service écoute uniquement sur votre IP fixe, liez-le à FIXED_IP.
N'oubliez pas votre pare-feu. Avec ufw, par exemple :
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
Autorisez le ping sur les tunnels (c'est le cas par défaut avec ufw) : nos serveurs de tunnel pinguent TUNNEL_IP_1 et TUNNEL_IP_2 pour savoir quel tunnel fonctionne. Sans réponse, nous n'envoyons pas votre IP fixe vers ce tunnel.
5. Sortir aussi avec votre IP fixe (facultatif)
Pour un seul programme, vous choisissez vous-même l'adresse source :
curl --interface FIXED_IP https://ifconfig.me
Tout le trafic sortant du serveur doit-il passer par votre IP fixe ? Ajoutez alors, à la fin de fixedip-failover, dans les deux branches, une route par défaut avec src FIXED_IP, par exemple ip route replace default dev fixedip1 src FIXED_IP metric 50. Tenez compte du fait que le serveur fera alors aussi passer ses mises à jour et son trafic DNS par les tunnels.
6. IPv6
Dans les deux fichiers de configuration, ajoutez l'adresse de tunnel IPv6 à Address (TUNNEL_IP6_1/128 et TUNNEL_IP6_2/128), placez une adresse de votre sous-réseau sur fixedip0 et ajoutez les mêmes règles pour IPv6 :
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
et, dans fixedip-failover, chaque fois aussi ip -6 route replace default dev fixedip1 table 100 (ou fixedip2).
Linux comme routeur
Vous utilisez la machine comme routeur pour votre réseau ? Activez alors le forwarding (net.ipv4.ip_forward=1) et ajoutez une règle DNAT de FIXED_IP vers LAN_HOST. Comme les réponses de LAN_HOST arrivent par le réseau, vous avez aussi besoin du marquage dans 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
Vous avez un sous-réseau (FIXED_SUBNET) ? Placez-le alors sur une interface LAN et remplacez from FIXED_IP par from FIXED_SUBNET. Les appareils utilisent alors directement leur adresse publique, sans NAT.
Vérification
sudo wg show
ip rule
ip route show table 100
curl --interface FIXED_IP https://ifconfig.me
Pour les deux tunnels, latest handshake doit afficher une heure récente, la table 100 pointe vers fixedip1, et la commande curl renvoie votre IP fixe.
Tester le basculement : sudo systemctl stop wg-quick@fixedip1. En moins d'une demi-minute, la table 100 pointe vers fixedip2 et votre IP fixe reste joignable. Redémarrez ensuite le tunnel.
Annulation
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.*
Des problèmes ?
- Pas de handshake : vérifiez
ENDPOINT_1/ENDPOINT_2,PORTet les clés. Autorisez le trafic UDP sortant versPORT. - Handshake OK, mais les connexions restent bloquées : mettez
MTU = 1360dans les deux fichiers. Sur la 4G/5G et certaines connexions fibre ou Starlink, 1420 est trop élevé. - Les paquets entrants arrivent mais rien ne repart : vérifiez avec
ip ruleque les règles sont bien présentes et, si nécessaire, metteznet.ipv4.conf.all.rp_filter=2.
Vous n'y arrivez pas ? Écrivez-nous à info@fixedip.be
Prêt pour votre IP fixe ?
Commencez dès aujourd'hui et soyez joignable partout.