Эта небольшая заметка посвящена тому, как дать сетевому интерфейсу на сервере с Oracle Solaris 11 статический IP-адрес вместо динамического, выдаваемого DHCP-сервером. Естественно, автор не претендует на верность последовательности команд — он просто так делал и у него все заработало…​

Преамбула. При установке "солярки" была выбрана первоначальная настройка сетевых интерфейсов по DHCP, с мыслью: "нужный статический IP-шник зададим потом — это же так же просто как и в линуксе, зато сеть будет прямо сейчас работать без лишнего геморроя".

Потом, автор сделал

ifconfig net1 unplumb
ifconfig net1 192.168.1.7 netmask 255.255.255.0

и ВНЕЗАПНО обломался:

setifaddr: Operation not ...что-то там...

Попробовал ipadm — тоже не работает! Причем последовательность команд для смены IP-адреса бралась с Oracl’овского сайта, так что ошибка крайне маловероятна.

Начал разбираться…​ Оказывается, в 11 Солярисе есть волшебный сервис Network Auto Magic (NWAM) — это что-то вроде NetworkManager’а. Этот сервис настраивает сетевые соединения так, как вам будет его разработчикам показалось наиболее правильно. Естественно, его надо убить:

svcadm disable nwam
svcadm enable network/physical:default

Также, если вы видите что-то вроде этого:

drag0n@d3:~$ netadm list
TYPE   PROFILE        STATE
ncp    DefaultFixed   disabled
ncp    Automatic      online
loc    Automatic      offline
loc    NoNet          offline

то следует перевести Network Configuration Profile (NCP) из состояния Automatic в состояние DefaultFixed, чтобы иметь возможность использовать команды dladm и ipadm для конфигурирования сетевого интерфейса. Если NCP уже в состоянии DefaultFixed, то вы увидите следующее сообщение:

drag0n@d3:~$ netadm list
netadm: DefaultFixed NCP is enabled; automatic network management is not available.
'netadm list' is only supported when automatic network management is active.

Еще добавлю, что после выполнения вышеприведенных действий сервис network/physical:default может упасть и перевестись в состояние maintenance — я его просто перезапустил и сейчас он работает как часы…​

Теперь можно приступать к конфигурированию интерфейса. На сервере две сетевые карточки, кабель подключен лишь к одной:

drag0n@d3:~$ dladm show-phys
LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
net1              Ethernet             up         1000   full      e1000g1
net0              Ethernet             unknown    0      unknown   e1000g0

drag0n@d3:~$ ipadm show-if
IFNAME     CLASS    STATE    ACTIVE OVER
lo0        loopback ok       yes    --
net1       ip       ok       yes    --

Если у нас интерфейс получал IP-шник по DHCP, то выполнив следующую команду мы увидим что-то вроде:

drag0n@d3:~$ ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net1/_a           dhcp     ok           192.168.1.190/24
lo0/v6            static   ok           ::1/128

Сносим адрес, прибитый к интерфейсу и сносим сам интерфейс:

drag0n@d3:~$ ipadm disable-addr net1/_a
drag0n@d3:~$ ipadm delete-addr net1/_a
drag0n@d3:~$ ipadm delete-ip net1
drag0n@d3:~$ ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
lo0/v6            static   ok           ::1/128
drag0n@d3:~$ ipadm show-if
IFNAME     CLASS    STATE    ACTIVE OVER
lo0        loopback ok       yes    --
drag0n@d3:~$ dladm show-phys
LINK              MEDIA                STATE      SPEED  DUPLEX    DEVICE
net1              Ethernet             up         1000   full      e1000g1
net0              Ethernet             unknown    0      unknown   e1000g0

Теперь делаем новый интерфейс, имеющий нужный нам статический IP-шник:

drag0n@d3:~$ ipadm create-ip net1
drag0n@d3:~$ ipadm create-addr -T static -a local=192.168.1.7/24 net1/v4static
drag0n@d3:~$ ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net1/v4static     static   ok           192.168.1.7/24
lo0/v6            static   ok           ::1/128

Финальный штрих — в /etc/hosts пишем:

::1 d3 localhost
127.0.0.1 localhost
192.168.1.7 d3 loghost

linux