Работаем с сетевым интерфейсом.

Иногда бывает надобность указывать специфические параметры сетевого интерфейса при загрузке. Чаще всего это делается через /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 комментария

  1. ks

    присваивает и 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"

    1. ttys

      2 ks
      в 9.х не работает из rc.cof если там указать ether то вообще все параметры не пинимаются ни ип не шлюз так что как то так
      хотя на опеннете рекомендоали сделать так:
      ifconfig_xl1_alias0=»lladdr 00-04-75-de-b6-e9″
      но лично я не пробовал

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *