Иногда бывает надобность указывать специфические параметры сетевого интерфейса при загрузке. Чаще всего это делается через /etc/rc.conf. Проблема файла /etc/rc.conf состоит в том, что не всегда можно описать требуемые параметры.
Яркий пример: смена МАС-адреса сетевой карты и присвоение IP-адреса интерфейсу. Эта операция не может быть выполненена через файл /etc/rc.conf. Даже если вы напишите следующее:
ifconfig_rl0="ether XX:XX:XX:XX:XX:XX"
ifconfig_rl0="10.10.10.10/24"
сетевому интерфейсу будет присвоен указанный IP-адрес, но MAC-адрес останеться прежний, не изменённый. Специфика файла /etc/rc.conf такова: применяется только последняя конфигурация, остальные же просто игнорируются. К примеру, если написать такое:
ifconfig_rl0="10.10.10.10/24"
ifconfig_rl0="10.11.10.10/24"
ifconfig_rl0="10.12.10.10/24"
ifconfig_rl0="10.13.10.10/24"
то в итоге интерфейсу rl0 будет присвоен адрес 10.13.10.10/24.
Что же делать, если действительно нужно больше, чем это может позволяет сделать rc.conf. На помощь приходят стартовые скрипты (из каталогов /etc/rc.d, /usr/local/etc/rc.d) и файл /etc/rc.local (в который можно написать какие угодно команды и все они выполнятся). Однако, разработчки сделали исключение для настройки сети. Для этого, создаётся специальный файл с именем start_if.{IFNAME} в каталоге /etc/, в который пишутся команды для сетевых интерфейсов, где IFNAME – имя сетевого интерфейса.
Пример.
Создаём файл /etc/start_if.vr0 такого содержания:
ifconfig vr0 ether 00:00:00:00:11:11
ifconfig vr0 1.1.1.1/32
перегружаем сервер, и смотрим:
$ ifconfig vr0
vr0: flags=8843 metric 0 mtu 1500
options=2808
ether 00:00:00:00:11:11
inet 1.1.1.1 netmask 0xffffffff broadcast 1.1.1.1
media: Ethernet autoselect (none)
status: no carrier
На мой взгляд преимущества файла start_if.{IFNAME} на лицо.
Опубликовано с разрешения журнала root.ua
3 коментарі “Работаем с сетевым интерфейсом.”
присваивает и mac адрес и ip адрес через rc.conf
ifconfig_rl0="ether XX:XX:XX:XX:XX:XX"
ifconfig_rl0_alias0="10.10.10.10/24"
то же самое с присвоением rl0 нескольких ip:
ifconfig_rl0="ether XX:XX:XX:XX:XX:XX"
ifconfig_rl0_alias0="10.10.10.10/24"
ifconfig_rl0_alias1="10.11.10.10/24"
ifconfig_rl0_alias2="10.12.10.10/24"
ifconfig_rl0_alias3="10.13.10.10/24"
2 ks
в 9.х не работает из rc.cof если там указать ether то вообще все параметры не пинимаются ни ип не шлюз так что как то так
хотя на опеннете рекомендоали сделать так:
ifconfig_xl1_alias0=”lladdr 00-04-75-de-b6-e9″
но лично я не пробовал
Подтверждаю метод товарища ttys, ifconfig_if_alias0 работает путём.