Получить адрес IPv6 от IPv4? [закрыто]

Можно ли это сделать? Меня не волнует, какой инструмент, ping, nmap, nslookup. Черт, я даже напишу сценарий на bash. Мне просто нужно в этом разобраться.

Изменить: Все, что я знаю, это адреса IPv4, и я хочу узнать их адреса IPv6. Я реально не могу просканировать весь блок IPv6 / 32, и это в любом случае ужасно неэффективно. TL; DR

Вход IPv4> Выход IPv6

Псевдокод:

ping 1.2.3.4

Результат:

1.2.3.4: Адрес IPv6

0
задан 13 May 2016 в 19:24

1 ответ

Нет никакого прямого отображения между адресами IPv6 и IPv4. Самым надежным путем я могу думать (который требует, чтобы Вы были в той же сети как узел IPv4), должен получить MAC-адрес для IP и создать локальный для ссылки адрес EUI-64-based из него. Таким образом, узлы IPv6 будут почти всегда автоматически настраивать основанный на MAC локальный для ссылки адрес, таким образом, это должно будет работать в большинстве случаев.

следующие быстрые-и-грязные работы сценария в качестве примера над Ubuntu, Гостеприимной (16.04) пока python3-netaddr, пакет установлен. Это, кажется, не работает над Надежным человеком (14.04), так как netaddr библиотека пропускает часть необходимой функциональности.

#!/bin/bash -e

IP=$1
ping -c 1 $1 > /dev/null 2> /dev/null
MAC=$(arp -an $1 | awk '{ print $4 }')
IFACE=$(arp -an $1 | awk '{ print $7 }')

python3 -c "
from netaddr import IPAddress
from netaddr.eui import EUI
mac = EUI(\"$MAC\")
ip = mac.ipv6(IPAddress('fe80::'))
print('{ip}%{iface}'.format(ip=ip, iface=\"$IFACE\"))"

использование В качестве примера (принимающий Вас вставил содержание в ipv4-to-ipv6.sh и сделал chmod +x ipv4-to-ipv6.sh):

./ipv4-to-ipv6.sh 192.168.0.1
fe80::224:b4ff:fe9c:1329%eth0

Примечание, что это - локальный для ссылки адрес, должно быть ограничено по объему к конкретной ссылке, чтобы быть полезным, поэтому требует %<interface> быть применимым в большей части приложения. Если бы Ваши хосты имеют глобальный одноадресный префикс в этой сети также, они были бы, вероятно, быть достижимым использованием основанного на MAC адреса там, также. (Вы могли, например, измениться ip = mac.ipv6(...) строка для использования глобального префикса, и это должно работать.)

2
ответ дан 14 May 2016 в 05:24
  • 1
    @Panther, который вопрос конкретно говорит of=somepartition, таким образом, случай, где Вы пишете в целое дисковое устройство doesn' t применяются. dd can' t обходят ограничения драйвера устройства. – Barmar 26 October 2017 в 17:19

Другие вопросы по тегам:

Похожие вопросы: