Назад | Перейти на главную страницу

Получение IP от dhcp сервера ipv6

У меня есть следующая лаборатория:

DHCP-СЕРВЕР [Centos 6]

/etc/dhcp/dhcpd6.conf

default-lease-time 2592000;
preferred-lifetime 604800;
option dhcp-renewal-time 3600;
option dhcp-rebinding-time 7200;
allow leasequery;
option dhcp6.info-refresh-time 21600;


dhcpv6-lease-file-name "/var/lib/dhcpd/dhcpd6.leases";

subnet6 3ffe:501:ffff:100::/64 {
}

host ipv6host {
    hardware ethernet 53:54:00:70:1d:ed;
    fixed-address6 3ffe:501:ffff:100::222;
    if packet(0,1) = 1 { log(debug,"Request match!"); }
}

# ip -6 addr show
5: eth1.30@if3: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500
    inet6 3ffe:501:ffff:100::4/64 scope global 
       valid_lft forever preferred_lft forever

В клиенте особой конфигурации нет. Затем, запустив dhcp-сервер, я получаю следующий вывод:

Internet Systems Consortium DHCP Server 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in         the config file
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 0 leases to leases file.
Bound to *:547
Listening on Socket/5/eth1.30/3ffe:501:ffff:100::/64
Sending on   Socket/5/eth1.30/3ffe:501:ffff:100::/64

Solicit message from fe80::5054:ff:fe70:1ded port 546, transaction ID 0xDF54D000
Request match!
Request match!
Sending Advertise to fe80::5054:ff:fe70:1ded port 546
Solicit message from fe80::5054:ff:fe70:1ded port 546, transaction ID 0xDF54D000
Request match!
Request match!
Sending Advertise to fe80::5054:ff:fe70:1ded port 546
... and more

На клиенте я получаю следующее:

dhclient -6 -d  eth1
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Bound to *:546
Listening on Socket/eth1
Sending on   Socket/eth1
PRC: Soliciting for leases (INIT).
XMT: Forming Solicit, 0 ms elapsed.
XMT:  X-- IA_NA 00:70:1d:ed
XMT:  | X-- Request renew in  +3600
XMT:  | X-- Request rebind in +5400
XMT: Solicit on eth1, interval 1010ms.
XMT: Forming Solicit, 1010 ms elapsed.
XMT:  X-- IA_NA 00:70:1d:ed
XMT:  | X-- Request renew in  +3600
XMT:  | X-- Request rebind in +5400
XMT: Solicit on eth1, interval 2070ms.    

Как видите, похоже, что сервер получает запрос от клиента и соответствует записи хоста. я не знаю, почему клиент не получает IP.

Примечание: клиент - это виртуальная машина, а в гипервизоре виртуальный компьютер подключен к мосту с помощью интерфейса eth1.30. Трафик между узлами нормально.

Решено!

Проблема заключалась в ip6tables. Правила по умолчанию блокируют рекламу с DHCP-сервера.

service ip6tables stop

Исправил бы проблему. Взгляните на комментарии к другим ответам, потому что кажется, что диапазон, который я использовал, не подходит.

ВАЖНЫЙ. По крайней мере, с 2 ящиками Centos 6 (сервер и клиент) назначение ip с использованием MAC-адреса работает нормально.

источник: http://www.redhat.com/archives/anaconda-devel-list/2010-November/msg00172.html

В DHCPv6 клиенты больше не идентифицируются с помощью своего MAC-адреса, а с помощью DUID (который одинаков для всех интерфейсов клиента, поэтому теоретически легче идентифицировать клиента). По этой причине вы также должны поместить определение хоста в блок подсети. Система может иметь разные адреса в зависимости от интерфейса и комбинации DUID. Это пример из руководство по Linux IPv6:

default-lease-time 600;
max-lease-time 7200; 
log-facility local7; 
subnet6 2001:db8:0:1::/64 {
    # Range for clients
    range6 2001:db8:0:1::129 2001:db8:0:1::254;

    # Range for clients requesting a temporary address
    range6 2001:db8:0:1::/64 temporary;

    # Additional options
    option dhcp6.name-servers 2001:4860:4860::8888;
    option dhcp6.domain-search "domain.example";

    # Prefix range for delegation to sub-routers
    prefix6 2001:db8:0:100:: 2001:db8:0:f00:: /56;

    # Example for a fixed host address
    host specialclient {
        host-identifier option dhcp6.client-id 00:01:00:01:4a:1f:ba:e3:60:b9:1f:01:23:45;
        fixed-address6 2001:db8:0:1::127;
    } 
}

Вы можете получить DUID клиента из журналов сервера или извлечь его из клиента. Это пример анализа файла, который dhcp6c создает для хранения сгенерированного DUID:

hexdump -e '"%07.7_ax " 1/2 "%04x" " " 14/1 "%02x:" "\n"' /var/lib/dhcpv6/dhcp6c_duid

Все примеры основаны на примерах из как сделать.