+11.60
Рейтинг
25.08
Сила

Proudly made on Earth

CentOS: iSCSI

Настраиваем iSCSI-сервер (таргет)

Выбираем для этого раздел, не забываем отмонтировать его и убрать из /etc/fstab если надо, например это будет раздел sdc1.

Устанавливаем пакет:
yum -y install scsi-target-utils

Затем в файле /etc/tgt/targets.conf прописываем наше устройство:
<target iqn.2014-12.tld.mydomain:myserver.test>
# Устройство:
backing-store /dev/sdc1
# Адрес iSCSI-клиента (инициатора), можно указать несколько таких строк:
initiator-address 10.0.0.1
№initiator-address 10.0.0.2
# Если надо — логин и пароль:
#incominguser test pass-12345


Запускаем службу:
/etc/rc.d/init.d/tgtd start

Прописываем её автозапуск:
chkconfig --levels 23 tgtd on

Проверяем состояние:
tgt-admin --show

Открываем, если надо, порт 3260 в файрволе.

Посмотреть текущие поключения инициаторов к указанному таргету можно вот так:
tgtadm --lld iscsi --mode conn --op show --tid 1
Session: 4
Connection: 0
Initiator: iqn.2014-12.tld.mydomain:client1
IP Address: 10.1.0.1

Настраиваем iSCSI-клиент (инициатор)

Устанавливаем пакет:
yum -y install iscsi-initiator-utils

Если на таргете задавали логин и пароль, то прописываем их в файле /etc/iscsi/iscsid.conf, иначе можно его не трогать. Рядом с этим конфигом лежит файл initiatorname.iscsi, в котором не помешает задать понятное вам имя инициатора:
InitiatorName=iqn.2014-12.tld.mydomain:client1

Прописываем службы в автозапуск:
chkconfig --levels 23 iscsid on
chkconfig --levels 23 iscsi on
Проверяем включен ли автозапуск для netfs и если надо — включаем:
chkconfig --list netfs
chkconfig --levels 23 netfs on

Опрашиваем таргет:
iscsiadm -m discovery -t sendtargets -p 10.0.0.1
Должно выдать что-то вроде этого:
10.0.0.1:3260,1 iqn.2014-12.tld.mydomain:myserver.test

Можно просмотреть состояние:
iscsiadm -m node -o show

Подключаемся к таргету:
iscsiadm -m node --login -T iqn.2014-12.tld.mydomain:myserver.test
Проверяем сессию:
iscsiadm -m session -o show
Должно показать что-то вот такое:
tcp: [1] 10.0.0.1:3260,1 iqn.2014-12.tld.mydomain:myserver.test (non-flash)

Теперь проверяем появился ли новый диск в системе и если появился, то работаем с ним как обычно.

Создаём разделы (подробности не описываю):
fdisk /dev/sdc

Форматируем:
mkfs.ext4 /dev/sdc1
(или mkfs.xfs /dev/sdc1)

Монтируем:
mount -o noatime,nodiratime /dev/sdc1 /mnt/1

И добавляем в /etc/fstab:
/dev/sdc1 /mnt/1 ext4 _netdev,rw 0 0

Или же можно подмонтировать по UUID:
blkid /dev/sdc1
/dev/sdc1: UUID=«e65ea5f6-9a37-456e-9f33-00d63890c8f3» TYPE=«ext4»

Написано, что по UUID лучше, т.к. идентификатор устройства, например после подключения/отключения дисков, может измениться, а UUID — нет.

В этом случае в /etc/fstab добавляем:
UUID=e65ea5f6-9a37-456e-9f33-00d63890c8f3 /mnt/1 ext4 _netdev,rw,noatime,nodiratime 0 0

Службы iscsi-инициатора при запуске будут подмонтировать все таргеты, найденные в своей базе (/var/lib/iscsi/nodes). Соответственно система будет брать диск с нужным UUID и монтировать его в соответствии с записью в /etc/fstab, ну или как вы указали в команде mount.

Отключение iSCSI-диска

Как обычно отмонтируем:
umount /dev/sdc

Отключаемся от таргета:
iscsiadm --m node -T iqn.2014-12.tld.mydomain:myserver.test -u

Проверяем:
iscsiadm -m session -o show
iscsiadm: No active sessions.

Если таргет больше не нужно подключать, то, после отключения от него, лучше удалить его из базы, чтобы при каждом запуске системы таргет снова не подмонтировался:
iscsiadm -m node -T iqn.2014-12.tld.mydomain:myserver.test -o delete

Подключение раздела локально

Подмонтировать раздел, используемый как iscsi-таргет, локально как обычный диск мне пока не удалось. Это плохо. Успокаивает то, что можно подключить его как iscsi-диск с той же машины так же как и с удалённой.

CentOS: Переустановка загрузчика (GRUB)

Взято отсюда, на себе не проверял пока )

Переустановка загрузчика (GRUB)

Выполните следующие шаги.

Шаг 1: Загрузка CentOS с инсталляционного диска (например #1 CD или DVD).

Шаг 2: Выбрать «linux rescue» в поле меню «boot».

Шаг 3: Смонтировать все файловые системы в режиме чтения-записи.

Шаг 4: Заменить корень на реальный корень ("/") на жестком диске.

# chroot /mnt/sysimage

Шаг 5: Переустановка загрузчика (GRUB).

Если вы переустанавливаете GRUB в MBR на диск SCSI или SATA (/dev/sda).

# grub-install /dev/sda

Если вы переустанавливаете GRUB в PBR в раздел #2 на диск SCSI или SATA (/dev/sda2)

# grub-install /dev/sda2

Если вы переустанавливаете GRUB в MBR на IDE диск (/dev/hda).

# grub-install /dev/hda

Если вы переустанавливаете GRUB в MBR на диск HP Smart Array (/dev/c0d0).

# grub-install /dev/cciss/c0d0

CentOS: ещё одно описание установки VirtualBox )

В виду того, что найденные мной описания установки VirtualBox на CentOS в моём случае не стали исчерпывающими я решил описать свой вариант.

Система CentOS 6.6.

Скачиваю файл описания репозитория VirtualBox:
wget download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo

Перекладываю его в папку /etc/yum.repos.d

Устанавливаю VirtualBox:
yum install VirtualBox-4.3

Однако установка аварийно завершается в процессе скачивания дистрибутива с сообщением о низкой скорости скачивания. Скачиваю его вручную:
wget download.virtualbox.org/virtualbox/rpm/el/6/x86_64/VirtualBox-4.3-4.3.20_96996_el6-1.x86_64.rpm

И устанавливаю:
yum install VirtualBox-4.3-4.3.20_96996_el6-1.x86_64.rpm

При попытке настройки командой "/etc/init.d/vboxdrv setup" получаю ошибку:
Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again.  Stop.


Смотрю в папке /usr/src/ точное название папки и прописываю переменную окружения:
export KERN_DIR=/usr/src/kernels/2.6.32-504.1.3.el6.x86_64

Запускаю снова "/etc/init.d/vboxdrv setup" и опять неудача — что-то там про то, что невозможно найти файлы заголовков (headers) ядра.

Перезагрузился, в процессе загрузки устанавливались какие-то модули VirtualBox-а.

Снова запускаю "/etc/init.d/vboxdrv setup" и, о чудо, кроме ошибок в процессе удаления старых модулей всё прошло нормально:
Stopping VirtualBox kernel modules                         [  OK  ]
Uninstalling old VirtualBox DKMS kernel modules
Error! There are no instances of module: vboxhost
4.3.20 located in the DKMS tree.
Error! There are no instances of module: vboxhost
4.3.20 located in the DKMS tree.
Error! There are no instances of module: vboxhost
4.3.20 located in the DKMS tree.
Error! There are no instances of module: vboxhost
4.3.20 located in the DKMS tree.
                                                           [  OK  ]
Trying to register the VirtualBox kernel modules using DKMS[  OK  ]
Starting VirtualBox kernel modules                         [  OK  ]


Запускаем его:
VirtualBox

Выбираю операционку Windows XP (32 bit), в качестве CD-привода выбираю виртуальный привод и указываю его на заранее скаченный имидж Windows XP 32-бита.

Пакет расширения

Вроде бы нужен, чтобы работал USB и ещё какие-то штуки:
Description: USB 2.0 Host Controller, Host Webcam, VirtualBox RDP, PXE ROM with E1000 support.

Скачиваем с сайта VirtualBox-а «VirtualBox 4.3.20 Oracle VM VirtualBox Extension Pack».

Устанавливаем его:
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.20-96996.vbox-extpack

Посмотреть список пакетов расширения:
VBoxManage list extpacks

Расшаренные папки

Чтобы папки из хост-системы были видны в гостевой нужно в гостевой системе установить Oracle VM VirtualBox Guest Additions. Для этого в меню этой виртуальной машины надо выбрать пункт — Devices — Insert Guest Additional CD image. Винда в гостевой машине запустит установку программы, а дальше как обычно.

IPv6 в MS Windows

Посмотреть список IPv6-соседей:
netsh interface ipv6 show neighbors

Отключить обработку RA-сообщений (понятно, что адрес придётся назначит вручную):
netsh int ipv6 set int N routerdiscovery=disabled
— N — это индекс интерфейса.
Посмотреть индексы интерфейсов:
netsh int ipv6 show int
Посмотреть параметры IPv6 на интерфейсе:
netsh int ipv6 show int N

Mac OS X: ещё несколько твиков

Для отключения монитора нажмите: Control + Shift + Eject.

Консольная утилита для управления системой питания:
pmset

Несколько параметров:
displaysleep — время простоя в минутах (0 — отключает данный режим), до отключения дисплея. Заменил параметр «dim» в Mac OS X 10.4.
disksleep — время простоя до отключения вращения жесткого диска. Заменил параметр «spindown» в Mac OS X 10.4. (Устанавливается в минутах, 0 отключает режим).
sleep — время простоя до засыпания системы. (Устанавливается в минутах, 0 отключает режим).
ttyskeepawake — предотвратить засыпание системы, если любой tty активен (например, удаленная сессия). tty считается неактивным в случае, когда время его простоя превышает время простоя для засыпания. Значения =1/0.
autopoweroff — Поддерживается не на всех системах там, где он поддерживается, включен по умолчанию. После заданного периода, указанного в минутах, система будет создавать файл гибернации и переходить в режим минимального энергопотребления чипсета. Выход из режима сна в таком случае занимает больше времени, чем обычно. В случае если имеются подключенные внешние устройства, при работе от батарей или сетевой активности выключения питания не будет.
autopoweroffdelay — время ожидания перед переходом в режим autopoweroff. Указывается в минутах.

Взято отсюда. Там же есть больше информации.

Apache: Ограничение доступа по логину-паролю ИЛИ IP-адресу

Есть сайт на Apache со служебной информацией и кучей папок. В разные папки есть доступ у разных юзеров, групп или IP-адресов. Обычно ограничение делается следующих видов:
— определённому юзеру/группе с любого IP-адреса;
— определённому юзеру/группе с определённых IP-адресов;
— всем без ограничений;

А вот новый вариант, настройка которого неочевидна:
— определённому юзеру/группе ИЛИ с определённых IP-адресов без пароля;

Содержимое файла .htaccess:
# Описываем ограничение по логину/паролю:
AuthType Basic
AuthName MyStatPage
AuthUserFile /usr/local/apache/conf/.users
AuthGroupFile /usr/local/apache/conf/.groups
# Пускать всех юзеров из группы mygroup:
require group mygroup

# Разрешаем доступ с указанных IP-адресов:
order allow,deny
allow from 10.1.1.0/255.255.255.0
allow from 10.1.2.1

# Разрешаем доступ при совпадении любого из условий (а не обязательно обоих):
Satisfy Any

Указание SSL-сертификата для nginx

Для получения подписанного сертификата я использую службу Dynadot, провайдер сертификата — AlphaSSL.

При использовании apache проблем не было. Я прописывал в конфиге три файла — файл с подписанным сертификатом сайта, файл с ключом, и файл с промежуточными сертификатами:
SSLCertificateFile "/etc/httpd/conf/my.crt"
SSLCertificateKeyFile "/etc/httpd/conf/my.key"
SSLCaCertificateFile "/etc/httpd/conf/AlphaSSLroot.crt"

В файле AlphaSSLroot.crt приведены друг за другом корневой сертификат и сертификат AlphaSSL как промежуточные:
-----BEGIN CERTIFICATE-----
сертификат Root CA
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
сертификат AlphaSSL Intermediate CA
-----END CERTIFICATE-----

В nginx только два аналогичных параметра — для файла с подписанным сертификатом и для файла с ключом:
ssl_certificate /usr/local/nginx/conf/my.crt;
ssl_certificate_key /usr/local/nginx/conf/my.key;

А вот куда указать промежуточные сертификаты, без них же не работает? Как оказалось их можно указать прямо в файле my.crt с подписанным сертификатом сайта, главное не перепутать последовательность:
-----BEGIN CERTIFICATE-----
подписанный сертификат вашего сайта
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
сертификат Root CA
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
сертификат AlphaSSL Intermediate CA
-----END CERTIFICATE-----

Промежуточные сертификаты взяты с сайта AlphaSSL.

CentOS: управление запуском сервисов

Какие сервисы запускаются на каких уровнях:
chkconfig --list

Какие уровни что означают:

# /etc/inittab
# Default runlevel. The runlevels used are:
# 0 — halt (Do NOT set initdefault to this)
# 1 — Single user mode
# 2 — Multiuser, without NFS (The same as 3, if you do not have
# networking)
# 3 — Full multiuser mode
# 4 — unused
# 5 — X11
# 6 — reboot (Do NOT set initdefault to this)

Примеры:

1. В каких случаях запускать mysqld:
chkconfig --level 23 mysqld on
2. Не запускать апач на уровнях 2 и 3:
chkconfig --level 23 httpd off
3. Не запускать апач вообще:
chkconfig httpd off

Mac OS X: Добавление статических маршрутов при подключении по VPN

Для поднятия статических маршрутов при подключении по VPN создаём файл /etc/ppp/ip-up:
#!/bin/sh

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

LOG="/tmp/ppp.log"
date > $LOG

list="10.1.1.2 10.1.1.3 10.1.1.4 10.2.2.1"
for i in $list
do
 route add -host $i $IPREMOTE >> $LOG 
done

Если у вас несколько VPN-соединений, то очевидно придётся проверять IP-адрес шлюза, например:
if [ $IPREMOTE = «10.3.3.1» ]
then
# делаем что надо для подключения к 10.3.3.1
fi

Понятно, что в этом скрипте можно не только статические маршруты навешивать.

Ну и конечно указанный файл должен иметь права на выполнение:
chmod a+x /etc/ppp/ip-up

CentOS IPv6

Есть интерфейс из ВЛАН-10, на котором уже имеется IPv4-адрес, надо добавить второй адрес, но уже из IPv6-сети. Это можно сделать вот так:
ip addr add 2001:0db8:3:4:0:0:0:3/64 dev eth0.10

Удалить вот так:
ip addr del 2001:0db8:3:4:0:0:0:3/64 dev eth0.10

А чтобы при перезагрузке компьютера этот адрес появился снова добавляем записи для IPv6 в уже существующий файл /etc/sysconfig/network-scripts/ifcfg-eth0.10:
DEVICE=eth0.10
PHYSDEV=eth0
ONBOOT=yes
VID=10
IPADDR=10.1.1.3
NETMASK=255.255.255.0
BOOTPROTO=static
VLAN=yes
USERCTL=no
GATEWAY=10.1.1.1
PEERDNS=yes
DNS1=10.1.1.1
DNS2=10.1.1.2
DOMAIN=elcat.kg
# Добавляем данные для IPv6:
IPV6INIT=yes
IPV6ADDR=2001:0db8:3:4:0:0:0:3/64
IPV6_DEFAULTGW=2001:0db8:3:4:0:0:0:1

Пингуем командой ping6, а путь смотрим командой tracepath6.

Несколько примеров просмотра, удаления и добавления IPv6-маршрутов:
ip -6 route show
ip -6 route show ::/0
ip -6 route show default
ip -6 route delete ::/0
ip -6 route add default via 2001:0db8:3:4:0:0:0:1
ip -6 route add 2001:0db8:33:44::/64 via 2001:0db8:3:4:0:0:0:1
ip -6 route delete 2001:0db8:33:44::/64

К сожалению маршрут до конкретного хоста из подсети, на которую добавлен маршрут, не показывается:
ip -6 route show 2001:0db8:33:44:0:0:0:13
Только для заданной подсети:
ip -6 route show 2001:0db8:33:44::/64

Ну или старый, добрый netstat:
netstat -rn --inet6