в ответ на
«похоже, что put игнорирует файл журнала для меня (ожидайте, что версия 5.45 Debian 8):»
Команда из оболочки linux выполняет свою работу, но когда вы попадаете внутрь, ожидайте оболочку и открывайте файл журнала, затем введите put, это будет печатать то, что вы хотите напечатать, и на экране, и в файле журнала ...
Я также использую ожидаемую версию 5.45
Адрес может находиться в нескольких состояниях, одно из которых - предварительное. Если ifconfig
ждать, пока адрес выйдет из состояния «предварительное», это просто не соответствует дизайну.
Вы можете настроить использование оптимистичного DAD, как определено в RFC 4429 . Цель состоит в том, чтобы сделать адрес доступным для приложений, даже если DAD еще не завершен. Вам может потребоваться перенастроить ядро, чтобы использовать эту функцию.
После того, как ядро построено для обеспечения оптимистичного DAD, вы можете включить его в определенных параметрах sysctl. Из ip-sysctl.txt :
/proc/sys/net/ipv6/* Variables:
...
conf/interface/*:
Change special settings per interface.
The functional behaviour for certain settings is different
depending on whether local forwarding is enabled or not.
...
optimistic_dad - BOOLEAN
Whether to perform Optimistic Duplicate Address Detection (RFC 4429).
0: disabled (default)
1: enabled
use_optimistic - BOOLEAN
If enabled, do not classify optimistic addresses as deprecated during
source address selection. Preferred addresses will still be chosen
before optimistic addresses, subject to other ranking in the source
address selection algorithm.
0: disabled (default)
1: enabled
То есть сделать что-то вроде
sysctl -w net.ipv6.conf.enp2s6.optimistic_dad=1
sysctl -w net.ipv6.conf.enp2s6.use_optimistic=1
во время загрузки.
Спросив разработчика NetBSD и убедившись, что то же самое применимо к FreeBSD, я нашел решение (которое применимо к обеим этим ОС):
Обнаружение повторяющегося адреса (DAD) будет использовать некоторое время для определения того, используется ли уже адрес. Время, которое он будет использовать для этого, определяется в секундах в значении sysctl (3) net.inet6.ip6.dad_count . В NetBSD /etc/rc.d/network , функция network_start_ipv6_autoconf , сценарий ожидает это количество плюс одну секунду.
Когда DAD обнаруживает, что адрес уже используется в сети, ifconfig (8) покажет адрес как дублированный
. В этом состоянии невозможно выполнить привязку к адресу, аналогично тому, когда адрес предварительный
.
Таким образом, более полным и корректирующим решением было бы следующее:
ifconfig igb0 inet6 2001:db8::10/64 add
dadcount=$(/sbin/sysctl -n net.inet6.ip6.dad_count 2>/dev/null)
sleep $dadcount
sleep 1
ifconfig igb0 | grep 2001:db8::10/64 | egrep '(duplicated|tentative)$' >&2 && exit 1
service my_service start
Я заметил, что FreeBSD и NetBSD ведут себя по-разному при добавлении адреса, который в настоящее время находится в состоянии дублированный
:
дублированное состояние
, позволяющее использовать адрес, что может вызвать конфликты. предварительный
и не изменит состояние оттуда, по крайней мере, в течение пары минут. Адрес необходимо удалить и добавить снова, чтобы его можно было использовать.