Auteur Sujet: Configuration / routage tunnel GRE Milkywan  (Lu 9456 fois)

0 Membres et 1 Invité sur ce sujet

maximushugus

  • Abonné SFR fibre FttH
  • *
  • Messages: 258
  • 69
Configuration / routage tunnel GRE Milkywan
« le: 05 février 2021 à 23:28:57 »
Bonjour, je me permets de poster ici pour que mes problèmes de configuration puissent en aider d'autres à l'avenir.
J'ai pris un tunnel GRE chez Milkywan, avec un /48 IPv6 et une IPv4 publique qui me sont donc fournies.
Ce tunnel à une "endpoint", une IPv4 de MW.
Sur ce tunnel il y a des IP d'interconnexion : IPv4 d'interco côté MilkyWan: 10.1.0.245/30, IPv4 d'interco de ton côté: 10.1.0.246/30
Il y a également des interconnexions via IPv6.

Je cherche à configurer ce tunnel sur mon routeur qui tourne sous OpenWrt : voici la configuration que j'ai pour le moment (fichier /etc/config/network) :
config interface 'tunnelMW'
option proto 'gre'
option peeraddr 'IPv4endpoint'

config interface 'intercoMW'
option proto 'static'
option ifname '@tunnelMW'
option ipaddr '10.1.0.246'
option netmask '255.255.255.252'

Avec cette configuration j'arrive à pinger 10.1.0.245, donc l'interconnexion coté Milkywan, donc le tunnel semble fonctionner.
De plus si je configure une route de 45.13.104.0/22 avec 10.1.0.245, je peux pinger via cette interface/via le tunnel, les IP de Milkywan.

Maintenant je souhaiterais configurer l'IPv4 que me fourni Milkywan.
J'ai donc essayé de rajouter une interface sur mon routeur, en mettant l'IP statique celle fournie par MW et la gateway l'IP d'interconnexion du tunnel coté MW :
config interface 'milkwyan'
option ifname '@tunnelMW'
option proto 'static'
option ipaddr 'IPv4fournieparMW'
option netmask '255.255.252.0'
option gateway '10.1.0.245'

Voici (une partie de) ma table de routage avec cette configuration :
default via 10.1.0.245 dev gre4-tunnelMW proto static
10.1.0.244/30 dev gre4-tunnelMW proto kernel scope link src 10.1.0.246
45.13.104.0/22 dev gre4-tunnelMW proto kernel scope link src IPV4fournieparMW
IPV4del'endpoint via MonIPPublicdemonFAI dev eth0.1 proto static

Mais avec cette configuration, plus rien ne fonctionne. Je ne peux ni pinger internet, ni pinger les IP de 45.13.104.0/22 :
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 38 byte packets
 1  10.1.0.245 (10.1.0.245)  10.153 ms  8.822 ms  9.109 ms
 2  te4.ccr2004.edge.th2.bb.ip4.milkywan.net (80.67.167.202)  9.063 ms  12.415 ms  9.330 ms
 3  tfe1.2983.ccr2004.edge.vnx.bb.ip4.milkywan.net (80.67.167.249)  15.487 ms  18.413 ms  18.424 ms
 4  *

Je ne peux pas non plus pinger l'IPv4 que me fourni MilkyWan depuis un autre réseau (mon smartphone en LTE)

Est ce que quelqu'un saurait comme configurer correctement ce tunnel ?
Merci

Hugues

  • AS2027 MilkyWan
  • Modérateur
  • *
  • Messages: 12 424
  • Lyon (69) / St-Bernard (01)
    • Twitter
Configuration / routage tunnel GRE Milkywan
« Réponse #1 le: 05 février 2021 à 23:30:54 »
Ajoute l'IPv4 publique sur la loopback, change ton NAT par du srcnat avec comme ip source cette ip publique, et tout marchera :)

maximushugus

  • Abonné SFR fibre FttH
  • *
  • Messages: 258
  • 69
Configuration / routage tunnel GRE Milkywan
« Réponse #2 le: 05 février 2021 à 23:38:28 »
Ajoute l'IPv4 publique sur la loopback, change ton NAT par du srcnat avec comme ip source cette ip publique, et tout marchera :)
Ok j'essaye ça (faut que je vois exactement comment le faire sur OpenWrt, merci

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Configuration / routage tunnel GRE Milkywan
« Réponse #3 le: 06 février 2021 à 01:38:03 »
Tu peux garder ton inferface 'milkwyan', c'est le masque (netmask) qui n'est pas bon (de ton coté tu as qu'un IPv4 donc un /32 et pas un /22)

Tu n'est pas forcé de SNAT/masquerade l'ipv4 fournie par MW tout dépend de ton usage.

Si tu as besoin de la partager avec d'autres appareils sur le LAN, il faut effectivement faire du SNAT ou du "masquerade" sur l'interface milkwyan dans la conf firewall.

- soit avec des zones firewall qui référencent des interfaces nommées comme la conf par défaut d'Openwrt ('lan', 'wan') ce qui évite de mettre les IPs en dur dans la config firewall. c'est la méthode plus dans l'esprit d''openwrt'

la config par défaut ( /etc/config/firewall ) contient:

config zone
option name lan
list   network 'lan'
option input ACCEPT
option output ACCEPT
option forward ACCEPT

config zone
option name wan
list   network 'wan'
option input REJECT
option output ACCEPT
option forward REJECT
option masq 1
option mtu_fix 1

config forwarding
option src lan
option dest wan

C'est la combination "forwarding" + option "masq" qui fait le NAT. en plus ca active le "conn tracking" et permet  les flux de retour (statefull firewalling).

si tu as déja une zone 'wan' pour ton accès Internet, tu peux en créer une autre pour ton tunnel (wanMW par exemple), et faire un "config  forwarding" de lan a wanMW, tes routes décideront ensuite lequel des 2 forwarding est utilisé (tu peux ainsi partagé ton IPv4 MW pour accéder a une partie d'Internet et ton autre IPv4 public pour une autre partie d'Internet par exemple).

- soit avec un SNAT direct (config redirect)

Mais avant tout je te conseille de lire: https://openwrt.org/docs/guide-user/firewall/firewall_configuration ce n'est pas long et instructif. (rtfm quoi ... )

maximushugus

  • Abonné SFR fibre FttH
  • *
  • Messages: 258
  • 69
Configuration / routage tunnel GRE Milkywan
« Réponse #4 le: 06 février 2021 à 14:45:55 »
Tu peux garder ton inferface 'milkwyan', c'est le masque (netmask) qui n'est pas bon (de ton coté tu as qu'un IPv4 donc un /32 et pas un /22)

Tu n'est pas forcé de SNAT/masquerade l'ipv4 fournie par MW tout dépend de ton usage.

Si tu as besoin de la partager avec d'autres appareils sur le LAN, il faut effectivement faire du SNAT ou du "masquerade" sur l'interface milkwyan dans la conf firewall.

- soit avec des zones firewall qui référencent des interfaces nommées comme la conf par défaut d'Openwrt ('lan', 'wan') ce qui évite de mettre les IPs en dur dans la config firewall. c'est la méthode plus dans l'esprit d''openwrt'

la config par défaut ( /etc/config/firewall ) contient:

config zone
option name lan
list   network 'lan'
option input ACCEPT
option output ACCEPT
option forward ACCEPT

config zone
option name wan
list   network 'wan'
option input REJECT
option output ACCEPT
option forward REJECT
option masq 1
option mtu_fix 1

config forwarding
option src lan
option dest wan

C'est la combination "forwarding" + option "masq" qui fait le NAT. en plus ca active le "conn tracking" et permet  les flux de retour (statefull firewalling).

si tu as déja une zone 'wan' pour ton accès Internet, tu peux en créer une autre pour ton tunnel (wanMW par exemple), et faire un "config  forwarding" de lan a wanMW, tes routes décideront ensuite lequel des 2 forwarding est utilisé (tu peux ainsi partagé ton IPv4 MW pour accéder a une partie d'Internet et ton autre IPv4 public pour une autre partie d'Internet par exemple).

- soit avec un SNAT direct (config redirect)

Mais avant tout je te conseille de lire: https://openwrt.org/docs/guide-user/firewall/firewall_configuration ce n'est pas long et instructif. (rtfm quoi ... )
Tout d'abord merci pour la réponse.
J'avais effectivement fait cette configuration :

Pour /etc/config/network
config interface 'tunnelMW'
option proto 'gre'
option peeraddr 'IPv4endpoint'

config interface 'intercoMW'
option proto 'static'
option ifname '@tunnelMW'
option ipaddr '10.1.0.246'
option netmask '255.255.255.252'

config interface 'milkwyan'
option ifname '@tunnelMW'
option proto 'static'
option ipaddr 'IPv4fournieparMW'
option netmask '255.255.252.0'
option gateway '10.1.0.245'

Pour /etc/config/firewall :

config zone
option network 'intercoMW milkwyan tunnelMW'
option name 'wanMW'
option mtu_fix '1'
option input 'REJECT'
option forward 'REJECT'
option masq '1'
option output 'ACCEPT'

config forwarding
option dest 'wanMW'
option src 'lan'

Néanmoins avec cette configuration, voici (une partie de) la table de routage que j'obtiens :
default via 10.1.0.245 dev gre4-tunnelMW proto static
10.1.0.244/30 dev gre4-tunnelMW proto kernel scope link src 10.1.0.246

à comparer à ma table de routage "de base", avant cette configuration :
default via 10X.XX.XXX.1 dev eth0.1 proto static src 1XX.XX.XXX.7
On voit que "de base", ma route par défaut contient "src MONIPV4PUBLICSFR", alors qu'avec la configuration pour le tunnel ajouté, ma route par défaut ne contient pas "src MONIPV4MW". D'où le fait que mes traceroutes (cf premier message) arrivent sur le réseau MW mais impossible d'en sortir, puisque je doit alors communiquer sur le réseau MW avec l'IP 10.1.0.246, qui n'est pas routable sur internet.
Il faut que j'arrive à rajouter "src MONIPV4MW' dans ma table par défaut à mon avis.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Configuration / routage tunnel GRE Milkywan
« Réponse #5 le: 06 février 2021 à 15:56:24 »
Indique ce que tu veux faire avec ce tunnel : faire passer tout le trafic du LAN ou juste une partie ? on ne sait toujours pas ton objectif..

Tu n'as pas corrigé le netmask comme indiqué dans la 1ere ligne de mon commentaire précédent.

option netmask '255.255.255.255'  // c'est un /32 ici, il n'y a qu'une seule IP de ton coté

repost toute la config pas que des bouts (du moins le routage et le firewall: /etc/config/network et /etc/config/firewall et la table de routage entiere).

Tu dois explicitement indiquer quelle route par défaut tu veux. Le système de peut pas deviner pour toi et il en faut qu'une (sauf à faire du double wan ce qui n'est pas le but je présume).

Tu peux définir la gateway en dehors des interfaces ,c'est plus clean a mon sens. utilise une 'config route'.

Dns la "config zone" de wanMW il ne faut mettre que l'interface milkwyan pas trois interfaces ...

maximushugus

  • Abonné SFR fibre FttH
  • *
  • Messages: 258
  • 69
Configuration / routage tunnel GRE Milkywan
« Réponse #6 le: 06 février 2021 à 16:08:02 »
Indique ce que tu veux faire avec ce tunnel : faire passer tout le trafic du LAN ou juste une partie ? on ne sait toujours pas ton objectif..
Pour l'instant je souhaite faire passer l'ensemble du trafic IPv4 dans le tunnel (et lorsque cela fonctionnera je m’attellerai de même de même à l'IPv6

Tu n'as pas corrigé le netmask comme indiqué dans la 1ere ligne de mon commentaire précédent
En fait si, c'est juste que j'avais fait un copier coller de la config postée à la permière page par flemme de remodifier/masquer les IP et j'ai oublié de modifier le netmask mais c'était bien fait  ;)

Dans la "config zone" de wanMW il ne faut mettre que l'interface milkwyan pas trois interfaces ...
Ok je corrige ça

maximushugus

  • Abonné SFR fibre FttH
  • *
  • Messages: 258
  • 69
Configuration / routage tunnel GRE Milkywan
« Réponse #7 le: 06 février 2021 à 17:03:16 »
reposte toute la config pas que des bouts (du moins le routage et le firewall: /etc/config/network et /etc/config/firewall et la table de routage entiere).

Voici donc la configuration complète :

/etc/config/network (je n'ai pas mis mes interfaces IOT et invité etc.. :
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config interface 'lan'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option ipaddr '192.168.3.1'
option ifname 'eth0.3'
option igmp_snooping '1'
option ip6hint '3'
option ip6assign '64'

config interface 'wan'
option proto 'dhcp'
option vendorid 'neufbox_NB6VAC-XXXXXXXXX'
        option peerdns '0'
option ifname 'eth0.1'
option metric '0'

config interface 'wan6'
option ifname 'eth0.1'
option proto 'dhcpv6'
option reqprefix 'auto'
option reqaddress 'try'
option peerdns '0'

config interface 'tunnelMW'
option proto 'gre'
option peeraddr 'IPV4endpoint'

config interface 'intercoMW'
option proto 'static'
option ifname '@tunnelMW'
option ipaddr '10.1.0.246'
option netmask '255.255.255.252'

config interface 'milkywan'
option ifname '@tunnelMW'
option proto 'static'
option ipaddr 'IPv4MW'
option netmask '255.255.255.255'
option gateway '10.1.0.245'

/etc/config/firewall :
config defaults
option syn_flood '1'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'REJECT'
option flow_offloading '1'
option flow_offloading_hw '1'
option drop_invalid '1'

config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option network 'lan'

config zone
option name 'wan'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
option input 'REJECT'
option network 'wan wan6'

config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'

config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-DHCPv6'
option src 'wan'
option proto 'udp'
option src_ip 'fc00::/6'
option dest_ip 'fc00::/6'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-MLD'
option src 'wan'
option proto 'icmp'
option src_ip 'fe80::/10'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-ICMPv6-Input'
option src 'wan'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
list icmp_type 'router-solicitation'
list icmp_type 'neighbour-solicitation'
list icmp_type 'router-advertisement'
list icmp_type 'neighbour-advertisement'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-ICMPv6-Forward'
option src 'wan'
option dest '*'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-IPSec-ESP'
option src 'wan'
option dest 'lan'
option proto 'esp'
option target 'ACCEPT'

config rule
option name 'Allow-ISAKMP'
option src 'wan'
option dest 'lan'
option dest_port '500'
option proto 'udp'
option target 'ACCEPT'

config include
option path '/etc/firewall.user'

config forwarding
option dest 'wan'
option src 'lan'

config zone
option network 'milkwyan'
option name 'wanMW'
option mtu_fix '1'
option input 'REJECT'
option forward 'REJECT'
option masq '1'
option output 'ACCEPT'

config forwarding
option dest 'wanMW'
option src 'lan'

Avec cette configuration, voici la table de routage que j'obtiens :
default via 10.1.0.245 dev gre4-tunnelMW proto static
10.1.0.244/30 dev gre4-tunnelMW proto kernel scope link src 10.1.0.246
IPV4endpoint via 1XX.XX.XXX.1 dev eth0.1 proto static
1XX.XX.XXX.0/24 dev eth0.1 proto kernel scope link src 1XX.XX.XXX.X (mon IPV4SFR)
192.168.3.0/24 dev br-lan proto kernel scope link src 192.168.3.1

J'ai donc essayé de définir ma route par défaut avec :
ip route change default via 10.1.0.245 dev gre4-tunnelMW proto static src IPv4MW

J'obtiens alors :
default via 10.1.0.245 dev gre4-tunnelMW proto static src IPV4MW
10.1.0.244/30 dev gre4-tunnelMW proto kernel scope link src 10.1.0.246
IPV4endpoint via 1XX.XX.XXX.1 dev eth0.1 proto static
1XX.XX.XXX.0/24 dev eth0.1 proto kernel scope link src 1XX.XX.XXX.X (mon IPV4SFR)
192.168.3.0/24 dev br-lan proto kernel scope link src 192.168.3.1

Mais cette fois ci je n'arrive plus à pinger quoi que ce soit
« Modifié: 06 février 2021 à 20:09:18 par maximushugus »

maximushugus

  • Abonné SFR fibre FttH
  • *
  • Messages: 258
  • 69
Configuration / routage tunnel GRE Milkywan
« Réponse #8 le: 06 février 2021 à 20:22:16 »
Bon, j'ai fait pas mal de tests et je ne comprends pas.

J'ai bien ma route par défaut vers 10.1.0.245, c'est à dire l'IP de l'interconnexion côté Milkywan puisque, avec la configuration donnée ci dessus (sans la modification / définition de route dont je parlais à la fin du dernier message), lorsque le fait un traceroute vers internet (8.8.8.8 ), j'obtiens ceci :
traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 38 byte packets
 1  10.1.0.245 (10.1.0.245)  8.273 ms  9.343 ms  8.834 ms
 2  te4.ccr2004.edge.th2.bb.ip4.milkywan.net (80.67.167.202)  9.032 ms  8.057 ms  9.107 ms
 3  tfe1.2983.ccr2004.edge.vnx.bb.ip4.milkywan.net (80.67.167.249)  15.965 ms  17.432 ms  18.474 ms
 4  *  *  *
 5  *  *  *
Donc je passe bien par le réseau Milkywan mais je ne peux en sortir. En effet, l'IP qui contacte l'interconnexion coté milkywan (10.1.0.245) est l'IP de l'interconnexion de mon coté, à savoir 10.1.0.246. J'ai des captures Wireshark de l'interface du tunnel GRE sur mon routeur qui montrent bien ça (à savoir des packets de source 10.1.0.246 à destination de 8.8.8.8) lorsque je fais ce traceroute.


J'ai donc mis en place une règle SNAT, convertissant l'adresse 10.1.0.246 (l'interconnexion de mon coté) en l'adresse IPv4 publique que me fournit Milkywan. Lorsque je fais le même traceroute vers 8.8.8.8, sans changer ma table de routage, qui oriente donc vers 10.1.0.245 (l'interconnexion du tunnel GRE coté Milkywan), je vois bien sur mes capture Wireshark que la source du packet a changé, et est cette fois bien devenu l'IPv4 publique (fournie par Milkywan). Néanmoins je ne passe pas plus loin que l'interconnexion du tunnel côté Milkywan pas et le résultat du traceroute est :
traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 38 byte packets
 1  10.1.0.245 (10.1.0.245)  9.895 ms  9.257 ms  8.787 ms
 2  *  *  *
 3  *  *  *
 4  *  *  *

Je ne comprends pas d'où vient le problème...

PS : je peux si besoin fournir les captures Wireshark

Hugues

  • AS2027 MilkyWan
  • Modérateur
  • *
  • Messages: 12 424
  • Lyon (69) / St-Bernard (01)
    • Twitter
Configuration / routage tunnel GRE Milkywan
« Réponse #9 le: 06 février 2021 à 21:43:57 »
Tu peux me mail ou venir sur IRC ? On va faire des tests synchro :)

maximushugus

  • Abonné SFR fibre FttH
  • *
  • Messages: 258
  • 69
Configuration / routage tunnel GRE Milkywan
« Réponse #10 le: 06 février 2021 à 21:48:29 »
Oui je fais ça tout de suite merci :)

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Configuration / routage tunnel GRE Milkywan
« Réponse #11 le: 06 février 2021 à 22:01:40 »
Cherches-tu a apprendre OpenWrt et faire la config toi-meme ou tu cherches juste une config tout faite sans comprendre comment elle marche ? si c'est le 2eme cas, demande a MW une config tout faite tu es leur client apres tout et ca sera plus simple pour toi.

si t'es dans le premier cas:

- attention ta zone firewall 'wanMW' bloque les entrées: met ACCEPT pour input et forward pour le moment (plus tard quand ca marchera tu peux renforcé la sécurité en faisant des regles comme pour "wan" ou intégré ton tunnel dans 'wan' mais en faisant attention)

- mélange pas les commandes openwrt et linux("ip route"). openwrt est une surcouche qui derrière utilise les commandes linux donc il faut mieux travailler a un seul niveau.

- pinger depuis le routeur ou depuis un appareil sur le lan n'implique pas les memes mécanismes.  Dans un cas il y a translation d'adresse avec suivi (conntrack) , dans l'autre c'est via en changeant/spécifiant l'adresse source.

Dans ton cas, si tu veux pinger des 2:
- enleve "option gateway" dans l' interface et definit la gateway directement:

config interface 'milkywan'
option ifname '@tunnelMW'
option proto 'static'
option ipaddr 'IPv4MW'
option netmask '255.255.255.255'
supprimer -> option gateway '10.1.0.245'

config route 'sortie'
        option interface 'milkywan'
        option target '0.0.0.0'
        option netmask '0.0.0.0'
        option source 'IPv4MW'
        option gateway '10.1.0.245'

la 'config route' revient à faire un "ip route ..." mais au niveau openwrt pas au niveau en dessous.

une fois que ca marche (local et lan) tu peux remettre les REJECT dans la config firewall de la zone wanMW ou fusionner le tout dans une seule zone 'wan' (je recommande pas trop mais si c'est possible).

edit: ma réponse a croisé celle de Hugues, du coup vois avec lui ca sera plus simple.