Auteur Sujet: Remplacement de la Livebox par un routeur Openwrt  (Lu 367647 fois)

0 Membres et 2 Invités sur ce sujet

CyberTaf

  • Abonné Sosh fibre
  • *
  • Messages: 5
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1176 le: 31 mai 2025 à 13:09:23 »
Salut Ubune, merci de te pencher sur mon problème !
Citation de: ubune
Tu as vérifié si ce modele watchguard n'avait pas une accélération hardware qui n'est pas active avec openwrt ?
J'avoue que non. C'est un FW que j'ai récupéré, en plus l'OpenWRT n'est pas un build officiel mais un Addon.

Je viens de tester l'offload dans la config firewall, que ce soit en matériel ou logiciel je peux ping vers le wan mais je ne peux pas surfer. Pour que le surf revienne il faut que je le désactive.

Pour htop je ne peux pas l'installer pour le moment car j'ai le opkg update qui merde (ouais je sais j'ai la loose  :D ), je suis en train de régler le problème. Si ça peut aider j'ai fait les captures directement dans l'overview de LuCI.



Puisque qu'il semble s'agir d'un problème de firewall, j'ai été relire le tuto de bob62 que j'avais suivi pour la mise en place de mon DD-WRT et voici ce qu'il dit au sujet des règles de firewall et de priorisation des VLAN.
Y aurait-il moyen de "traduire" ça sur l'openWRT, vu que sur mon DD-WRT ça ne fonctionne pas trop mal ?

Citer
### Interface physique WAN ($wanif)

eval $(nvram get rc_startup | grep "^wanif=")

### Priorite / CoS pour Internet (fait par l'option "Use VLAN Priority")

# File 0 (par defaut) pour le DHCP (en raw-socket), file 1 pour le reste du trafic
vconfig set_egress_map $wanif.832 0 6
vconfig set_egress_map $wanif.832 1 0

### On classe le trafic Internet dans les bonnes files (fait par l'option "Use VLAN Priority")

# Tout le trafic priorite 1 (CoS 0), SFE actif donc outgoing + incoming
iptables  -t mangle -A POSTROUTING -o $wanif.832 -j MARK --set-mark 0x100000
ip6tables -t mangle -A POSTROUTING -o $wanif.832 -j MARK --set-mark 0x100000
iptables  -t mangle -A PREROUTING  -i $wanif.832 -j MARK --set-mark 0x100000
ip6tables -t mangle -A PREROUTING  -i $wanif.832 -j MARK --set-mark 0x100000
iptables  -t mangle -A POSTROUTING -m mark --mark 0x100000 -j CLASSIFY --set-class 0:1
ip6tables -t mangle -A POSTROUTING -m mark --mark 0x100000 -j CLASSIFY --set-class 0:1

# DHCP (en kernel-socket)
iptables  -t mangle -A POSTROUTING -o $wanif.832 -p udp --dport  67 -j CLASSIFY --set-class 0:0
ip6tables -t mangle -A POSTROUTING -o $wanif.832 -p udp --dport 547 -j CLASSIFY --set-class 0:0

### On fixe le TOS des paquets, SFE actif donc outgoing + incoming (fait par l'option "Filter TOS/DSCP")

iptables  -t mangle -A POSTROUTING -m mark --mark 0x100000 -j TOS --set-tos 0x00
ip6tables -t mangle -A POSTROUTING -m mark --mark 0x100000 -j TOS --set-tos 0x00

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 673
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1177 le: 31 mai 2025 à 13:43:47 »
@CyberTaf :

Les deux sont des principes équivalents.

CyberTaf

  • Abonné Sosh fibre
  • *
  • Messages: 5
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1178 le: 31 mai 2025 à 15:28:10 »
Bon alors c'était peut-être pas forcément une bonne idée de remplacer mon Netgear WNDR3700 pour un Watchguard T30-W.
Je vais rester comme ça et voir si je trouve un routeur compatible DD-WRT (que je connais un peu mieux) avec de meilleures perfs.
Merci de m'avoir répondu en tout cas.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 673
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1179 le: 19 juin 2025 à 10:28:36 »
Citation de: basilix
C'est plus simple pour moi de tout gérer en IPv6 (un ensemble de protocoles en moins à gérer).

+1. J'ai même pas de DHCPv4 et c'est un plaisir.

Citation de: basilix
intégrer des options DHCPv6 au serveur odhcpd.

Est-ce que la box attend une option spéciale dans la réponse à la requête DHCPv6 qu'elle fait sur le WAN? Ou est-ce qu'elle refuse simplement de fonctionner si pas de connectivité IPv4, et donc il faut lui fournir de quoi configurer son tunnel DS-Lite dans la réponse DHCP ?

Citation de: basilix
J'espère un peu que la téléphonie par IP fonctionnera sans dépendance à IPv4.

C'est le but à terme d'après LeVieux. Je ne suis pas sûr que ce soit déjà actif mais ca me semble facile à tester : fais un dump du trafic entre la box et internet lors d'un appel et tu seras fixé.

Je suis finalement parvenu à intégrer l'information d'authentification (options 90 et 11) et les options spécifiques au vendeur en DHCPv4 (option 125) et DHCPv6 (option 17) dans odhcpd.
Tout n'est pas encore au point, j'ai quelques problèmes de connexion réseau en local. Il faudrait que je recherche d’où cela pourrait provenir. Il me manque aussi les tests à réaliser pour
mon implémentation de l'option spécifique au vendeur.

La Livebox refuse simplement de fonctionner sans connectivité IPv4 : les LEDs clignotent en blanc. Pour la téléphonie, les requêtes SIP se font uniquement en DHCPv4. Sinon, il me
semble qu'on peut se passer de l'option 125 si l'on envoie l'option 17 (mais il faudrait que je vérifie).

Un petit bémol pour le NAT64 + DNS64. Lors de mes précédents tests j'avais remarqué que Jool n'était pas proprement intégré à OpenWrt.

Je suis vraiment trop content que cela fonctionne.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 673
Remplacement de la Livebox par un routeur Openwrt
« Réponse #1180 le: Aujourd'hui à 08:49:45 »
Pas de souci pour mettre à jour le tuto. Après, pour être sûr que ce soit une amélioration, il faut qu’il y ait soit un "vrai" gain de performance, soit une simplification de la configuration/déploiement.

En conséquence, je prévoyais de créer deux feeds : livebox-feed et custom-feed. Le livebox-feed contiendrait des correctifs des sources de programmes. Le
custom-feed serait un feed expérimental visant à automatiser et personnaliser une image OpenWrt. Plus besoin de copier des fichiers de configuration ou de lire le
tutoriel. Ce sera potentiellement plug & play. À mon avis, cela simplifiera considérablement la tâche des débutants souhaitant remplacer leur Livebox par OpenWrt.

J'ai refait le point.

Le concept de paquet est central dans OpenWrt. Pour améliorer la configuration, on peut créer un feed. Cela permettrait une mise à niveau de nftables en version
1.1.3. On peut construire le paquet par compilation en utilisant le SDK OpenWrt. L'avantage de cette approche est qu'elle est moins risquée que Buildroot. On peut
intégrer le paquet .ipk ou (.apk pour la future version) dans le système soit avec Image Builder ou en le transférant directement par SSH sur le routeur.

Le principe est simple. Changer des paramètres de configuration.

Pour du plug & play, il faut changer d'interface et de niveau. Par exemple, le SDK de Teltonika Networks est une version personnalisée de OpenWrt Buildroot. Les
micrologiciels commerciaux basés sur OpenWrt disposent de leur propre interface Web. On peut citer RutOS (Teltonika Networks), GL.iNet et Turris Omnia.

Il y a plusieurs choses à connaître et c'est assez technique. On peut opter pour l'approche la plus simple : réécrire les règles du pare-feu et mettre à niveau vers
la version 1.1.3.

Le code source suivant n'est pas forcément correctement formaté.

/etc/custom-arp-table.nft

table arp filter
flush table arp filter

table arp filter {
    chain output {
        type filter hook output priority filter; policy accept;
        oifname "eth1.832" meta priority set 0:6 counter
    }
}



/etc/custom-postrouting-chain.nft

oifname "eth1.832" icmpv6 type { 133, 135, 136 } meta priority set 0:6 ip6 dscp set cs6 counter


/etc/custom-netdev-table.nft

table netdev filter
flush table netdev filter

table netdev filter {
        chain egress {
                type filter hook egress device eth1 priority filter; policy accept;
                vlan id 832 udp dport 547 vlan pcp set 6 ip6 dscp set cs6 comment "Set QoS values for DHCPv6 packets"
                vlan id 832 udp dport 67 vlan pcp set 6 ip dscp set cs6 comment "Set QoS values for DHCPv4 packets"
        }
}



Je n'ai pas vérifié si les règles de la table netdev sont fonctionnelles, je n'ai pas encore contrôlé avec une capture réseau.

Si vous tester le code source suivant, il faut le reformater (remplacer les espaces par une tabulation).

Shell

# Specify packet priority for packets forwarded to ISP.
uci -q batch <<-EOF
   add firewall include
   set firewall.@include[-1].enabled='1'
   set firewall.@include[-1].type='nftables'
   set firewall.@include[-1].path='/etc/custom-postrouting-chain.nft'
   set firewall.@include[-1].chain='mangle_postrouting'
   set firewall.@include[-1].position='chain-append'
EOF

uci -q batch <<-EOF
   add firewall include
   set firewall.@include[-1].enabled='1'
   set firewall.@include[-1].type='nftables'
   set firewall.@include[-1].path='/etc/custom-arp-table.nft'
   set firewall.@include[-1].position='ruleset-post'
EOF

uci -q batch <<-EOF
   add firewall include
   set firewall.@include[-1].enabled='1'
   set firewall.@include[-1].type='nftables'
   set firewall.@include[-1].path='/etc/custom-netdev-table.nft'
   set firewall.@include[-1].position='ruleset-post'
EOF



Shell

uci -q batch <<-EOF
        add network device
        set network.@device[-1].type='8021q'
        set network.@device[-1].ifname='eth1'
        set network.@device[-1].vid='832'
        set network.@device[-1].name='eth1.832'
        set network.@device[-1].egress_qos_mapping='6:6'
EOF



Mise à niveau de libnftnl (dépendance)

diff --git a/package/libs/libnftnl/Makefile b/package/libs/libnftnl/Makefile
index f06b223993..0fced5bbd7 100644
--- a/package/libs/libnftnl/Makefile
+++ b/package/libs/libnftnl/Makefile
@@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libnftnl
 PKG_CPE_ID:=cpe:/a:netfilter:libnftnl
-PKG_VERSION:=1.2.8
+PKG_VERSION:=1.2.9
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
-PKG_HASH:=37fea5d6b5c9b08de7920d298de3cdc942e7ae64b1a3e8b880b2d390ae67ad95
+PKG_HASH:=e8c216255e129f26270639fee7775265665a31b11aa920253c3e5d5d62dfc4b8



Mise à niveau de nftables

diff --git a/package/network/utils/nftables/Makefile b/package/network/utils/nftables/Makefile
index 06b3fcfcda..f2f7e5f12f 100644
--- a/package/network/utils/nftables/Makefile
+++ b/package/network/utils/nftables/Makefile
@@ -6,12 +6,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nftables
-PKG_VERSION:=1.1.1
+PKG_VERSION:=1.1.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
-PKG_HASH:=6358830f3a64f31e39b0ad421d7dadcd240b72343ded48d8ef13b8faf204865a
+PKG_HASH:=9c8a64b59c90b0825e540a9b8fcb9d2d942c636f81ba50199f068fde44f34ed8
 
 PKG_MAINTAINER:=
 PKG_LICENSE:=GPL-2.0



J'ai modifié directement les informations dans les sources de mon arborescence OpenWrt Buildroot. L'idée serait de créer un feed.

custom-feed/
├── libs
│   ├── libnftnl
│   │   └── Makefile
│   └── libubox
│       └── Makefile
└── network
    ├── services
    │   └── odhcpd
    │       ├── files
    │       │   ├── odhcpd.defaults
    │       │   ├── odhcpd.init
    │       │   └── odhcpd-update
    │       └── Makefile
    └── utils
        └── nftables
            └── Makefile