Dhclient en ipv6 : « Can't bind to dhcp address: Cannot assign requested address »

Salut,

Quand je lance dhclient en faisant dhclient -cf /etc/dhcp/dhclient6.conf -6 -P -v -d wan, je tombe sur une erreur que je ne comprend pas :

Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Can't bind to dhcp address: Cannot assign requested address
Please make sure there is no other dhcp server
running and that there's no entry for dhcp or
bootp in /etc/inetd.conf.   Also make sure you
are not running HP JetAdmin software, which
includes a bootp server.

If you think you have received this message due to a bug rather
than a configuration issue please read the section on submitting
bugs on either our web page at www.isc.org or in the README file
before submitting a bug.  These pages explain the proper
process and the information we find helpful for debugging..

exiting.

Pour info, voici quelques configurations :

┌ (gilles@router + 1) (08/12/16 - 11:48:26) (0.00 - 18%) (~)
└% cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# Internal network
allow-hotplug int
iface int inet static
        address 10.255.0.1
        netmask 255.255.255.0
        post-up /bin/ip add del fe80::bccd:fdff:fea6:7828/64 dev int
iface int inet6 static
        address 2001:470:1f13:6fd::
        netmask 64

# WAN
allow-hotplug wan
#iface wan inet dhcp
iface wan inet static
        address         163.172.41.50
        netmask         255.255.255.0
        gateway         163.172.41.1
┌ (gilles@router + 0) (08/12/16 - 11:50:45) (0.00 - 18%) (~)
└% ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: int: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether be:cd:fd:a6:78:28 brd ff:ff:ff:ff:ff:ff
    inet 10.255.0.1/24 brd 10.255.0.255 scope global int
       valid_lft forever preferred_lft forever
    inet6 2001:470:1f13:6fd::/64 scope global 
       valid_lft forever preferred_lft forever
3: wan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:07:cb:03:c6:10 brd ff:ff:ff:ff:ff:ff
    inet 163.172.41.50/24 brd 163.172.41.255 scope global wan
       valid_lft forever preferred_lft forever
    inet6 fe80::207:cbff:fe03:c610/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
┌ (gilles@router + 0) (08/12/16 - 11:51:25) (0.00 - 18%) (~)
└% cat /etc/sysctl.conf 
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.wan.accept_ra=2
┌ (gilles@router + 0) (08/12/16 - 11:52:01) (0.00 - 18%) (~)
└% ip -6 r 
2001:470:1f13:6fd::/64 dev int  proto kernel  metric 256 
fe80::/64 dev wan  proto kernel  metric 256 
default via fe80::ce46:d6ff:feb2:c9f1 dev wan  proto ra  metric 1024  expires 1718sec hoplimit 64
┌ (gilles@router + 0) (08/12/16 - 11:53:07) (0.00 - 18%) (~)
└% ip -6 n
fe80::ce46:d6ff:feb2:c9f1 dev wan  router FAILED
┌ (gilles@router + 0) (08/12/16 - 11:53:11) (0.00 - 18%) (~)
└% sudo ip6tables-save 
# Generated by ip6tables-save v1.4.21 on Thu Dec  8 11:55:28 2016
*mangle
:PREROUTING ACCEPT [13967:1777611]
:INPUT ACCEPT [5748:537880]
:FORWARD ACCEPT [985:98858]
:OUTPUT ACCEPT [6869:1172566]
:POSTROUTING ACCEPT [7854:1271424]
COMMIT
# Completed on Thu Dec  8 11:55:28 2016
# Generated by ip6tables-save v1.4.21 on Thu Dec  8 11:55:28 2016
*nat
:PREROUTING ACCEPT [4612:983293]
:INPUT ACCEPT [634:58272]
:OUTPUT ACCEPT [838:77818]
:POSTROUTING ACCEPT [1462:141326]
COMMIT
# Completed on Thu Dec  8 11:55:28 2016
# Generated by ip6tables-save v1.4.21 on Thu Dec  8 11:55:28 2016
*filter
:INPUT ACCEPT [5759:538672]
:FORWARD ACCEPT [985:98858]
:OUTPUT ACCEPT [6887:1174670]
:ICMP_CHECK - [0:0]
:SSH_CHECK - [0:0]
COMMIT
# Completed on Thu Dec  8 11:55:28 2016
┌ (gilles@router + 0) (08/12/16 - 11:55:28) (0.00 - 18%) (~)
└% sudo netstat -ltupn
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      535/sshd        
tcp        0      0 127.0.0.1:14615         0.0.0.0:*               LISTEN      568/unbound     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      820/exim4       
tcp        0      0 127.0.0.1:8953          0.0.0.0:*               LISTEN      568/unbound     
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      554/dnsmasq     
tcp        0      0 10.255.0.1:53           0.0.0.0:*               LISTEN      554/dnsmasq     
tcp6       0      0 :::22                   :::*                    LISTEN      535/sshd        
tcp6       0      0 ::1:14615               :::*                    LISTEN      568/unbound     
tcp6       0      0 ::1:25                  :::*                    LISTEN      820/exim4       
tcp6       0      0 ::1:8953                :::*                    LISTEN      568/unbound     
tcp6       0      0 ::1:53                  :::*                    LISTEN      554/dnsmasq     
tcp6       0      0 2001:470:1f13:6fd:::53  :::*                    LISTEN      554/dnsmasq     
udp        0      0 127.0.0.1:14615         0.0.0.0:*                           568/unbound     
udp        0      0 127.0.0.1:53            0.0.0.0:*                           554/dnsmasq     
udp        0      0 10.255.0.1:53           0.0.0.0:*                           554/dnsmasq     
udp6       0      0 ::1:14615               :::*                                568/unbound     
udp6       0      0 ::1:53                  :::*                                554/dnsmasq     
udp6       0      0 2001:470:1f13:6fd:::53  :::*                                554/dnsmasq     
┌ (gilles@router + 0) (08/12/16 - 11:57:09) (0.00 - 18%) (~)
└% sudo netstat -tupn 
Connexions Internet actives (sans serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp6       0      0 2001:470:1f13:6fd:::22  2001:470:1f13:6fd:37872 ESTABLISHED 826/sshd: gilles [p
tcp6       0      0 2001:470:1f13:6fd:33891 2001:470:1f13:6fd:::514 ESTABLISHED 529/rsyslogd

Voilà, si quelqu’un a une idée, parce que je suis à cours.

Bonjour,

Pour un serveur chez Online.net , voici une configuration qui marche :

extrait de /etc/network/interfaces

# The primary network interface
auto eth0
iface eth0 inet static
        address   163.172.17.xx/24
        broadcast 163.172.17.255
        gateway   163.172.17.1
        #
        pre-up sysctl -w net.ipv6.conf.$IFACE.disable_ipv6=0
        pre-up sysctl -w net.ipv6.conf.$IFACE.accept_ra=2
        up sleep 10
        up dhclient -6 -cf /etc/dhcp/dhclient6.conf -pf /var/run/dhclient6_P.eth0.pid -P eth0
        up sleep 2
        up dhclient -6 -cf /etc/dhcp/dhclient6.conf -pf /var/run/dhclient6_N.eth0.pid -N eth0

/etc/dhclient/dhclient6.conf


interface "eth0" {
        # DUID pour 2001:bc8:xxxx:xxxx::/56
        send dhcp6.client-id 00:11:22:33:44:55:66:77:88:99;
        request;
}

La raison du problème est expliquée ici : https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1447715

D’où l’attente de 10 secondes avant de faire la demande de préfixe.

J’espère que cela marchera pour toi.

AnonymousCoward

Ça donne exactement la même erreur.
Il n’existe pas un autre client DHCPv6 qui fonctionne mieux ? Je sais que Online imposait d’utiliser dibbler parce qu’il fonctionne mieux que dhclient.

Hmm.

La machine en question, c’est un vrai serveur de chez Online.net, une dédibox genre le modèle XC 2016 ? Ou est-ce que c’est du Scaleway / VPS / offre “cloud” ?

Sans avoir trop testé Dibbler, j’ai testé wide-dhcpv6-client, qui n’est plus maintenu depuis plusieurs années, et cela marchait bien jusqu’à que je sois affecté par le problème décrit ici .

A cette occasion, un technicien de chez Online m’a indiqué que le client DHCP de l’ISC était le seul réellement utilisable.


AnonymousCoward

Au départ, cette machine était un conteneur LXC, puis elle est devenue une vraie machine virtuelle Qemu afin de m’épargner les erreurs de réseau dues au conteneur. En fait, c’est pour router vers un réseau privé avec d’autres machines virtuelles (des conteneurs, cette fois).

Je crois que le problème vient du réseau, en fait, il m’est impossible de faire la moindre communication en IPv6 sur l’interface wan, mais je ne comprend pas pourquoi. Le moindre paquet envoyé tomber sous le coup de cette erreur : « Cannot assign requested address ». Ça n’a rien à voir avec l’IPv6 de Online ou autre.
J’ai testé l’autre interface, int et tout fonctionne.
Qu’est-ce qui pourrait empêcher une interface de communiquer en IPv6 avec cette erreur, j’ai déjà pensé à netfilter, mais tout est accepté :

┌ (gilles@router + 1) (09/12/16 - 9:41:13) (0.00 - 22%) (~)
└% sudo ip6tables-save 
# Generated by ip6tables-save v1.4.21 on Fri Dec  9 09:45:03 2016
*mangle
:PREROUTING ACCEPT [5184:594365]
:INPUT ACCEPT [3440:316058]
:FORWARD ACCEPT [78:6964]
:OUTPUT ACCEPT [3007:696682]
:POSTROUTING ACCEPT [3085:703646]
COMMIT
# Completed on Fri Dec  9 09:45:03 2016
# Generated by ip6tables-save v1.4.21 on Fri Dec  9 09:45:03 2016
*nat
:PREROUTING ACCEPT [950:222230]
:INPUT ACCEPT [85:7721]
:OUTPUT ACCEPT [290:22090]
:POSTROUTING ACCEPT [335:26168]
COMMIT
# Completed on Fri Dec  9 09:45:03 2016
# Generated by ip6tables-save v1.4.21 on Fri Dec  9 09:45:03 2016
*filter
:INPUT ACCEPT [3449:316706]
:FORWARD ACCEPT [78:6964]
:OUTPUT ACCEPT [3026:698950]
:ICMP_CHECK - [0:0]
:SSH_CHECK - [0:0]
COMMIT
# Completed on Fri Dec  9 09:45:03 2016

Je pense que le problème vient des flags tentative dadfailed présents dans la ligne de l’adresse link local de l’interface wan. DAD = “duplicate address detection”, un mécanisme pour vérifier que l’adresse n’est pas déjà active sur le réseau avant d’autoriser son utilisation. Cette adresse IPv6 link local est dérivée de l’adresse MAC de l’interface, donc si ce n’est pas un faux positif cela pourrait indiquer qu’une autre interface connectée au même réseau à la même adresse MAC (clone de VM ?). Si tu es sûr qu’il n’y a pas de doublon, tu peux désactiver DAD sur l’interface via les sysctl concernés sous net.ipv6.conf.wan (cf ip-sysctl.txt, pas la doc sous la main).

PS : pour quelle raison supprimes-tu l’adresse IPv6 link local sur l’interface int ?

1 J'aime

Parce qu’elle ne sert à rien sur cette interface et pour tester si ce n’est pas ça qui me cause problème. Du coup, je le laisse.

Ah, oui, on dirait que c’est ça. J’ai trouvé le coupable en plus. En fait, Online attend une adresse MAC spécifique pour le serveur et comme ce n’est pas l’hôte, mais une machine virtuelle qui s’adresse au réseau d’Online, j’ai changé l’adresse MAC de l’interface connecté au réseau Online et j’ai fait usurper cette adresse à la machine virtuelle qui est censée s’y connecter.
Du coup, j’ai dû me tromper quelque part et l’hôte utilisait aussi la même adresse de lien.

Bonjour,

Une petit retour sur ce sujet, car je viens de réussir à faire fonctionner ce bordel.
En fait, c’est tout simple, il faut juste un peu manipuler sysctl.

Donc, avec mes interfaces wan reliée à Internet, j’ai ajouté les clefs suivantes dans /etc/sysctl.conf :

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.wan.forwarding=0
net.ipv6.conf.wan.accept_ra=2
net.ipv6.conf.all.accept_ra=0

Je ne sais pas si l’ordre des clefs est important, mais ça marche comme ça et je n’ai plus envie d’y toucher.

L’ordre est probablement important car all.forwarding a un effet sur le paramètre forwarding de toutes les interfaces, et le paramètre forwarding d’une interface a un effet sur d’autres paramètres de l’interface comme accept_ra.

Cf. le fichier ip-sysctl.txt dans la documentation du noyau.

Ceci dit, le résultat de ces valeurs me laisse un peu perplexe.

net.ipv6.conf.all.forwarding=1 active le forwarding IPv6 sur toutes les interface, donc configure la machine en routeur IPv6. Cela inhibe la prise en compte des annonces de routeur (accept_ra=0).

net.ipv6.conf.wan.forwarding=0 désactive le forwarding IPv6 sur l’interface wan, ce qui réactive la prise en compte des annonces de routeur (accept_ra=1) reçues par cette interface.

D’une part je ne vois pas bien l’intérêt d’activer le forwarding globalement sauf sur l’interface wan. Cela implique que la machine fait suivre les paquets entrant par un autre interface, mais pas les paquets entrant par l’interface wan. Donc aucune communication bidirectionnelle impliquant l’interface wan n’est possible à travers cette machine.

D’autre part les deux lignes suivantes devraient être superflues :

  • net.ipv6.conf.wan.accept_ra=2 sert à forcer la prise en compte des RA même si forwarding=1, ce qui n’est pas nécessaire puisque tu as remis forwarding=0 sur cette interface

  • net.ipv6.conf.all.accept_ra=0 est la valeur par défaut avec net.ipv6.conf.all.forwarding=1

Pour que l’interface wan puisse recevoir les annonces de routeurs (je n’ai pas dit que je trouvais ça logique).

Si tu veux être logique, non, pourtant, je l’ai défini sur mon routeur et ça fonctionne.[quote=“PascalHambourg, post:10, topic:71965”]
D’autre part les deux lignes suivantes devraient être superflues :

  • net.ipv6.conf.wan.accept_ra=2 sert à forcer la prise en compte des RA même si forwarding=1, ce qui n’est pas nécessaire puisque tu as remis forwarding=0 sur cette interface
  • net.ipv6.conf.all.accept_ra=0 est la valeur par défaut avec net.ipv6.conf.all.forwarding=1
    [/quote]
    Quand ça marche, surtout touches-y pas !

Le réglage accept_ra=2 sur l’interface devrait suffire. Il est prévu pour ça.

Ton routeur, c’est cette machine ? Je n’ai pas le courage de relire le début du fil.

J’ai lu la solution. Perso, si j’m’rappelle bien de cette erreur, j’avais remplacer iface eth0 inet static par iface eth0 inet auto.

Si vous voulez essayer pour (sa)voir ^^ si c’est la bonne :slight_smile: erreur :wink: !oL

Cordialement,
Romain

C’est un conteneur LXC géré par Proxmox, je n’ai pas cette option dans l’interface de configuration.
De plus, c’est par le routeur que j’ai accès au routeur, je n’ai pas envie de couper la branche sur laquelle je suis assis.

1 J'aime

:slight_smile: ^^ Bonne journée