
Я использую CentOS 7.
Сначала я создал устройство-перехватчик:
ip tuntap add dev tap2 mode tap
Затем я присвоил ему адрес ipv6:
ip -6 addr add dev tap2 fd00:4::1/64
ip link set tap2 up
Его состояние, сгенерированное из ip addr
шоу:
tap2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 500
link/ether fe:ea:2b:e0:c3:08 brd ff:ff:ff:ff:ff:ff
Однако ping6 fd00:4::1
ничего не получает. tcpdump -i tap2
Также ничего не выводит.
Готово ли устройство tap к работе в ipv6? Нужно ли где-то добавлять конфигурацию?
решение1
Если ваша версия ip
поддерживает это, вы можете использовать confflagnodad
чтобы сказать устройству пропуститьОбнаружение дубликатов адресов (DAD)при назначении адреса:
# ip -6 addr add dev tap2 fd00:4::1/64 nodad
Вероятно, DAD не может быть выполнен, так как устройство-ответчик не подключено ни к одному носителю. При назначении адресабезconfflag, ip addr
показывает мне (Ubuntu, ядро 3.13, iproute2 версии 3.12.0), что адрес находится впробныйсостояние, т.е. он ожидает завершения DAD:
3: tap2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 500
link/ether 6a:fe:48:a1:b2:1d brd ff:ff:ff:ff:ff:ff
inet6 fd00:4::1/64 scope global tentative
valid_lft forever preferred_lft forever
Назначениесconfflag nodad
показывает другой результат:
3: tap2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 500
link/ether 6a:fe:48:a1:b2:1d brd ff:ff:ff:ff:ff:ff
inet6 fd00:4::1/64 scope global nodad
valid_lft forever preferred_lft forever
Тогда пинг работает:
# ping6 fd00:4::1
PING fd00:4::1(fd00:4::1) 56 data bytes
64 bytes from fd00:4::1: icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from fd00:4::1: icmp_seq=2 ttl=64 time=0.056 ms
...