В 11.2-STABLE я делаю это, создавая файл /etc/start_if.iface_name
в моем случае это /etc/start_if.bge0
который содержит
ifconfig $1 link de:ad:be:ef:ca:fe
или любой другой MAC-адрес, который вам нужен.
/etc/start_if.bge0
вызывается из функции /etc/network.subr ifscript_up
. Конкретное имя вызываемого интерфейса передается в ifscript_up
как $1
поэтому $1
в /etc/start_if.bge0
работает для передачи имени интерфейса в ifconfig.
После запуска системы bge0 выглядит так:
$ ifconfig bge0
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=c019b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
ether de:ad:be:ef:ca:fe
hwaddr f0:1f:af:e3:59:fa
inet 10.16.231.24 netmask 0xffffffc0 broadcast 10.16.231.63
inet 10.16.231.25 netmask 0xffffffff broadcast 10.16.231.25
inet 10.16.231.50 netmask 0xffffffff broadcast 10.16.231.50
inet 10.16.231.49 netmask 0xffffffff broadcast 10.16.231.49
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
и моя таблица ARP выглядит так:
? (10.16.231.1) at 00:00:0c:9f:f0:e7 on bge0 expires in 1033 seconds [ethernet]
? (10.16.231.25) at de:ad:be:ef:ca:fe on bge0 permanent [ethernet]
? (10.16.231.24) at de:ad:be:ef:ca:fe on bge0 permanent [ethernet]
? (10.16.231.50) at de:ad:be:ef:ca:fe on bge0 permanent [ethernet]
? (10.16.231.49) at de:ad:be:ef:ca:fe on bge0 permanent [ethernet]
Если вы столкнулись с трудностями, проверьте основы. Команды ниже взяты из системы, которая имеет сетевой интерфейс igb, как и ваша.
Какие интерфейсы присутствуют?
# ifconfig -l
igb0 igb1 lo0
Каков статус-кво желаемого интерфейса?
# ifconfig igb0
igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether ac:1f:6b:45:b0:ac
hwaddr ac:1f:6b:45:b0:ac
inet 10.10.176.76 netmask 0xffffff00 broadcast 10.10.176.255
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
Каково точное содержание вашего скрипта start_if?
# ls -l /etc/start_if.igb0
-rw-r--r-- 1 root wheel 228 Feb 14 12:43 /etc/start_if.igb0
# cat /etc/start_if.igb0
(
date
echo "Attempting 'ifconfig $1 link de:ad:be:ef:ca:fe'"
if ifconfig $1 link de:ad:be:ef:ca:fe; then
echo "ifconfig succeeded"
else
echo "ifconfig failed with exit code $?"
fi
) >> /tmp/start_if.$1.log 2>&1
Если ваш скрипт start_if включает в себя подробную отладку, что он показывает?
# cat /tmp/start_if.igb0.log
Thu Feb 14 12:46:16 PST 2019
Attempting 'ifconfig igb0 link de:ad:be:ef:ca:fe'
ifconfig succeeded
Что произойдет, если вы запустите команду вручную?
Помните, что выполнение этого по удаленному сетевому соединению (например, через ssh) может привести к потере соединения при изменении MAC-адреса.
# ifconfig ibg0 link de:ad:be:ef:ca:fe
ifconfig: interface ibg0 does not exist
Ага! Вы опечатали имя интерфейса. :) Попробуйте снова. Правильный ответ должен быть тихим успехом от ifconfig:
# ifconfig igb0 link de:ad:be:ef:ca:fe
#
Как только вы сможете запустить ifconfig без ошибок, как будут выглядеть ifconfig и таблица arp после этого?
# ifconfig igb0
igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether de:ad:be:ef:ca:fe
hwaddr ac:1f:6b:45:b0:ac
inet 10.10.176.76 netmask 0xffffff00 broadcast 10.10.176.255
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
# arp -an
? (10.10.176.76) at de:ad:be:ef:ca:fe on igb0 permanent [ethernet]
? (10.10.176.137) at 18:03:73:34:39:66 on igb0 expires in 1170 seconds [ethernet]
? (10.10.176.1) at 00:00:0c:07:ac:03 on igb0 expires in 1050 seconds [ethernet]
Если все это не помогло, отредактируйте ваш вопрос, включив в него дополнительные, перечисленные выше конкретные шаги, которые вы предприняли, и результаты, которые вы получите. ПОЖАЛУЙСТА, скопируйте и вставьте свои результаты, чтобы мы не тратили время на устранение типографских ошибок, допущенных при расшифровке вашего ввода и вывода.