Bonjour à tous,
J'ai un petit problème afin de relier 2 LAN de 2 sites distants afin de n'en faire qu'un seul avec le même domaine broadcast/multicast (et en finir avec les igmpproxy et autres tralala).
A la base j'ai ça:
+--------------+ +--------------+
| OWRT0 | | OWRT1 |
LAN0 192.168.0.0/24 ------+ LAN | WAN +- 78.x-------- NET -------- 82.x -+ WAN | LAN +---------- 192.168.1.0/24 LAN1
| VPN wg0 | | VPN wg0 |
| 10.0.0.1 | | 10.0.0.2 |
+--------------+ +--------------+
2 routeurs openWRT, chacun avec une IP LAN différente. Un tunnel wireguard reliant les 2 LAN. Cette configuration fonctionne, toute machine de LAN0 communique avec LAN1 et inversement (à l'exception des routeurs mais c'est une histoire d'IP source).
Ce que j'aimerai c'est ça:
+--------------+ +--------------+
| OWRT0 | | OWRT1 |
LAN0 192.168.0.0/23 ------+ LAN | WAN +- 78.x-------- NET -------- 82.x -+ WAN | LAN +---------- 192.168.1.0/23 LAN1
| VPN wg0 | | VPN wg0 |
| 10.0.0.1 | | 10.0.0.2 |
+--------------+ +--------------+
Un seul LAN avec le même domaine broadcast/multicast. Mais chaque partie gardant son routeur avec sa propre IP et son serveur DHCP (avec une attribution de préférence dans un /24 différent).
Pour des raisons de possible utilisation d'ERL, le tunnel L2 utilisé entre les 2 LAN passe par GRETAP.
J'utilise la configuration suivante:
OWRT0: IP LAN = 192.168.0.1/23 DHCP start = 10 (attribue par défaut une IP en 192.168.0.X/23)
OWRT1: IP LAN = 192.168.1.1/23 DHCP start = 265 (attribue par défaut une IP en 192.168.1.X/23)
J'augmente la MTU du tunnel wireguard à 1580, et tant pis (pour le moment) si ça fragmente.
Pour la configuration du GRE:
# Create d'un gretap passant par le tunnel wg
ip link add gretap1 type gretap local 10.0.0.1 remote 10.0.0.2 dev WG0 nopmtudisc
ip link set gretap1 up
# possible car le tunnel wg a une MTU de 1580
ip link set gretap1 mtu 1500
# Ajout du GRETAP sur le bridge LAN
brctl addif br-lan gretap1
Idem sur OWRT1 en changeant juste les IP sources et destination du tunnel.
A la fin, j'ai bien relié au niveau L2 les 2 LAN pour n'en avoir qu'un. Par contre je tombe sur un problème attendue: je me retrouve avec 2 serveurs DHCP sur le même LAN. Et un problème surprise: en IPv6 je me retrouve avec 2 RA attribuant chacun des IPv6 complètement différentes (et forcement incompatibles entre elles).
Du coup, je suis à la recherche de règles iptables (ou ebtables) permettant de bloquer les DHCP/RA.
Problèmes:
- je préfère garder 2 routeurs, pour supporter le cas ou l'un des 2 sites perd le net.
- j'aimerai si possible ne pas interdire complètement le routeur d'envoyer des paquets à l'autre site (autres que DHCP/RA).
- j'aimerai bloquer si possible dès la source les paquets DHCP/RA pour pas qu'ils passent à travers le tunnel wireguard.
- le tunnel WG0 ne fait passer que des paquets de protocole "gre", du coup iptables ne permet pas de filtrer ce qui est encapsulé dedans (enfin je crois).
- iptables refuse les -i gretap1, -o gretap1 car gretap1 faisant parti d'un bridge il ne considère comme device que br-lan. Et si je bloque DHCP/RA sur tout br-lan en OUTPUT, et bien les routeurs OWRTx ne feront plus DHCP.
Actuellement, j'ai enlevé gretap1 du bridge br-lan sur le site 0. Cela revient à "débrancher le câble" reliant les 2 sites. A gros coup de tcpdump je peux quand même voir ce qui est envoyé depuis le site 1 via tcpdump -i gretap1. Je peux donc tester facilement toute solution.
Bref, si quelqu'un sait comment résoudre ce problème ça m'intéresse.