Пользовательский адрес обратной связи IPv6 и пинг с другого хоста

Пользовательский адрес обратной связи IPv6 и пинг с другого хоста

Могу ли я добавить пользовательский адрес IPv6 на интерфейс обратной связи хоста A и выполнить ping с хоста B?

Я пытался добавить что-то вроде этого ::ffff:5:4:3:2, однако ip -6 routeговорит, что это место назначения находится unreachableна error 101, но я могу пропинговать его с хоста A. Когда я устанавливаю этот адрес на tap0, например, маршрут доступен, но по-прежнему «не пропингован» с хоста B. Я не могу понять, какие адреса допускает loopback, почему мой custom недоступен, почему я могу пропинговать его с хоста A, как включить route_localnetи rp_filterдля IPv6.

ОС: ArchLinux, ядро ​​4.10.

Я знаю, как это сделать для IPv4, но IPv6 работает совершенно (или нет?) по-другому.

решение1

Да. Так же, как вы можете сделать это с IPv4, это называется маршрутизацией. Вы должны сообщить одному хосту, как достичь другого хоста.

Допустим, у нас есть два хоста: A и B.

У хоста A есть адрес обратной связи по умолчанию, ::1а также ваш пользовательский адрес на интерфейсе обратной связи. (В моем примере пользовательский адрес будет fd56:dcaa:2099::1. Я выбрал его из уникального локального адреса. Вам следуетиспользовать адреса ULAдля таких целей.)

У хоста A также есть интерфейс Ethernet, назовем его eth0. В IPv6 он будет иметь локальный адрес IPv6-соединения. У него могут быть и другие адреса IPv6. Вы можете найти их, запустив ip -6 addr eth0. Вот пример из моей системы:

$ ip -6 addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2601:404:ce00:adc0:9d6c:9e16:a9a9:b03b/64 scope global temporary dynamic 
       valid_lft 593594sec preferred_lft 74600sec
    inet6 2601:404:ce00:adc0:bc87:129a:ed5d:814/64 scope global temporary deprecated dynamic 
       valid_lft 78769sec preferred_lft 0sec                                                                                                                                                                                      
    inet6 2601:404:ce00:adc0:1453:3734:6742:4500/64 scope global mngtmpaddr noprefixroute dynamic                                                                                                                                 
       valid_lft 2591820sec preferred_lft 604620sec                                                                                                                                                                               
    inet6 fe80::5520:a68f:5416:a68c/64 scope link                                                                                                                                                                                 
       valid_lft forever preferred_lft forever

В этом списке четыре разных адреса (у вас их может быть больше). Для наших целей вам нужен тот, после которого написано "scope link". В моей системе (и в моем примере) это fe80::5520:a68f:5416:a68c.

На хосте B у нас также есть интерфейс eth0. Чтобы хост B мог достичь специального адреса обратной связи хоста A, хост B должен знать, где его найти. Это можно сделать, добавив запись в таблицу маршрутизации хоста B:

# ip route add fd56:dcaa:2099::1 via fe80::5520:a68f:5416:a68c dev eth0

Мы сообщаем ядру хоста B, что он может достичь fd56:dcaa:2099::1(специального адреса хоста A на его интерфейсе обратной связи) по адресу fe80::5520:a68f:5416:a68c(локального адреса связи хоста A на его eth0интерфейсе), но хост B должен попытаться достичь fe80::5520:a68f:5416:a68cизхост B eth0Интерфейс. (В этом и заключается сложность адресов локальной связи. Сам адрес имеет смысл только в контексте данного сегмента сети. Изучите сетевую модель OSI для получения более подробной информации.)

После того как эта запись будет внесена в таблицу маршрутизации хоста B, вы сможете выполнить ping-запрос на пользовательский адрес хоста A с хоста B, поскольку хост B теперь знает, что для достижения этого адреса нужно использовать локальный адрес связи хоста A в качестве маршрутизатора.

решение2

Поскольку обратные адреса и интерфейс предназначены для одного хоста. Не предназначены для связи с другим устройством.

Связанный контент