4 231
modifications
(16 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 147 : | Ligne 147 : | ||
* 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 ; | <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 321 : | Ligne 321 : | ||
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> | 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é. | 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> | ||
< | ** 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= |