Пакеты OpenBSD не 'подписываются' вообще по умолчанию.
При использовании OpenBSD в коммерческой среде позвольте работодателю для покупки, выпускают CD. Затем Вы получите выпуск OpenBSD с пакетами на CD, которому можно доверять :-)
Лучший путь, и если Вы используете OpenBSD серьезно, у Вас должен быть он, состоит в том, чтобы иметь сервер сборки. Синхронизирующие порты OpenBSD от anoncvs - здесь Вы доверяете ssh fingeprint, о котором публично объявляют - затем создают Ваши собственные порты и подписывают их с сертификатом. С инструментом 'dpb' это должно быть еще намного легче.
Пакеты OpenBSD являются вторичным интересом для проекта как целым.
С Вашими подсказками я мог закончить сценарий:
#!/bin/bash
mac_to_ipv6 () {
IFS=':'; set $1; unset IFS
ipv6_address="fe80::$(printf %02x $((0x$1 ^ 2)))$2:${3}ff:fe$4:$5$6"
echo $ipv6_address
}
echo "Next MAC with ^C"
for i do
echo
echo checking for $i = $(mac_to_ipv6 $i)
echo
ping6 ff02::1%wlan0 | head -n 1000 | grep $(mac_to_ipv6 $i)
done
см.: http://freifunk.in-kiel.de/wiki/Firmware#IPv6_Adresse_des_Routers
Во-первых, не только необходимо разделить MAC и вставить ff:fe, также необходимо зеркально отразить 7-й бит для корректного представления универсального/локального адреса.
Этот сценарий правильно отформатирует локальный для ссылки адрес IPv6 на основе адреса эфира, включая сокращение начальных нулей.
#!/bin/bash
IFS=':'; set $1; unset IFS
printf "fe80::%x:%x:%x:%x\n" $(( 0x${1}${2} ^ 0x200 )) 0x${3}ff 0xfe${4} 0x${5}${6}
Пример поразрядных операций и нулевого сокращения:
$ ether_to_ipv6 00:00:00:00:00:00
fe80::200:ff:fe00:0
$ ether_to_ipv6 11:11:11:11:11:11
fe80::1311:11ff:fe11:1111
Также имейте в виду, что технически не гарантируется, что ссылка будет иметь адрес, соответствующий этому алгоритму. Если существует коллизия (злонамеренный или иначе), новый адрес должен быть выбран одним или обоими. Реализации могут вести себя по-другому относительно того, как это на самом деле обрабатывается, таким образом, YMMV.
Однако, если все, что Вы действительно только пытаетесь сделать, получают список Ваших фактических соседей (подобный arp
в IPv4) затем существует более легкий путь. Используйте Протокол Обнаружения соседних устройств (арифметический процессор).
Linux:
ip -6 neigh show
Солярис:
netstat -pf inet6
Mac OS X, AIX, *BSD:
ndp -a
JUNOS, IOS, Vyatta:
show ipv6 neighbors
Каждая из этих команд покажет список всех живых соседей IPv6, использующих собственный арифметический процессор.
ip -6 neigh show
. -6
довольно важно. АРИФМЕТИЧЕСКИЙ ПРОЦЕССОР намного больше, чем ARP. RFC, который Вы просите, 4862. циклы
– bahamat
15.06.2013, 22:37
-6
не влияет на мой тест (помогает читать хотя :-). Нет ничего в разделе RFC, который добавляет, требование для отправки ко все-узлам (думайте, как "болтливый", который добрался бы!). Если Вы хотите узнать своих соседей, необходимо отправить больше пакетов, как этот ping6
команда делает. Легко быть введенным в заблуждение грандиозной Соседней Рекламой имени, но это только действительно используется в качестве одноадресной передачи, отвечают на Запрос. (За пределами сценариев как бесплатный ARPs IP4).
– sourcejedi
16.06.2013, 12:34