
Estou executando o CentOS 7.
Primeiro criei um dispositivo de toque:
ip tuntap add dev tap2 mode tap
Então atribuí o endereço ipv6 a ele:
ip -6 addr add dev tap2 fd00:4::1/64
ip link set tap2 up
Seu estado gerado a partir de ip addr
shows:
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
Porém, ping6 fd00:4::1
não recebe nada. tcpdump -i tap2
também não produz nada.
O dispositivo tap está pronto para funcionar em ipv6? Devo adicionar configuração em algum lugar?
Responder1
Se a sua versão ip
suportar, você pode usar o confflagnodad
para dizer ao dispositivo para pularDetecção de endereço duplicado (DAD)ao atribuir o endereço:
# ip -6 addr add dev tap2 fd00:4::1/64 nodad
Provavelmente o DAD não pode ser feito porque o dispositivo tap não está conectado a nenhum meio. Ao atribuir o endereçosemo confflag, e ip addr
me mostra (Ubuntu, kernel 3.13, iproute2 versão 3.12.0) que o endereço está emprovisórioestado, ou seja, está aguardando o DAD terminar:
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
Atribuindocomo confflag nodad
mostra um resultado diferente:
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
O Ping funciona então:
# 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
...