LINUX.ORG.RU
ФорумAdmin

ipv6 neighbor descovery

 , ,


0

1

Помогите разобраться как работает neighbor descovery в ipv6.

Есть две линукс машины (По факту это docker контейнер на линукс хосте) обозначим их docker и host.

На host есть такие интерфейсы:

# bridge подключаемый в контейнер
ip a show br-5f71de5b12d2
14: br-5f71de5b12d2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:9d:76:1d:2d brd ff:ff:ff:ff:ff:ff
    inet 10.10.0.1/24 brd 10.10.0.255 scope global br-5f71de5b12d2
       valid_lft forever preferred_lft forever
    inet6 fc01::1/112 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::42:9dff:fe76:1d2d/64 scope link 
       valid_lft forever preferred_lft forever
    inet6 fe80::1/64 scope link 
       valid_lft forever preferred_lft forever

# это таргет до которого нужно допинговаться
ip a show dummy_host0
13: dummy_host0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 5a:d6:65:1f:23:65 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 scope global dummy_host0
       valid_lft forever preferred_lft forever
    inet 10.5.0.1/24 scope global dummy_host0
       valid_lft forever preferred_lft forever
    inet6 fc00::5:1/112 scope global 
       valid_lft forever preferred_lft forever
    inet6 fc00::1/112 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::58d6:65ff:fe1f:2365/64 scope link 
       valid_lft forever preferred_lft forever

На docker такой интерфейс:

# Это бридж с хоста
ip a show eth0
16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:0a:0a:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.10.0.2/24 brd 10.10.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fc01::2/112 scope global nodad 
       valid_lft forever preferred_lft forever
    inet6 fe80::42:aff:fe0a:2/64 scope link 
       valid_lft forever preferred_lft forever

На docker есть такие маршруты ipv6

ip -6 r
fc00::/112 via fc01::1 dev eth0 proto xorp metric 1  pref medium
fc00::5:0/112 dev eth0 proto xorp metric 1  pref medium
fc01::/112 dev eth0 proto kernel metric 256  pref medium
fe80::/64 dev eth0 proto kernel metric 256  pref medium
default via fc01::1 dev eth0 metric 1024  pref medium

Тут маршрут в подсеть fc00::5:0/112 задана сразу через интерфейс, а не via gateway.

Задача пропинговать с docker fc00::5:1.

ping -c 1 fc00::5:1
PING fc00::5:1(fc00::5:1) 56 data bytes
From fc01::2 icmp_seq=1 Destination unreachable: Address unreachable

--- fc00::5:1 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

При этом ping на fc00::1 работает, разница в том как заданы маршруты.

На хосте br-5f71de5b12d2 (это bridge для докера) через wireshark видно пакеты Neighbor Solicitation от docker (src=fc01::2) на адрес ff02::1:ff05:1, а ответа нет.

На хосте dummy_host0 ничего не приходит.

На docker ip neigh показывает:

ip neigh
10.10.0.1 dev eth0 lladdr 02:42:9d:76:1d:2d STALE
10.5.0.1 dev eth0 lladdr 02:42:9d:76:1d:2d STALE
fc00::5:1 dev eth0  FAILED
fc01::1 dev eth0 lladdr 02:42:9d:76:1d:2d router STALE
fe80::1 dev eth0 lladdr 02:42:9d:76:1d:2d router STALE

То есть отдельный neighboring с fc00::1 ему не нужен, а вот с fc00::5:1 нужен и он не работает.

Для того чтобы оставить комментарий войдите или зарегистрируйтесь.