« Fibre orange en DHCP avec routeur pfsense » : différence entre les versions

Aller à la navigation Aller à la recherche
(44 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[category:networking]][[category: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).  
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).  


Ligne 29 : Ligne 30 :
=dump=
=dump=


==dump requête dhcp de la livebox==
==dump requête dhcp de la livebox (2017, non à jour)==


<pre>
<pre>
Ligne 87 : Ligne 88 :
</pre>
</pre>


==dump requête dhcpv6 de la livebox==
==dump requête dhcpv6 de la livebox (2017, non à jour)==


<pre>
<pre>
Ligne 143 : Ligne 144 :
=Problèmes de pfSense=
=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 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 avec le firewall de pfsense.
* Le client dhcpv6 de pfsense (WIDE-DHCPv6) semble incapable d'envoyer des options personnalisées ce qui empêche de l'utiliser directement.


* Le second problème est lié à un [https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=184117 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.
<br/>'''UPDATE 31/03/18''' Ca bouge doucement chez pfSense pour les raw-sockets de dhcp : https://redmine.pfsense.org/issues/7425#note-9 ; Depuis pfsense 2.4.4, il n'y a plus besoin ni de patcher dhclient, ni de définir les priorités via un switch. Tout peut être fait depuis pfsense pour l'IPv4.
Le patch pour régler ce problème d'options est assez simple :
<br/>'''UPDATE 31/03/18''' pfSense 2.4.3 permet de définir la priorité des paquets dhcp6 directement dans la GUI de configuration de dhcp6 https://redmine.pfsense.org/issues/8200 ; Il reste encore le patch du dhcpv6 pour les options personnalisées qui n'est pas intégré (https://github.com/hrs-allbsd/wide-dhcpv6/pull/8) (nb : il l'est chez opnsense).
 
==Problème sous pfSense 2.3.2, réglé sous pfsense 2.4.2==
* Un autre problème sous pfsense 2.3 était lié à un [https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=184117 bug du dhclient de freebsd] qui n'envoyait pas les options user-class. Ce bug est corrigé sous pfsense 2.4.2.
A titre purement informatif, voici le patch trivial pour pfsense 2.3.2 :
<pre>
<pre>
diff --git a/sbin/dhclient/tables.c b/sbin/dhclient/tables.c
diff --git a/sbin/dhclient/tables.c b/sbin/dhclient/tables.c
Ligne 162 : Ligne 168 :
</pre>
</pre>


* 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==
==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 [https://routerboard.com/RB260GS RB260GS de chez mikrotik] qui à l'avantage d'être peu onéreux tout en restant sympa à configurer. Seule tristesse concernant ce switch, il n'est pas capable de gérer des ACL ipv6.
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. J'utilise un switch [https://routerboard.com/RB260GS RB260GS de chez mikrotik] qui à l'avantage d'être peu onéreux tout en restant sympa à configurer. Seule tristesse concernant ce switch, il n'est 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 et permettre ainsi à notre livebox d'accéder à internet et donc aux serveurs SIP de orange. Ce "faux" serveur dhcp tournera sur un vlan 832 qu'on rendra accessible uniquement à la livebox et restera complètement isolé et indépendant du réel VLAN 832 fournissant la connectivité internet de orange.


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.
Enfin, dans le cas ou vous ne pourriez pas brancher directement le port LAN de la livebox à votre décodeur, il est possible (à condition que le switch gérant votre lan soit manageable et supporte les VLANs) de brancher le port LAN de la livebox directement à votre switch de LAN et d'y taguer les paquets sur un VLAN (666 dans cet exemple). Cela impose d'avoir un second switch sur votre lan, qui sera, lui, directement connecté au décodeur et qui doit être lui aussi manageable afin de détaguer du VLAN 666 les paquets pour le décodeur.


[[Fichier:Orange-pfsense.png|800x600px|vignette|centré]]
[[Fichier:Orange-pfsense.png|1100x600px|vignette|centré]]


=Configuration de la connexion internet IPv4=
=Configuration de la connexion internet IPv4=


==Configuration du switch==
==Configuration du switch (RB260GS SwOS 1.X)==


Il faut bien évidemment suivre le [[Fibre_orange_avec_routeur_pfsense#Solution_propos.C3.A9e|schéma de branchement]] au préalable.
Il faut bien évidemment suivre le [[Fibre_orange_en_DHCP_avec_routeur_pfsense#Solution_propos.C3.A9e|schéma de branchement]] au préalable.
Nous allons utiliser les ports de cette manière :
Nous allons utiliser les ports de cette manière :
* port 1 branché sur l'ONT orange.
* port 1 branché sur l'ONT orange. Votre uplink.
* port 2 branché sur le port WAN de la livebox
* port 2 branché sur le port WAN de la livebox. Ce port distribuera à la livebox les deux VLANs TV ainsi que notre clone du VLAN 832 de Orange.
* port 3 branché sur le port WAN de pfsense
* port 3 branché sur le port WAN de pfsense. Ce port distribuera le (vrai) VLAN internet (832) de Orange à pfsense.
* port 4 branché sur le port FAKE de pfsense, qui nous servira à fournir un serveur DHCP factice à la livbox.
* port 4 branché sur le port FAKE de pfsense. Ce port recevra depuis pfsense notre clone du VLAN 832 avec notre serveur DHCP factice.
* port 5 branché sur votre lan afin de garder la main sur la configuration du switch
* port 5 branché sur votre lan afin de garder la main sur la configuration du switch (port de management).


===Onglet system===
===Onglet system===
* Au champ <code>Allow from</code> entrez le bloc réseau que vous utilisez sur votre lan avec le netmask au format CIDR.
* Au champ <code>Allow from</code> entrez le bloc réseau que vous utilisez sur votre lan avec le netmask au format CIDR.
* Au champ <code>Allow from Ports</code> cochez le port 5. '''attention, cela veut dire que l'interface d'administration du switch sera totalement inaccessible depuis les autres ports !'''
* Au champ <code>Allow from Ports</code> cochez le port 5. '''attention, à partir de maintenant l'interface d'administration du switch ne sera accessible que depuis ce port avec une adresse IP correspondant au range que vous avez défini sur le champ précédent'''


===Onglet Forwarding===
===Onglet Forwarding===
Ligne 251 : Ligne 259 :


<br>
<br>
ACL ARP :
ACL DHCP :
* From 3
* From 3
* MAC Src : l'adresse mac de l'interface wan de votre pfsense
* MAC Src : l'adresse mac de l'interface wan de votre pfsense
Ligne 266 : Ligne 274 :
==configuration de pfsense==
==configuration de pfsense==


===Remplacement du binaire dhclient par celui patché===
===UNIQUEMENT POUR pfSense 2.3 : Remplacement du binaire dhclient par celui patché===


Loguez vous en ssh sur votre pfsense et choisissez l'option 8 pour avoir un shell.
Loguez vous en ssh sur votre pfsense et choisissez l'option 8 pour avoir un shell.
Ligne 286 : Ligne 294 :
* dhcp-class-identifier qui contiendra "sagem"
* dhcp-class-identifier qui contiendra "sagem"
* user-class qui contiendra "+FSVDSL_livebox.Internet.softathome.Livebox3"
* user-class qui contiendra "+FSVDSL_livebox.Internet.softathome.Livebox3"
* option-90 qui contiendra votre identifiant de connexion fti/ en hexadécimal
* option-90 (ou rfc3118-auth, c'est la même chose) qui contiendra votre identifiant de connexion fti/ en hexadécimal




Ligne 295 : Ligne 303 :


USERNAME=$1
USERNAME=$1
AUTHSTRING=00:00:00:00:00:00:00:00:00:00:00:66:74:69:2f
AUTHSTRING=00:00:00:00:00:00:00:00:00:00:00:1a:09:00:00:05:58:01:03:41:01:0d:66:74:69:2f


for (( i=0; i<${#USERNAME}; i++ )); do
for (( i=0; i<${#USERNAME}; i++ )); do
Ligne 306 : Ligne 314 :
<pre>
<pre>
pfoo@laptop:~$ ./generator.sh 7kgtyop
pfoo@laptop:~$ ./generator.sh 7kgtyop
00:00:00:00:00:00:00:00:00:00:00:66:74:69:2f:37:6b:67:74:79:6f:70
00:00:00:00:00:00:00:00:00:00:00:1a:09:00:00:05:58:01:03:41:01:0d:66:74:69:2f:37:6b:67:74:79:6f:70
</pre>
</pre>
<br/>'''UPDATE 28/09/18'''
Orange a modifié la chaîne d'authentification.<br>
A ce jour, la pattern minimal qui fonctionne est 00:00:00:00:00:00:00:00:00:00:00:'''1a:09:00:00:05:58:01:03:41:01:0d''':xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx</code> en remplaçant les xx par l'identifiant en hexadécimal. Dans l'exemple ci dessus, ça donnerait 00:00:00:00:00:00:00:00:00:00:00:'''1a:09:00:00:05:58:01:03:41:01:0d''':66:74:69:2f:37:6b:67:74:79:6f:70 <br>
Dans les faits la chaîne est encore plus complexe : 00:00:00:00:00:00:00:00:00:00:00:1a:09:00:00:05:58:01:03:41:01:0d:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:3c:12:'''sa:lt:sa:lt:sa:lt:sa:lt:sa:lt:sa:lt:sa:lt:sa:lt:03:13:zz:ha:sh:ha:sh:ha:sh:ha:sh:ha:sh:ha:sh:ha:sh:ha:sh''' avec la partie en gras qui est dynamique, basé sur la somme md5 d'une chaîne aléatoire, un caractère aléatoire et du mot-de-passe (qui n'était jusqu'alors pas utilisé). La chaîne en gras n'a pas encore été complètement reverse-engineeré.


====Configuration de l'interface====
====Configuration de l'interface====
* Dans la barre de menu de pfsense, cliquez sur <code>interfaces</code> puis sur <code>WAN</code>
* Dans la barre de menu de pfsense, cliquez sur <code>interfaces</code> puis sur <code>WAN</code>
** Au champ <code>IPv4 Configuration Type</code> sélectionnez DHCP
** Au champ <code>IPv4 Configuration Type</code> sélectionnez <code>DHCP</code>
** Dans la section <code>DHCP Client Configuration</code> cochez la case <code>Advanced Configuration</code> et <code>pfSense default</code> en Presets.
** Dans la section <code>DHCP Client Configuration</code> cochez la case <code>Advanced Configuration</code> et <code>pfSense default</code> en Presets.
** Dans la section <code>Lease Requirements and Requests</code> il faut remplir <code>Send options</code> avec les 3 options dhcp que nous avons vu plus tôt, séparées par des virgules. Par exemple :
** Dans la section <code>Lease Requirements and Requests</code> il faut remplir <code>Send options</code> avec les 3 options dhcp que nous avons vu plus tôt, séparées par des virgules. <br/>Par exemple : <code>dhcp-class-identifier "sagem", user-class "+FSVDSL_livebox.Internet.softathome.Livebox3", option-90 00:00:00:00:00:00:00:00:00:00:00:1a:09:00:00:05:58:01:03:41:01:0d:66:74:69:2f:37:6b:67:74:79:6f:70</code>
<pre>dhcp-class-identifier "sagem", user-class "+FSVDSL_livebox.Internet.softathome.Livebox3", option-90 00:00:00:00:00:00:00:00:00:00:00:66:74:69:2f:37:6b:67:74:79:6f:70</pre>
** Dans la section <code>Lease Requirements and Requests</code> il faut remplir <code>Request options</code> avec <code>subnet-mask, broadcast-address, dhcp-lease-time, dhcp-renewal-time, dhcp-rebinding-time, domain-search, routers, domain-name-servers, rfc3118-auth</code>


=Configuration de la connexion internet IPv6 (Work in progress, beta)=
=Configuration de la connexion internet IPv6 (Work in progress, beta)=
Pour résumer à l'heure actuelle (Février 2019) :
* Le client dhcp6 de pfsense a le même problème de raw-socket qui empêche de taguer la priorité directement via le firewall pfsense.
* La priorité peut être définie au niveau de la configuration pfsense du client dhcp6 (section <code>Interfaces</code>)
* La priorité pour ICMPv6-neighborsolicitation et ICMPv6-routersolicitation peut être définie via une floating rule dans le firewall de pfsense.
* Les options personnalisées (11, 15 et 16) ne sont pas encore supportées par le client dhcp6 de pfsense, mais :
** Il y a une PR en attente côté upstream https://github.com/hrs-allbsd/wide-dhcpv6/pull/8 et pfsense est au courant https://redmine.pfsense.org/issues/8173
** opnsense a intégré les modifications proposées pour permettre l'usage des options personnalisées (donc piquer le binaire de opnsense est une solution possible)


=Téléphonie et télévision=
=Téléphonie et télévision=
Ligne 370 : Ligne 390 :
** Au champ <code>Additional BOOTP/DHCP Options</code>, cliquez sur <code>Display Advanced</code>
** Au champ <code>Additional BOOTP/DHCP Options</code>, cliquez sur <code>Display Advanced</code>
*** Dans la section <code>Additional BOOTP/DHCP Options</code>, ajoutez l'option <code>90</code> de type <code>string</code> avec comme valeur <code>00:00:00:00:00:00:00:00:00:00:00:64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30</code> (c'est l'hexadécimal de <code>dhcpliveboxfr250</code>)
*** Dans la section <code>Additional BOOTP/DHCP Options</code>, ajoutez l'option <code>90</code> de type <code>string</code> avec comme valeur <code>00:00:00:00:00:00:00:00:00:00:00:64:68:63:70:6c:69:76:65:62:6f:78:66:72:32:35:30</code> (c'est l'hexadécimal de <code>dhcpliveboxfr250</code>)
*** Dans la section <code>Additional BOOTP/DHCP Options</code>, ajoutez l'option <code>120</code> de type <code>string</code> avec comme valeur <code>00:06:73:62:63:74:33:67:03:41:55:42:06:61:63:63:65:73:73:11:6f:72:61:6e:67:65:2d:6d:75:6c:74:69:6d:65:64:69:61:03:6e:65:74:00</code> (c'est l'hexadécimal de <code>sbct3g.STR.access.orange-multimedia.net</code> qui est le serveur SIP)
*** Dans la section <code>Additional BOOTP/DHCP Options</code>, ajoutez l'option <code>120</code> de type <code>string</code> avec comme valeur <code>00:06:73:62:63:74:33:67:03:53:54:52:06:61:63:63:65:73:73:11:6f:72:61:6e:67:65:2d:6d:75:6c:74:69:6d:65:64:69:61:03:6e:65:74:00</code> (c'est l'hexadécimal de <code>sbct3g.STR.access.orange-multimedia.net</code> qui est le serveur SIP pour Strasbourg)
** Dans la section <code>DHCP Static Mappings for this Interface</code> cliquez sur <code>add</code>
** Dans la section <code>DHCP Static Mappings for this Interface</code> cliquez sur <code>add</code>
*** Au champ <code>MAC Address</code> entrez l'adresse mac de votre livebox
*** Au champ <code>MAC Address</code> entrez l'adresse mac de votre livebox
Ligne 379 : Ligne 399 :
** et terminez par sauvegarder la configuration du serveur DHCP.
** et terminez par sauvegarder la configuration du serveur DHCP.


===Configuration du switch===
<br/>'''UPDATE'''
Notez que l'option 90 est la même quelque soit votre lieux de résidence, mais l'option 120 (SIP) varie selon votre ville. Cependant, il semble qu'on peut utiliser un mauvais serveur sip sans problème .. allez comprendre.
 
<br/>'''UPDATE 24/12/17'''
Il faut désormais que le serveur envoi une nouvelle option supplémentaire (Vendor-specific) à la livebox (en tout cas pour la livebox 4) : option <code>125</code> de type <code>string</code> avec comme valeur <code>00:00:05:58:0c:01:0a:00:00:00:00:00:ff:ff:ff:ff:ff</code>
 
<br/>'''UPDATE 15/12/18'''
Il faut que le serveur envoi l'option domain-search (119) à la livebox. Cette option contient la même chose que l'option 120 (SIP), mais amputée de <code>sbct3g.</code>. <br/>
Ca donne dans le cas présenté ici : <code>00:06:53:54:52:06:61:63:63:65:73:73:11:6f:72:61:6e:67:65:2d:6d:75:6c:74:69:6d:65:64:69:61:03:6e:65:74:00</code> <br/>
Pour plus de simplicité, vous pouvez ausis simplement les champs suivant dans la configuration par défaut du serveur dhcp :
* Domain name : orange.fr
* Domain search list : STR.access.orange-multimedia.net. (pour strasbourg)
 
===Configuration du switch (RB260GS SwOS 1.x)===


Tout d'abord, nous allons créer une ACL afin de forcer les paquets du vlan 832 issu de la livebox vers l'interface fake de votre pfsense (et éviter que la livebox communique ainsi avec l'ONT et donc orange) :
Tout d'abord, nous allons créer une ACL afin de forcer les paquets du vlan 832 issu de la livebox vers l'interface fake de votre pfsense (et éviter que la livebox communique ainsi avec l'ONT et donc orange) :
Ligne 396 : Ligne 429 :




Nous noterez le point commun entre ces deux ACL : c'est le seul cas ou le port source (From) peut communiquer avec deux autres interfaces tout en étant dans le vlan 832. C'est pour cela qu'elles sont nécessaires afin de réaliser une isolation entre le "vrai" vlan 832 de orange, et le "faux" vlan 832 que l'on créé au niveau de pfsense (interface FAKE). Dans tous les autres cas, l'isolation est déjà réalisé au niveau de l'onglet Forwarding du switch.
Nous noterez le point commun entre ces deux ACL : c'est le seul cas ou le port source (From) peut communiquer avec deux autres interfaces du switch tout en étant dans le vlan 832. C'est pour cela que ces ACLs sont nécessaires afin de réaliser une isolation entre le "vrai" vlan 832 de orange, et le "faux" vlan 832 que l'on créé au niveau de pfsense (interface FAKE). Dans tous les autres cas, l'isolation est déjà réalisé au niveau de l'onglet Forwarding du switch.
4 203

modifications

Menu de navigation