15 нояб. 2011 г.

Как сделать статический IP-адрес вместо динамического для сетевого интерфейса в Oracle Solaris 11?

Эта небольшая заметка посвящена тому, как дать сетевому интерфейсу на сервере с 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