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

Aller à la navigation Aller à la recherche
 
(31 versions intermédiaires par le même utilisateur non affichées)
Ligne 30 : Ligne 30 :
=dump=
=dump=


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


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


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


<pre>
<pre>
Ligne 144 : 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 client dhcpv6 de pfsense (WIDE-DHCPv6) semble incapable d'envoyer des options personnalisées ce qui empêche de l'utiliser directement.


<br/>'''UPDATE 31/03/18''' Ca bouge doucement chez pfSense pour les raw-sockets de dhcp : https://redmine.pfsense.org/issues/7425#note-9 ; ça permettrait d'éviter de devoir soit patcher dhclient, soit ajouter un switch pour gérer les priorités.
<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. <br>Néanmoins, comme on utilise la fonction <code>Advanced Configuration</code> pour configurer le client dhcp, il ne faudra pas "juste" cocher la case <code>Enable dhcpclient VLAN Priority tagging</code> mais également ajouter au champ <code>Option modifiers</code> l'argument <code>vlan-pcp 6</code> (sinon la configuration avancée override la configuration du vlan dans dhclient)
<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 qui n'est pas intégré (https://github.com/hrs-allbsd/wide-dhcpv6/pull/8)
<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==
==Problème sous pfSense 2.3.2, réglé sous pfsense 2.4.2==
Ligne 259 : 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 303 : 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 314 : 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'''
<br/>'''UPDATE 28/09/18'''
Orange a modifié la chaîne d'authentification.<br>
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
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é.
 
Nouveau script (même source) essayant de mimer au mieux le comportement de salt (la fin de la chaine) :
<pre>
#!/bin/bash
 
login='fti/abcdefg'
pass='abcdefg'
 
tohex() {
  for h in $(echo $1 | sed "s/\(.\)/\1 /g"); do printf %02x \'$h; done
}
 
addsep() {
  echo $(echo $1 | sed "s/\(.\)\(.\)/:\1\2/g")
}
 
r=$(dd if=/dev/urandom bs=1k count=1 2>&1 | md5sum | cut -c1-16)
id=${r:0:1}
h=3C12$(tohex ${r})0313$(tohex ${id})$(echo -n ${id}${pass}${r} | md5sum | cut -c1-32)
 
echo 00:00:00:00:00:00:00:00:00:00:00:1A:09:00:00:05:58:01:03:41:01:0D$(addsep $(tohex ${login})${h})
</pre>


====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>), avec probablement le même problème que pour l'IPv4, à savoir que si derrière on utilise des options de <code>Advanced Configuration</code>, la priorité risque d'être override et non appliquée. -> a revoir car visiblement quand on coche une priorité, ça ajoute des règles (cachées) au firewall pour taguer en prio6
* 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)
Note : il semble également qu'il faille décocher <code>Block bogon networks</code> car la gateway IPv6 Orange est dans un range inutilisé (défini en bogon)
A titre personnel, dans l'immédiat, je lance un client dibbler, et je défini l'ip (quasi fixe) en static-ip6 dans pfsense, je défini des floatings rules pour ICMPv6-neighborsolicitation et ICMPv6-routersolicitation et le dhcp6 + je force net.link.vlan.mtag_pcp=1


=Téléphonie et télévision=
=Téléphonie et télévision=
Ligne 382 : Ligne 417 :
** 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 396 : Ligne 431 :
<br/>'''UPDATE 24/12/17'''
<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>
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)===
===Configuration du switch (RB260GS SwOS 1.x)===
4 203

modifications

Menu de navigation