Fibre orange en DHCP avec routeur pfsense
Vous voulez utiliser votre propre routeur pour gérer votre connexion internet ? Tout en conservant l'accès à la TV et au téléphone ? Et en plus vous êtes chez orange ?La livebox ne permet malheureusement pas de mettre la connexion internet en mode bridge. Vous trouverez quelques tuto sur internet vous expliquant comment vous passer complètement de la livebox tout en conservant internet et la télévision (mais vous perdrez le téléphone étant donné qu'orange ne fourni aucune information de connexion SIP).
Modifications récentes de l'infrastructure orange
En 2016, orange a grandement modifié son infrastructure internet pour les particuliers. Voici les caractéristiques de la nouvelle infrastructure :
- Arrêt de l'encapsulation PPPoE au profit d'ethernet avec DHCP
- Support de l'ipv6 avec DHCPv6-PD
- Transport de plusieurs VLANs 802.1q jusqu'au client avec gestion de la QoS 802.1p
- le VLAN 832 transporte la connexion internet du client ainsi que la téléphonie SIP
- les VLANs 838 et 840 transportent la TV (respectivement la VoD et la TV)
Spécificités de l'infrastructure orange
Vis à vis des priorités 802.1p :
- Les paquets DHCP, DHCPv6, ARP, ICMPv6-neighborsolicitation et ICMPv6-routersolicitation doivent être tagués en priorité 6 (obligatoire pour avoir une réponse)
- Les paquets VOIP doivent être tagués en priorité 5 (non obligatoire à ce jour)
- Tous les autres paquets doivent être en priorité 0 (non obligatoire, mais nécessaire pour avoir le débit maximum de votre offre)
Vis à vis de DHCP :
- orange utilise l'option 90 (rfc3118-authentication) afin d'envoyer l'identifiant de votre connexion (fti/*****). Par chance, orange n'utilise ni les mécanismes RDM ni aucune fonctionnalité de hashage ce qui permet d'envoyer directement votre id de connexion sous forme de token.
- D'autres options dhcp sont obligatoires : dhcp-class-identifier et user-class
- A noter que votre ip ne sera pas fixe. Elle restera la même tant que le bail dhcp restera valide (et renouvelé) par votre client. Si vous arrêtez de renouveler le bail, un autre client peut se voir attribuer "votre" ip.
Vis à vis de DHCPv6 PD
- pour l'authentification, même principe que pour dhcp mais avec l'option 11
- les autres options obligatoires sont l'user-class (option 15) et le vendor-class (option 16)
- Encore une fois, le bloc qui vous sera attribué ne restera pas fixe. Il restera le même tant que votre bail dhcp est valide, mais peut être attribué à un autre client dès lors que votre bail n'est plus valide.
dump
dump requête dhcp de la livebox
802.1Q Virtual LAN, PRI: 6, CFI: 0, ID: 832 Bootstrap Protocol (Discover) Message type: Boot Request (1) Hardware type: Ethernet (0x01) Hardware address length: 6 Hops: 0 Transaction ID: 0x0f48395c Seconds elapsed: 1 Bootp flags: 0x8000, Broadcast flag (Broadcast) 1... .... .... .... = Broadcast flag: Broadcast .000 0000 0000 0000 = Reserved flags: 0x0000 Client IP address: 0.0.0.0 Your (client) IP address: 0.0.0.0 Next server IP address: 0.0.0.0 Relay agent IP address: 0.0.0.0 Client MAC address: Sagemcom_xx:yy:zz (2c:39:96:xx:yy:zz) Client hardware address padding: 00000000000000000000 Server host name not given Boot file name not given Magic cookie: DHCP Option: (53) DHCP Message Type (Discover) Length: 1 DHCP: Discover (1) Option: (55) Parameter Request List Length: 11 Parameter Request List Item: (1) Subnet Mask Parameter Request List Item: (3) Router Parameter Request List Item: (6) Domain Name Server Parameter Request List Item: (15) Domain Name Parameter Request List Item: (28) Broadcast Address Parameter Request List Item: (51) IP Address Lease Time Parameter Request List Item: (58) Renewal Time Value Parameter Request List Item: (59) Rebinding Time Value Parameter Request List Item: (90) Authentication Parameter Request List Item: (119) Domain Search Parameter Request List Item: (120) SIP Servers Option: (60) Vendor class identifier Length: 5 Vendor class identifier: sagem Option: (77) User Class Information Length: 44 Instance of User Class: [0] User Class Length: 43 User Class Data: 46535644534c5f6c697665626f782e496e7465726e65742e736f66746174686f6d652e4c697665626f7833 Option: (90) Authentication Length: 22 Protocol: configuration token (0) Algorithm: 0 Replay Detection Method: Monotonically-increasing counter (0) RDM Replay Detection Value: 0x0000000000000000 Authentication Information: fti/******* Option: (255) End Option End: 255
dump requête dhcpv6 de la livebox
802.1Q Virtual LAN, PRI: 6, CFI: 0, ID: 832 DHCPv6 Message type: Solicit (1) Transaction ID: 0xaae9a2 Client Identifier Option: Client Identifier (1) Length: 10 Value: 000300012c3996xxyyzz DUID: 000300012c3996xxyyzz DUID Type: link-layer address (3) Hardware type: Ethernet (1) Link-layer address: 2c:39:96:xx:yy:zz Option Request Option: Option Request (6) Length: 4 Value: 000b0017 Requested Option code: Authentication (11) Requested Option code: DNS recursive name server (23) Elapsed time Option: Elapsed time (8) Length: 2 Value: 04bb Elapsed time: 12110 ms Authentication Option: Authentication (11) Length: 22 Value: 00000000000000000000006674692f61616161616161 Protocol: 0 Algorithm: 0 RDM: 0 Replay Detection: 0000000000000000 Authentication Information: 6674692f61616161616161 User Class Option: User Class (15) Length: 45 Value: 002b46535644534c5f6c697665626f782e496e7465726e65742e736f66746174686f6d652e6c697665626f7833 Vendor Class Option: Vendor Class (16) Length: 11 Value: 0000040e0005736167656d Enterprise ID: SAGEMCOM SAS (1038) vendor-class-data: sagem Identity Association for Prefix Delegation Option: Identity Association for Prefix Delegation (25) Length: 12 Value: 96395f2a00000e1000001518 IAID: 96395f2a T1: 3600 T2: 5400
Problèmes de pfSense
- Le principal problème qui se pose vient du fait que le client dhcp de pfsense utilise les raw sockets. Par conséquents, les paquets du client dhcp ne traverse pas pf et ne pourront donc pas être tagués en priorité 6.
- Le second problème est lié à un bug du dhclient de freebsd qui n'envoi pas les options user-class. Ce bug est corrigé chez freebsd, mais pas encore répercuté dans pfsense 2.3.2.
Le patch est assez simple :
diff --git a/sbin/dhclient/tables.c b/sbin/dhclient/tables.c index c7bac57..bee776c 100644 --- a/sbin/dhclient/tables.c +++ b/sbin/dhclient/tables.c @@ -335,6 +335,7 @@ unsigned char dhcp_option_default_priority_list[] = { DHO_DHCP_REBINDING_TIME, DHO_DHCP_CLASS_IDENTIFIER, DHO_DHCP_CLIENT_IDENTIFIER, + DHO_DHCP_USER_CLASS_ID, DHO_SUBNET_MASK, DHO_TIME_OFFSET, DHO_CLASSLESS_ROUTES,
- Enfin, le client dhcpv6 de pfsense (WIDE-DHCPv6) semble incapable d'envoyer des options personnalisées ce qui empêche de l'utiliser directement.
Solution proposée
Pour palier à l'utilisation des raw sockets, j'ai simplement ajouté un switch gérant les vlans entre l'ONT orange et le routeur pfsense. Ce switch permettra de modifier la priorité des paquets dhcp et ARP, mais aussi de faire le tri entre le vlan internet destiné à pfsense et les vlans TV destinés à la livebox. A titre perso, j'utilise un switch RB260GS de chez mikrotik qui à l'avantage d'être peu onéreux tout en restant sympa à configurer. Seule tristesse concernant ce switch, il ne semble pas capable de gérer des ACL ipv6.
A côté de ça, afin de conserver l'accès à la téléphonie orange, on va créer un serveur dhcp émulant le comportement du serveur dhcp de orange de permettre à notre livebox d'accéder à internet et donc aux serveurs SIP de orange. Ce "faux" serveur dhcp tournera évidemment sur le vlan 832.
=Configuration IPv4