Auteur Sujet: Remplacement Bbox fibre f@st5330b + Miami par une configuration perso ArchLinux  (Lu 2553 fois)

0 Membres et 1 Invité sur ce sujet

Dean

  • Abonné Bbox fibre
  • *
  • Messages: 4
Bonjour à tous!

Depuis quelques temps, j'ai entrepris de remplacer ma box par une machine totalement configurée à zéro sous ArchLinux. C'est quelque chose qui me tenait à cœur et dont je voulais vous partager l'avancement jusqu'ici.  ;D

Status
[OK] NAT + réseau local
[OK] Internet + IP publique
[OK] ipTV avec la Miami  ;D

Voilà ma configuration jusqu'ici :



NAT + IP publique VLAN100

Je dispose de deux port ethernet sur ma machine :
  • eno1 - Mon port externe "WAN"
  • enp2s0 - Mon port interne "LAN" relié à un Switch

Pour gérer chaque port, j'utilise Netctl avec deux profils.

VLAN100

Il y a d'abord un profil VLAN 100 utilisé pour résoudre internet avec Bouygues. Le port ethernet eno1 est donc relié au boitier ONT.

/etc/netctl/extern-profile
Description='Public Interface when wired directly on the outside world'
Interface=eno1.100
Connection=vlan
BindsToInterfaces=eno1
VLANID=100
IP=dhcp
DHCPClient='dhcpcd'
DNS=('10.0.0.1')
MACAddress=XX:XX:XX:XX:XX:XX
ForceConnect=yes
SkipNoCarrier=yes

En même temps, j'utilise une configuration sur dhcpcd pour envoyer le vendor-class-id:

/etc/dhcpcd.conf
[...]
# Add the bbox vendorclassid
allowinterfaces eno1.100
vendorclassid byteliad_data

Réseau local + DHCP avec dnsmasq

Le DNS 10.0.0.1 est géré par un fork de dnsmasq : Pi-hole
C'est aussi ce fork de dnsmasq qui fait mon serveur DHCP pour le réseau local.

La configuration du réseau local se fait toujours avec netctl:

/etc/netctl/intern-profile
Description='Private Interface'
Interface=enp2s0
Connection=ethernet
IP=static
Address=('10.0.0.1/24')

Associé au DHCP de dnsmasq, cela me fait des addresses IP de la forme 10.0.0.X pour le réseau interne.
J'ai également du 10.6.0.X pour le VPN.

Forwarding + Firewall

Pour le partage internet, j'ai activé le port forwarding:

/etc/sysctl.d/30-ipforward.conf
net.ipv4.ip_forward=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1

Enfin, j'ai mis en place des règles NFTables pour restreindre l'entrée de mon réseau ; et faire le NAT routing:

/etc/nftables.conf
#!/usr/bin/nft -f

flush ruleset

# FIREWALL
table inet firewall {
    # Dispatcher
    chain interface_dispatch {
        type filter hook input priority 0; policy drop;

        iif lo accept comment "Accept any localhost traffic"
        ct state invalid drop comment "Drop invalid connections"

        iifname enp2s0 accept comment "Accept any local network traffic"
        iifname eno1.100 jump wan_input

        reject with icmpx type port-unreachable # refuse traffic from all other interfaces
    }
    # Rules for the outside world input
    chain wan_input {
        ct state related,established accept comment "Accept traffic originated from us"
    }

    chain forward {
        type filter hook forward priority 0; policy drop;
        iifname enp2s0 accept comment "Forward any local network traffic"
        iifname eno1.100 oifname enp2s0 accept comment "Forward traffic that have been nated or port forwarded"
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
}

# NAT
table inet nat {
  chain postrouting {
    type nat hook postrouting priority 100;
    oifname eno1.100 masquerade
  }
}



Miami (UPnP + IPTV)

UPnP

Comme j'utilise nftables (plus récent que iptables) ; j'ai dû installer une version compilée pour nftables de miniupnpd !
J'utilise donc miniupnpd-nft-git que j'ai installé avec pikaur.
Pour la persistence j'ai dû ajouter manuellement le flag de configuration --leasefile

La configuration est la suivante:
/etc/miniupnpd/miniupnpd.conf
ext_ifname=eno1.100
listening_ip=enp2s0
enable_natpmp=yes
min_lifetime=120
max_lifetime=86400
upnp_forward_chain=forwardUPnP
upnp_nat_chain=UPnP
upnp_nat_postrouting_chain=postroutingUPnP
lease_file=/etc/miniupnpd/upnp.leases
system_uptime=yes
notify_interval=60
clean_ruleset_interval=600
# UUID, generate your own UUID with "uuidgen"
uuid=134A453C-CFE4-4516-BE5C-12DFBE1B2A26
allow 1024-65535 10.0.0.0/24 1024-65535
deny 0-65535 0.0.0.0/0 0-65535

Et cela fonctionne comme un charme :)

IPTV

J'ai installé igmpproxy avec la configuration suivante:

/etc/igmpproxy.conf
phyint eno1.100 upstream ratelimit 0 threshold 1
    altnet 89.86.96.0/24
    altnet 89.86.97.0/24
    altnet 176.165.8.0/24
    altnet 193.251.97.0/24

phyint enp2s0 downstream ratelimit 0 threshold 1

J'ai également modifié l'adresse MAC de mon port ethernet enp2s0 pour simuler ce que j'avais en sortie de ma box.
Concernant NFTables, j'ai ouvert diverses choses spécifiques à la TV, dont ICMP et IGMP:

table inet filter {
    [...]
    chain wan_input {
       [...]
       ip protocol igmp accept comment "Accept IGMP"
    }
    [...]
}

table inet nat {
  chain prerouting {
    type nat hook prerouting priority -100;

    udp dport 20000-30000 ip saddr { 212.195.48.0/24, 212.195.244.0/24, 62.34.201.0/24, 194.158.119.0/24, 195.36.152.0/24 } dnat to 10.0.0.5 comment "Forward bbox miami replay"
  }

  [...]
}

Le réseau local n'a pas de blocage particulier sur ses ports. Et la Miami a une ip fixe : 10.0.0.5
Dans le diagnostic, la Miami me dit qu'elle ne se considère pas connectée à la box, le champs "Bouygues" est à NON.

Les requêtes IMGP arrivent :
% sudo tcpdump -li eno1.100 igmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno1.100, link-type EN10MB (Ethernet), capture size 262144 bytes
19:04:10.395593 IP 0.0.0.0 > all-systems.mcast.net: igmp query v2
19:04:12.516605 IP maxwell > 224.0.1.187: igmp v2 report 224.0.1.187
19:04:20.196575 IP maxwell > 239.255.3.22: igmp v2 report 239.255.3.22
19:05:07.646597 IP maxwell > 239.255.255.250: igmp v2 report 239.255.255.250
19:05:07.903257 IP maxwell > 239.255.255.250: igmp v2 report 239.255.255.250
19:05:38.968012 IP maxwell > all-routers.mcast.net: igmp leave 239.255.255.250
19:06:15.395866 IP 0.0.0.0 > all-systems.mcast.net: igmp query v2
19:06:19.663195 IP maxwell > 239.255.3.22: igmp v2 report 239.255.3.22
19:06:22.436584 IP maxwell > 224.0.1.187: igmp v2 report 224.0.1.187
maxwell étant le nom d'hôte de ma machine, c'est le nom que j'ai donné à mon routeur.

Lorsque je reset la Miami aux paramètres d'usine, celui-ci trouve internet, et trouve 404 chaines en iptv.

Si vous souhaitez plus de détails sur ma configuration, ou des retours de commande, je peux probablement vous fournir ça :)



[EDIT 14/04/2020] Ajout de ICMP en entrée de nftables - Précision de l'erreur F3411

[EDIT 15/04/2020] Ajout de la config UPnP pour la miami ; formattage du post avec des titres et sous-titres

[EDIT 15/04/2020 (2)] Modification des nftables pour plus de compatibilité avec UPnP ; Déplacement des règles TV dans le forward

[EDIT 16/04/2020] UPnP est maintenant *vraiment* fonctionnel ; persistant (avec le leasefile) ; et le forwarding a été modifié dans le nftable pour ne pas bloquer les paquets. Toujours pas d'IPTV ^^

[EDIT 17/04/2020] Victoire ! IPTV fonctionne! J'ai dû simplifier un peu la configuration de IGMPProxy ; et je dois le redémarrer un peu manuellement si je reboot mon routeur. Je vais chercher à améliorer la persistance. Aucune idée de la stabilité pour l'instant, je verrais à l'usage!

[EDIT 17/04/2020 2] Retrait de ICMP — Semble inutile, et donne trop d'informations et de vecteurs d'attaques à être ouvert.
« Modifié: 17 avril 2020 à 18:11:45 par Dean »

mirtouf

  • Abonné Bbox fibre
  • *
  • Messages: 1 304
  • Chelles (77)
    • L'antre de la bête
Et côté fw, est-ce qu'il y a des paquets bloqués ?
De mémoire il faut aussi accepter les paquets ICMP pour un bon fonctionnement.
Côté IGMP, cela m'a l'air bon. Il faudrait vérifier avec les logs d'igmpproxy pour en être sûr.

Dean

  • Abonné Bbox fibre
  • *
  • Messages: 4
Ce matin, j'ai ouvert le service ICMP comme suggéré ci-dessus.
Puis ce début d'après midi j'ai désactivé temporairement tout filtrage sur le forward.
Ensuite, pour être sûr, j'ai redémarré complètement la Miami
Chose intéressante, la Miami a alors reçue une mise à jour. Bon timing, ou bien j'ai débloqué quelque chose?

Dans les diagnostiques de la Miami:
Internet - Box internet - Bouygues OFF (!)
Internet - Admin bouygtel — Service d'auto-configuration ON
Internet - Admin bouygtel — Dernier contact (date du jour)
Internet - Admin bouygtel — Règle NAT OFF (!)

TV - TV par internet - Steaming ON
TV - TV par internet - IPTV OFF (!)
TV - TV par internet - IPTV HD OFF (!)
Aucun débit Steaming renseigné et aucune informations dans la partie TV - Statistiques

Une fois le forward restreint à nouveau selon les mêmes règles ; et la Miami redémarrée, je note aucune différence dans les diagnostiques. Internet - Admin bouygtel — Dernier contact se met bien à jour comme attendu.
Je vais chercher la règle à NAT pour que l'Admin bouygtel soit content, et il faut que je trouve aussi comment faire croire à la Miami qu'elle est connectée à la Box.
Ce sont pour moi les priorités à comprendre pour l'instant.

Je suis toujours ouvert à toutes suggestions, et idées :-)

mirtouf

  • Abonné Bbox fibre
  • *
  • Messages: 1 304
  • Chelles (77)
    • L'antre de la bête
Bouygues OFF c'est normal et pour avoir ON il faut avoir un serveur web qui répondra à certaines requêtes sur des ports non standards.
Le point à problème est le dernier point NAT, il doit être sur ON. Je n'ai pas trop l'habitude nftables, il faudra revérifier tes règles, la Miami doit avoir accès à l'internet avec les DNS ByTel si possible.

EDIT: la miami a besoin de l'upnp pour ouvrir un port et contacter le TR-069

Dean

  • Abonné Bbox fibre
  • *
  • Messages: 4
Pour l'UPnP ; j'ai installé linux-idg ; mais je ne suis pas encore certain de la configuration ; je vais tâcher de le débugger.
Mais ça fait sens que la Miami cherche à créer cette règle NAT en utilisant UPnP :)

EDIT: j'ai trouvé une version de miniupnpd à installer qui supporte NFTable ; je vais essayer ça :)

EDIT2 : j'ai finalement une configuration UPnP fonctionnelle, je vais documenter ça dans mon message initial.
J'ai désormais Internet - Admin bouygtel — Règle NAT ON :D
La règle de redirection est bel et bien paramétrée ; je la désormais lorsque je fais nft list ruleset.

Toujours pas de IPTV par contre. Je vais investiguer un peu ce qu'il se passe sur mon réseau
« Modifié: 15 avril 2020 à 07:57:13 par Dean »

jeltop

  • Abonné Bbox adsl
  • *
  • Messages: 5
Bonjour

Comment avez vous fait pour avoir sur la box miami tv la télé apres le reset?
je cherche à y installer un custom firmware , est ce possible? quand on veut y faire un reset il nous demande juste soit reinitialiser soit redemarrer
j'ai tenté d'y mettre une carte ssd pour qu'il l'a prenne mais sans succes

avez vous une solution de votre coté?
comment faites vous pour avoir acces sans la bbox bouygues?
je voudrais l'utiliser avec ma freebox
merci pour vos conseils

Dean

  • Abonné Bbox fibre
  • *
  • Messages: 4
GRANDE VICTOIRE ce matin !
IPTV est fonctionnel :)

Aucune idée de la stabilité ; je n'ai pas eu à changer grand chose. Néanmoins, j'ai encore de la persistance à améliorer après un redémarrage de ma machine.



Bonjour

Comment avez vous fait pour avoir sur la box miami tv la télé apres le reset?
je cherche à y installer un custom firmware , est ce possible? quand on veut y faire un reset il nous demande juste soit reinitialiser soit redemarrer
j'ai tenté d'y mettre une carte ssd pour qu'il l'a prenne mais sans succes

avez vous une solution de votre coté?
comment faites vous pour avoir acces sans la bbox bouygues?
je voudrais l'utiliser avec ma freebox
merci pour vos conseils

Alors sans être expert, j'ai mes doutes sur la capacité d'utiliser une Miami sur un autre réseau que celui de Bouygues. Pour des raisons d'aillant-droit, les flux sont propriétaires et protégés. Je ne pense pas que tu y auras accès ; même si je me trompe peut-être.