Взято с http://sait-com.com/rtfm/3274-nastrojka-setevyx-sluzhb-i-sozdanie-zon-v-solaris-express-11.html
Там еще много чего хорошего, но для меня на данном этапе очень важно правильно настроить сеть.
Настройка сетевых интерфейсов
В Солярис 11 сетевая служба запускается либо в виде svc:/network/physical:nwam, либо в виде svc:/network/physical:default. Одновременно они запущены быть не могут. NWAM (network auto magic) отвечает за автоматические настройки сетевой службы и используется в настольных компьютерах и ноутбуках. Default - используется для ручной настройки сетевой службы и применяется в серверах. По умолчанию включен nwam и выключен default.
Принципы настроек этих двух служб совершенно разные. В данной статье будем изучать только настройку службы svc:/network/physical:default.
Значит, первое, что нужно сделать - это выключить nwam и включить default.
root@chayka:~# svcs physical STATE STIME FMRI disabled 7:54:46 svc:/network/physical:default online 7:54:55 svc:/network/physical:nwam root@chayka:~# svcadm disable nwam root@chayka:~# svcadm enable physical:defaultТеперь, в Солярис 11, вместо одной команды ifconfig - мы используем две - dladm и ipadm. Стало больше настроек и их решили разбить на две команды. Хотя, как и раньше, могут использоваться команды ndd, ifconfig, функции которых перешли к ipadm.
Обратите внимание - команда dladm используется для работы с сетевыми карточками для настройки параметров уровня 1 и 2 (физического и транспортного) модели ОСИ OSI (семиуровневая модель стека протоколов по стандарту OSI ). Команда dladm применяется только к ethernet адаптерам.
И поэтому в дальнейшем будем различать физические интерфейсы (порты) и логические интерфейсы. Порт в данном случае это физическое устройство, которое имеет разъем, в который можно воткнуть вилку RJ-45 кабеля локальной сети. Беспроводные сети мы здесь не рассматриваем.
Посмотрим, какие сетевые порты имеются на нашем компьютере.
root@chayka:~# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE rge0 Ethernet up 100 full rge0В Солярис 11 мы можем переименовать порт (сетевую карту). Этой возможности раньше не было . Новое имя порта может быть относительно любым, но на конце должна стоять цифра.
Переименовывать порты желательно для того, чтобы остальная часть настройки не зависела от его имени. Например, назовём порт global0, и будем дальше использовать это название, даже, если в будущем заменим сетевую карту на карту другого типа, например, rge на e1000.
Переименовывают его так:
root@chayka:~# dladm rename-link rge0 global0 root@chayka:~# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE global0 Ethernet up 100 full rge0
Смотрим, какие интерфейсы уже есть в системе:
root@chayka:~# ipadm show-if IFNAME STATE CURRENT PERSISTENT lo0 ok -m-v------46 ---
Только петлевой интерфейс и ничего больше.
Нашего интерфейса нет - его еще нужно создать вот таким образом:
root@chayka:~# ipadm create-if global0
Теперь видим - интерфейс создался.
root@chayka:~# ipadm show-if IFNAME STATE CURRENT PERSISTENT lo0 ok -m-v------46 --- global0 down bm--------46 -46
Задаем основные параметры интерфейса - статический адрес, маску и метку интерфейса.
root@chayka:~# ipadm create-addr -T static -a 192.168.0.44/24 global0/v4
Для чего используется метка (у нас - v4) говорить не буду, на данном этапе это не существенно. Главное, чтобы она была и её длина составляла не более 32 алфавитноцифровых символов.
Далее - как обычно - прописать необходимые строчки в файлах
/etc/hosts
# Internet host table # ::1 Apollo Apollo.local localhost loghost 127.0.0.1 localhost loghost 192.168.0.125 Apollo
/etc/resolv.conf
domain local nameserver 192.168.0.180 search local/etc/defaultrouter
192.168.0.1
а до перезагрузки вручную пропишите default router
router add default 192.168.0.1
Следующий файл нужен для nfs v4, но можно и его создать за компанию
/etc/defaultdomain
local
Далее, выбираем сервис имен. В файле /etc есть шаблоны для всех сервисов имен, используемых в Солярисе. Я использую только DNS сервис, поэтому копирую соответствующий файл-шаблон в конфиг файла сервиса имен.
Нужно выполнить вот эту команду, это значит, что нужно использовать DNS для поиска имен хостов. По умолчанию поиск в DNS не производится.
cp /etc/nsswitch.dns /etc/nsswitch.conf root@chayka:~# ping ya.ru ya.ru is alive
Обратите внимание, что здесь не упоминается файл /etc/hostname.interface. В Солярис 11 он не требуется.
Теперь проблемы с зонами и сетью. В Солярисе каждый интерфейс должен иметь своё уникальное имя, чтобы можно было присвоить ему уникальный адрес. До Соляриса 11 эту проблему было не решить полностью, частично она решалась путем настройки интерфейсов в зонах в разные виртуальные сети или выделением каждой зоне отдельной сетевой карты.
В Солярисе 11 мы создаём виртуальные линки, называем их, как нам нравится, и проблема решена очень красиво.
Cоздание виртуального линка inet0 на интерфейс global0 и его запуск
Англоязычный термин link отличается по значению от термина interface. Интерфейс связан с tcp/ip и его параметрами - адрес, маска, шлюз и т. д.
А link - это, в общем случае, сетевая плата, которая может быть виртуальной - это то место, куда включается RJ-45 коннектор локальной сети. Но идеологически более правильно называть эту железку портом. Впрочем, на истину в последней инстанции я не претендую.
Команда dladm работает с железками, а команда ipadm работает с интерфейсом - программной надстройкой над этим железом, что-то вроде драйвера tcp/ip.
Например, создать виртуальный порт можно командой dladm create-vlink -l физический_портN виртуальный_портN
N означает, что имя порта должно оканчиваться на цифру.
В Солярисе 11 эти две вещи - порт и интерфейс - достаточно изолированы друг от друга, в то время как в других Солярисах и Юниксах они составляют одно целое.
А также, надо понимать, что эта железка, порт, существует только в глобальной зоне (для упрощения). Поэтому железку мы настраиваем и создаём её копии или виртуальные порты, мосты, виртуальные сети только в глобальной зоне, а интерфейсы - во всех зонах.
Значит, для того, чтобы были интерфейсы в локальных зонах, для них в глобальной зоне мы создаем виртуальные порты. А уже в самой локальной зоне поверх этих виртуальных портов, приписанных конкретной зоне в её конфигурации мы настраиваем привычные нам интерфейсы с привычными нам параметрами - ip адрес, маска и т.д.
Это была как бы теория, а теперь практика.
Здесь мы удаляем интерфейс, созданный нами в предыдущей части. Там мы с виртуальными портами не заморачивались, а строили интерфейс поверх физического порта.
root@chayka:~# ipadm delete-if global0
Теперь создаем виртуальный порт поверх физического. Таких портов можно создать достаточно много и соединить их в виртуальную сеть внутри нашего хоста.
Это очень удобно делать для отладки разных сетевых приложений.
root@chayka:~# dladm create-vnic -l global0 inet0
Теперь мы создаём интерфейс поверх виртуального порта.
root@chayka:~# ipadm create-if inet0
И присваиваем ему все необходимые параметры.
root@chayka:~# ipadm create-addr -T static -a 192.168.0.44/24 inet0/v4
В результате у нас получился тот же самый интерфейс, что и в первой части статьи, но уже построенный поверх виртуального порта, а не физического. Но для программ и для сети его поведение совершенно не отличается от физического порта.
Заодно можно создать порты и для будущих зон. Делается это так же просто:
root@chayka:/# dladm create-vnic -l global0 saanzone0
И смотрим, что получилось:
root@chayka:/# dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE VID inet0 global0 100 2:8:20:19:bb:a5 random 0 saanzone0 global0 100 2:8:20:a2:d9:26 random 0
Здесь видим два виртуальных порта, построенных поверх физического порта.
Cоздание файловой системы для будущих зон
Здесь и далее мы используем файловую систему ZFS.
Сначала нужно выбрать место в файловой системе, где будет располагаться зона. Например, /zfspool/zones - это место где все зоны и /zfspool/zones/saanzone, /zfspool/zones/intzone - конкретные каталоги зон.
Пул можно создать на новом чистом диске. Однако, если у вас один диск, системный, то пул на нем уже создан, следовательно, файловую систему для зон мы создаем в этом, единственном, пуле.
root@chayka:~# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 74G 5,32G 68,7G 7% 1.00x ONLINE -Посмотреть состояние пулов можно командой
zpool status:
root@chayka:~# zpool status pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c7d0s0 ONLINE 0 0 0 errors: No known data errors
Например, есть пул rpool, тогда создаёте файловую систему rpool/zones. И этого достаточно для создания новых зон.
root@chayka:~# zfs create rpool/zones root@chayka:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 6,21G 66,6G 93,5K /rpool rpool/ROOT 4,20G 66,6G 31K legacy rpool/ROOT/solaris 4,20G 66,6G 4,18G / rpool/dump 506M 66,6G 506M - rpool/export 504M 66,6G 32K /export rpool/export/home 504M 66,6G 32K /export/home rpool/export/home/lin 504M 66,6G 504M /export/home/lin rpool/swap 1,02G 67,5G 143M - rpool/zones 31K 66,6G 31K /rpool/zones
Мы создаем корневую файловую систему для зон. Под каждую зону команда zonecfg сама создает файловую систему. После создания файловой системы путь к ней прописываете в конфиге зоны.
Создание зон:
Не забываем, что виртуальный порт для зоны мы уже создали ранее, теперь нужно его прописать в конфиге зоны.
Создаем конфигурационный файл зоны.
root@chayka:/# vi saanzone.conf create -b set zonepath=/rpool/zones/saanzone set brand=ipkg set autoboot=true set bootargs="-m verbose" set scheduling-class=FSS set ip-type=exclusive add fs set dir=/export/home set special=/export/home set type=lofs end add net set physical=saanzone0 end add device set match=/dev/saanzone end add attr set name=comment set type=string set value="ApachE" end
Обратите внимание, у нас set ip-type=exclusive, именно поэтому мы возились с виртуальными портами и наименованиями. Если бы мы решили использовать зону типа shared, то ip адреса всех зон привязывались к единственному интерфейсу. Иногда такой вариант можно использовать в силу его простоты. Но и тут есть свои недостатки, например, вы не сможете разместить ip адреса разных зон в одной сети.
Кроме того, в конфиге мы прописали файловую систему /export/home. Это сделано исключительно для удобства, чтобы во всех зонах каждый пользователь имел только один домашний каталог, который физически находится в глобальной зоне.
Далее зону нужно сконфигурировать, исправить все ошибки, и посмотреть окончательную информацию о ней.
root@chayka:/# zonecfg -z saanzone -f saanzone.conf root@chayka:/# zonecfg -z saanzone info
Следующая команда инсталлирует зону.
root@chayka:/# zoneadm -z saanzone install
Завершается создание зоны сообщением:
Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process.
Посмотрим состояние зоны после установки командой
zoneadm list -iv
Если зона в состоянии installed, то всё хорошо.
Далее, нужно выполнить следующий трюк - скопировать каталог /usr/lib/locale из глобальной зоны в локальную. Делать это нужно обязательно перед первой загрузкой зоны. Дело в том, что в интеловской версии Соляриса (х86), в отличие от СПАРКа, где всё хорошо и правильно, локали не копируются в зону. Если посмотреть сейчас содержимое каталогов /usr/lib/locale глобальной зоны и локальной - то увидите существенную разницу.
В глобальной зоне вывод команды locale будет таким:
root@chayka:~# locale LANG=ru_RU.UTF-8 LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_ALL=
В локальной же зоне таким:
root@saanzone:~# locale LANG= LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_ALL=
Поэтому, чтобы зона нормально воспринимала русский язык, нужно поставить в нее локали с помощью команды pfexec pkg install system/locale/support/russian после первой загрузки зоны, или сейчас сразу скопировать либо конкретную локаль, либо весь каталог из глобальной зоны в локальную. Есть много способов, как это можно сделать. Мы предлагаем следующий:
root@chayka:~# cd /usr/lib root@chayka:/usr/lib# tar -cvf - locale | (cd /rpool/zones/saanzone/root/usr/lib ; tar xfBp -)
Вот теперь всё готово к первой загрузке зоны.
root@chayka:/# zoneadm -z saanzone boot
Опять смотрим состояние зоны:
zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / ipkg shared 2 saanzone running /rpool/zones/saanzone ipkg excl
Если зона в состоянии running, т.е. выполняется, то можно зайти в консоль зоны.
root@chayka:/# zlogin -C saanzone
Настройка зоны ничем не отличается от обычного настройщика сети, как, допустим при установке системы, поэтому подробно описывать ее здесь я не вижу смысла. Единственная особенность, которая может поставить в тупик — это выбор терминала в начале процесса настройки. Нужно ввести 2.
What type of terminal are you using? 2) DEC VT100
Комментариев нет:
Отправить комментарий