Bonjour,
********************
Le tuto est valable jusqu’au 2 avril 2022. Ayant changé d’opérateur, je ne suis pas en mesure de maintenir le tuto. N’hésitez pas à demander aux autres personne si vous rencontrez des difficultés.*********************
Je vais vous expliquer comment obtenir (difficilement) une IPv4 full-stack + 1/4 d’IPv4 + IPv6 /60 chez Free en zone ZMD
Le réseau de Free en ZMD est en 10G-EPON en infrastructures et du 4rd en guise de protocoles de communication IP, c’est-à-dire que le réseau est déjà en full IPv6, mais on peut tout de même récupérer une IPv4 à travers un tunnel point à point d’IPv6. Le serveur de réception IPv6 fait le travaille d’envoyé le paquet IPv4 encapsulé sur le réseau IPv4.
Pour pourvoir vous passez de la Freebox, vous devrez être sur un ancien modèle de Freebox (Révolution ou Mini 4k). Dans les anciennes versions, vous n’avez qu’un port SFP au cul des box et par conséquent, ils fournissent un ONU qui convertit le SFP+ en SFP.
Vous devez donc avoir ce module-là :
Et vous le brancher sur un convertisseur optique <-> RJ45, type TP-Link MC220L :
Je rentrerai pas dans les détails techniques sur le forum, si vous souhaiter avoir plus d’explication techniquement, je vous conseille mon article de blog qui explique les détails:
https://liberty.noknow.ovh/article/NoBox-Freessh root@192.168.1.1
opkg update
opkg install nano map
Vous modifier le fichier /lib/netifd/proto/map.sh:
Vous rajouter ces lignes entre les lignes 66 et 67 (après "echo $RULES_DATA" et avant "eval $RULE_DATA"): [ -z "${RULE_DATA##*2a01:e00:29:200a::fffd*}" ] && sed -i 's/RULE_1_IPV6ADDR=.*/RULE_1_IPV6ADDR=2a01:xxx:xxx:xxx:0:ffff:ffff:0/' /tmp/map-$cfg.rules
RULE_DATA=`cat "/tmp/map-$cfg.rules"`
--------------------------------------------------
Vous modifier le fichier /etc/config/network, pour rajouter un VLAN 836
Si il s'agit d'un VLAN logiciel, vous changer le bloc switch_vlan du WAN avec:
config switch_vlan
option device 'switch0'
option vlan '836'
option vid '836'
option ports '4t 6t'# Adapter avec votre config déjà existante
Si il s'agit d'un VLAN géré par le materiel:
config device
option type '8021q'
option ifname 'wan'
option vid '836'
option name 'vlanWAN'
option macaddr '70:FC:xx:xx:xx:xx' #MAC de votre Freebox
(dans ce cas-là, l'ifname sera vlanWAN)
---------------------------------------------
Vous remplacer les blocs WAN et WAN6 par cela:
config interface 'wan6'
option ifname 'eth0.836' # Correspond au numéro de l'interface dans le routeur généralement 0 pour le WAN, parfois 1 suivi du vlan de Free.
option proto 'dhcpv6' #correspond au protocole. Ici, du dhcpv6 standard.
option reqprefix 'auto'# On le laisse demander la plage IPv6 obtenu (normalement un /60)
option reqaddress 'try' # On laisse en try pas besoin de forcer la requete
option macaddr '70:FC:8F:xx:xx:xx' # On change l’adresse MAC du routeur pour celui de la freebox
option mtu '1700' # On augmente le mtu standard, pour avoir un tunnel plus grand en IPv4
list dns '2001:4860:4860::8888' #On attribue les dns IPv6 de google. (optionnel), c’est juste le temps d'avoir un internet fonctionnel le temps de hijacking le dns (si vous le souhaitez)
option peerdns '0' # On refuse les dns proposer par Free (il pue un peu la m****e), mais vous pouvez toujours les autoriser si vous le souhaiter.
config interface 'wan'
option ifname 'eth0.836' #L'interface sur laquel le tunnel va communiquer
option delegate '0' #On désactive l'intégration de l'IPv6 automatique sur cette interface, car on est en IPv4
option tunlink 'wan6' # On remet l'interface sur laquel il communique
option proto 'map' # Le protocole
option type 'map-e' # Le sous-protocole (on a le choix entre map-e map-t et lw6over4, mais on est sur du map-e pour nous)
option peeraddr '2a01:e00:29:200a::fffd' # L'adresse du tunnel côté serveur
option ipaddr '82.xx.xx.xx' #L'ip full stack qui vous a été attribué et qui se trouve sur votre espace client
option ip4prefixlen '32' #Le préfixe de l'IP
option ip6prefix '2a01:xxx:xxx:xxx::' #Votre plage/préfix IPv6
option ip6prefixlen '60' #La longueur du préfix
option mtu '1500' # Le mtu que l'on met à 1500, c'est pour cela qu’on met celui de l'IPv6 à 1700
option encaplimit 'ignore' #pas d'encapsulation limit
option defaultroute '1' # définir comme route par défaut (à votre convenance)
################ plein d’option au hasard ########
option ealen '32'
option psidlen '1'
option offset '16'
option psid '65535'
#################################################
Vous rajouter un bloc dans ce fichier: config interface 'wan6_4'
option delegate '0' #Pas d'IPv6
option defaultroute '0' #On ne définis pas comme route par défaut
option proto 'static' #On lui dit que c'est une adresse static(le protocole map s'occupera de faire le lien)
option force_link '0'#pas besoin de forcer le lien
list ipaddr '91.xx.xx.xx/32'#Votre adresse IP éphémère.
Remplacer la totalité du fichier /etc/config/mwan3 par cela:config globals 'globals'
option mmx_mask '0x3F00'
option rtmon_interval '5'
##############La déclaration des 2 interfaces#################
# Des options qui permettent de savoir s’il y en a une qui est HS
# Normalement dans notre cas, les 2 sont UP ou DOWN en même temps, mais dans le cas d’une connexion 3g de secours, cela peut être utile
config interface 'wan'
option enabled '1'
list track_ip '8.8.4.4'
list track_ip '8.8.8.8'
list track_ip '208.67.222.222'
list track_ip '208.67.220.220'
option family 'ipv4'
option reliability '2'
option count '1'
option timeout '2'
option failure_latency '1000'
option recovery_latency '500'
option failure_loss '20'
option recovery_loss '5'
option interval '5'
option down '3'
option up '8'
config interface 'wan6_4'
option enabled '1'
option initial_state 'online'
option family 'ipv4'
list track_ip '8.8.4.4'
list track_ip '8.8.8.8'
list track_ip '208.67.222.222'
list track_ip '208.67.220.220'
option track_method 'ping'
option reliability '1'
option count '1'
option size '56'
option max_ttl '60'
option check_quality '0'
option timeout '2'
option interval '5'
option failure_interval '5'
option recovery_interval '5'
option down '3'
option up '3'
# On redéclare les interfaces en tant que membre avec un poids plus important pour l'IP éphémère pour que ce soit celle-ci qui soit utilisée en premier.
# On peut redéclarer plusieurs fois les interfaces avec des poids et des metrics différent pour pourvoir créer différentes règles.
config member 'wan_member'
option interface 'wan'
option weight '1'
option metric '2'
config member 'wan6_4_member'
option interface 'wan6_4'
option weight '2'
option metric '1'
# On créer des règles de fonctionnement
# La première c'est qu'on utilise l'interfaces IP éphémères en priorité absolue puis ip fixe en fail over. On utilise la table de routage par défaut si ça fonctionne pas.
# La deuxième consiste à dire qu'on utilise uniquement l'IP fixe (règles pour le serveur)
config policy 'then_half_full'
list use_member 'wan_member'
list use_member 'wan6_4_member'
option last_resort 'default'
config policy 'full_only'
list use_member 'wan_member'
option last_resort 'default'
# Ensuite on attribue les règles à des adresses IP source ou de destination
# ici, le serveur utilise la règle full_only, tandis que le reste de la maison utilise la règle then_half_full.
config rule 'Server'
option src_ip '192.168.XX.XX' #L'ip local de votre serveur
option proto 'all'
option sticky '0'
option use_policy 'full_only'
option dest_ip '0.0.0.0/0'
config rule 'All'
option proto 'all'
option sticky '0'
option use_policy 'then_half_full'
option dest_ip '0.0.0.0/0'
Et voilà vous avec 1,25 IPv4 et une plage /60 de l’IPv6
Si vous avez des questions, je vous conseille de lire d’abords l’article de blog qui est beaucoup plus détaillé, mais vous pouvez également poser la question sur le forum ^^
EDIT: mwan3 ne fonctionne pas. J'ai une solution pour faire fonctionner l'IPv4 FullStack.
Pour cela il faut modifier le fichier map.sh de cette façon:
vers la ligne 66, il faut rajouter 2 lignes:
echo "$RULE_DATA" >> /tmp/map-$cfg.rules
+
+ [ -z "${RULE_DATA##*2a01:e00:29:200a::fffd*}" ] && sed -i "s/RULE_1_IPV6ADDR=.*/RULE_1_IPV6ADDR=${ip6prefix%?}0:ffff:ffff:0/" /tmp/map-$cfg.rules
+ RULE_DATA=`cat "/tmp/map-$cfg.rules"`
+
eval $RULE_DATA
Vers la ligne 135
Remplacer la ligne:
proto_add_ipv4_route "0.0.0.0" 0
par:
[ ! -z "${RULE_DATA##*2a01:e00:29:200a::ffff*}" ] && proto_add_ipv4_route "0.0.0.0" 0
Cela permettra d’empêcher le routeur d’utiliser l’IPv4 partagé comme route par défaut... C’est le seul moyen que j’ai trouvé d’avoir une connexion stable.