Bonjour à tous,
Edit : Problème résolu : tutoriel à venirTuto à venir :
https://lafibre.info/mikrotik/tuto-acceder-a-service-auto-heberge-en-4g-via-vps-et-wireguard-sur-mikrotik/Je me permets de solliciter votre aide concernant un problème de redirection de port avec ma configuration VPN WireGuard, VPS et routeur MikroTik. Je vous décris ci-dessous les détails de ma configuration et quelques une des étapes que j'ai déjà tentées pour résoudre le problème.
Mon objectif :
Lorsque ma fibre est en panne je souhaite que mes services https sur mon synology soit accessible via l'IP du VPS et non plus depuis mon ip standard fibre
Configuration actuelle :
J'ai un routeur MikroTik CCR2116 (RouterOS v7.9b rc3) connecté à une fibre Orange sur un port sfp4 et accessible à mon LAN via br-wan (config de Gnubyte) de ce coté là tout est OK.
En parallèle, j'ai une connexion 4G sur un Modem Netgear L1200 (son interface est accessible via mon lan à l'adresse 192.168.5.1) configuré en mode pont qui délivre donc a mon routeur Mikrotik une adresse de type 10.X.X.X via le reseau d'Orange. De ce coté là tout est OK. Coté Synology le par-feu est désactive.
Par ailleurs j'ai un VPS OVH qui fait office de serveur WireGuard. Le VPS possède une interface publique (ens3) et une interface VPN WireGuard (wg0).
Mon routeur MikroTik (RouterOS v7.9b rc3) est configuré pour établir une connexion VPN avec le serveur WireGuard sur mon VPS. L'interface WireGuard sur le routeur MikroTik est appelée "wireguard".
Topo reseau:
90.X.X.X Mon WAN - WAN Fibre Orange
10.X.X.X - WAN 4G Orange - Modem LM1200 en pont
215.X.X.X - IP Publique VPS
192.168.1.0/24 - LAN
192.168.1.50 - Synology NAS
192.168.5.1 - GUI modem LM1200
192.168.100.0/24 - Mon VPN WireGuard
192.168.100.100 - IP de l'interface WireGuard - VPS Server OVH
192.168.100.105 - IP de l'interface WireGuard - Mikrotik
Test ping depuis mon Mikrotik en 4G vers VPSping 8.8.8.8
0 8.8.8.8 56 110 41ms542us
1 8.8.8.8 56 110 38ms769us
2 8.8.8.8 56 110 28ms738us ping 192.168.100.105
ping 192.168.100.100
0 192.168.100.100 56 64 34ms443us
1 192.168.100.100 56 64 42ms655us
2 192.168.100.100 56 64 37ms27us
Test ping depuis mon VPS (vers Mikrotik en 4G - fibre désactive)ping 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=111 time=4.80 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=111 time=4.86 ms
ping 192.168.100.105
64 bytes from 192.168.100.105: icmp_seq=1 ttl=64 time=51.1 ms
64 bytes from 192.168.100.105: icmp_seq=2 ttl=64 time=30.0 ms
64 bytes from 192.168.100.105: icmp_seq=3 ttl=64 time=49.3 ms
ping 192.168.1.1
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=46.2 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=44.2 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=43.0 ms
ping 192.168.1.50
64 bytes from 192.168.1.50: icmp_seq=1 ttl=63 time=42.0 ms
64 bytes from 192.168.1.50: icmp_seq=2 ttl=63 time=40.8 ms
64 bytes from 192.168.1.50: icmp_seq=3 ttl=63 time=40.7 ms
Vérification ouverture de port (depuis le VPS)
root@vps:/etc/wireguard# nc -zv 192.168.1.50 80
Connection to 192.168.1.50 80 port [tcp/http] succeeded!
root@vps:/etc/wireguard# nc -zv 192.168.1.50 443
Connection to 192.168.1.50 443 port [tcp/https] succeeded!
Vérification ouverture de port (depuis mon Mac sur un autre reseau - sans WireGuard)
monMac: nc -zv IP_VPS 80
#Aucune réponse
monMac: nc -zv IP_VPS 443
#Aucune réponse
Mon fichier wg0.conf (VPS)root@vps:/etc/wireguard# cat wg0.conf
[Interface]
Address = 192.168.100.100/24
SaveConfig = true
ListenPort = 51820
PrivateKey = Ma PrivateKey
DNS = 9.9.9.9
[Peer]
PublicKey = Ma PublicKey
AllowedIPs = 192.168.1.0/24, 192.168.100.0/24
Endpoint = IP:13231 #Lorsque ma fibre est OK ip fibre mais si 4G ip qui mets inconnu
PersistentKeepalive = 120
J'ai configuré des règles de redirection de port sur mon VPS en utilisant iptables pour rediriger le trafic entrant vers des machines spécifiques sur mon réseau local (par exemple, 192.168.1.50 et 192.168.1.105) pour les ports 80, 443 et 32400.
J'ai également configuré des règles de pare-feu (srcnat) sur mon routeur MikroTik pour autoriser le trafic entrant et sortant via le VPN WireGuard.
cf : ufw show raw.txtProblème rencontré :
La redirection de port ne semble pas fonctionner correctement. Lorsque j'essaie d'accéder à mes services locaux à distance via l'IP du VPS (par exemple, un serveur web sur le port 443) mon nom de domaine, je n'obtiens pas de réponse. (J'ai bien sur changer mon IP fibre par mon ip VPS coté nom de domaine OVH)
Étapes déjà tentées pour résoudre le problème :
J'ai vérifié les règles de redirection de port sur mon VPS en utilisant la commande sudo iptables -t nat -L PREROUTING --line-numbers -n -v. Les règles semblent correctes et redirigent le trafic vers les bonnes adresses IP locales et les ports associés.
root@vps-67ff5caf:/etc/wireguard# iptables -t nat -L PREROUTING --line-numbers -n -v
Chain PREROUTING (policy ACCEPT 4071 packets, 158K bytes)
num pkts bytes target prot opt in out source destination
1 28 1410 DNAT tcp -- ens3 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:192.168.1.50:80
2 17 772 DNAT tcp -- ens3 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 to:192.168.1.50:443
3 2 80 DNAT tcp -- ens3 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:32400 to:192.168.1.50:32400
J'ai examiné les journaux de mon routeur MikroTik pour vérifier les connexions sortantes et entrantes via l'interface WireGuard. Les connexions semblent être acheminées correctement via le VPN, et aucune erreur ou activité suspecte n'a été détectée. Toutefois, j'ai remarqué que les connexions TCP (SYN) vers les adresses IP externes semblent ne pas aboutir.
Voici quelques exemples de règles iptables et de journaux MikroTik pour vous donner une meilleure idée de ma configuration actuelle :
[Gael@MikroTik] > /ip/firewall/filter/print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; Accept established and related connections
chain=input action=accept connection-state=established,related
1 ;;; Accept ICMP (ping)
chain=input action=accept protocol=icmp
2 ;;; Accept DNS TCP
chain=input action=accept protocol=tcp in-interface=all-ethernet
port=53
3 ;;; Accept DNS UDP
chain=input action=accept protocol=udp in-interface=all-ethernet
port=53
4 X ;;; Drop all other traffic
chain=input action=drop in-interface=all-ethernet log=no log-prefix=""
[Gael@MikroTik] > /ip/firewall/nat/print
Flags: X - disabled, I - invalid; D - dynamic
0 ;;; Permet de faire sortir le traffic via Fibre
chain=srcnat action=masquerade to-addresses=0.0.0.0
out-interface=br-wan log=no log-prefix=""
1 ;;; Permet de faire sortir le traffic via WireGuard - VPS
chain=srcnat action=masquerade to-addresses=0.0.0.0
out-interface=wireguard log=yes log-prefix="WG"
2 ;;; Permet de faire sortir le traffic via 4G
chain=srcnat action=masquerade to-addresses=0.0.0.0
out-interface=ether2-4G log=no log-prefix=""
3 X chain=srcnat action=accept out-interface=ether2-4G log=no log-prefix=""
4 X chain=dstnat action=accept in-interface=ether2-4G log=yes log-prefix=""
5 ;;; HairpinNAT - IP WAN vers https Synology
chain=dstnat action=dst-nat to-addresses=192.168.1.50 to-ports=443
protocol=tcp dst-address=90.X.X.X dst-port=443 log=no log-prefix=""
6 ;;; HairpinNAT - Masquarade Reseau local vers Synology
chain=srcnat action=masquerade protocol=tcp src-address=192.168.1.0/24
dst-address=192.168.1.50 out-interface=sfp4-LAN log=no log-prefix=""
7 ;;; Synology port http entrant & sortant
chain=dstnat action=dst-nat to-addresses=192.168.1.50 to-ports=80
protocol=tcp in-interface=wireguard dst-port=80 port="" log=yes
log-prefix="http synoW"
8 ;;; Synology Port https entrant et sortant
chain=dstnat action=dst-nat to-addresses=192.168.1.50 to-ports=443
protocol=tcp in-interface=wireguard dst-port=443 log=yes
log-prefix="https synoW"
9 ;;; Synology port http entrant & sortant
chain=dstnat action=dst-nat to-addresses=192.168.1.50 to-ports=80
protocol=tcp in-interface=br-wan port=80 log=no log-prefix="http syno"
10 ;;; Synology Port https entrant et sortant
chain=dstnat action=dst-nat to-addresses=192.168.1.50 to-ports=443
protocol=tcp in-interface=br-wan port=443 log=no
log-prefix="https syno"