Архив за етитет: CentOS

Конфигуриране на IPMIv2.0 Serial-over-LAN (IBM x3650) и CentOS 5.5

Малко въведение…

BMC (Baseboard management controller) е контролер, които е доста полезен, ако го имате на дъното си.  Като част  от BMC е IPMI (Intelligent Platform Management Interface).  Няма да влизам в подробности кое как работи, защото това не е цел на тази статия.

На първо време преди да започнем трябва да се уверим, че имаме инсталирани някои инструменти

# rpm -qa |grep OpenIPMI
OpenIPMI-devel-2.0.16-7.el5
OpenIPMI-libs-2.0.16-7.el5
OpenIPMI-python-2.0.16-7.el5
OpenIPMI-perl-2.0.16-7.el5
OpenIPMI-tools-2.0.16-7.el5
OpenIPMI-libs-2.0.16-7.el5
OpenIPMI-2.0.16-7.el5
OpenIPMI-devel-2.0.16-7.el5

Също така ….

# rpm -qa |grep ipmi
freeipmi-bmc-watchdog-0.5.1-6.el5
freeipmi-0.5.1-6.el5
freeipmi-devel-0.5.1-6.el5
freeipmi-ipmidetectd-0.5.1-6.el5
freeipmi-0.5.1-6.el5
freeipmi-devel-0.5.1-6.el5

След като всичко, което ще ни е нужно е инсталирано… Може да пристъпим към конфигуриране.

Първа стъпка е да включим зареждането на IPMI модула със зареждането операционната система.

# chkconfig –level 345 ipmi on  ( 3,4,5 са режимите при, които да се стартира модула, реално при нас ни е нужен само level 3 (все пак е сървър и не му нужно да стартира  в level 5)

# service ipmi start или /etc/init.d/ipmi start   (И  двете команди зареждат модула за IPMI ).

Време е вече да проверим дали достъпваме контролера :) Ето един пример

# [root@centos~]# ipmitool sensor |grep Ambient
Ambient Temp     | 19.000     | degrees C  | ok    | na        | na        | na        | 38.000    | 41.000    | 45.000
[root@centos ~]#

Ето вижда, се че имаме комуникация и ни връща данни от сензорите ( В нашия случай показвам само околната температура на сървъра)

До тук всичко е супер  :)

Вече трябва да започнем начинанието, което е в заглавието ;)

Трябва първо да направим мрежовите настройки за да може да достъпваме съответния сървър през мрежата ( Хубаво е да знаете, че BMC (IPMI) е закачено към eth0 т.е към първия ethernet интерфейс на сървъра).

[root@centos ~]# ipmitool lan print
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD
Auth Type Enable        : Callback :
                        : User     : MD2 MD5 PASSWORD
                        : Operator : MD2 MD5 PASSWORD
                        : Admin    : MD2 MD5 PASSWORD
                        : OEM      :
IP Address Source       : DHCP Address
IP Address              : 169.254.0.2
Subnet Mask             : 255.255.0.0
MAC Address             : 00:1a:64:cc:c9:a5
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Disabled
Gratituous ARP Intrvl   : 2.0 seconds
Default Gateway IP      : 0.0.0.0
Default Gateway MAC     : 00:00:00:00:00:00
Backup Gateway IP       : 0.0.0.0
Backup Gateway MAC      : 00:00:00:00:00:00
802.1q VLAN ID          : Disabled
802.1q VLAN Priority    : 0
RMCP+ Cipher Suites     : 0,1,2,3
Cipher Suite Priv Max   : uaaaXXXXXXXXXXX
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM
[root@centos ~]#

Ето така изглеждат настройките по подразбиране (на IBM x3650).

За да зададем IP адреса е нужно да изпълним следните команди

1. [root@centos ~]# ipmitool lan set 1 ipsrc static (С тази команда сменяме от динамично вземане на IP адреса за BMC на статично

2. [root@centos ~]# ipmitool lan set 1 ipaddr 192.168.44.33 (мрежовия адреса )

Setting LAN IP Address to 192.168.44.33

3. [root@centos ~]# ipmitool lan set 1 netmask 255.255.255.0 (мрежовата маска)
Setting LAN Subnet Mask to 255.255.255.0

4. [root@centos ~]# ipmitool lan set 1 defgw ipaddr 192.168.44.3 (шлюза по подразбиране)
Setting LAN Default Gateway IP to 192.168.44.3

5. [root@centos ~]# ipmitool lan set 1 access on (Разрешаваме достъпа до канал 1 през LAN)

6. [root@centos ~]# ipmitool lan set 1 user (Включваме потребителя, които е по подразбиране за този канал)

Сега да видим крайния резултат:

[root@centos ~]# ipmitool lan print
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD
Auth Type Enable        : Callback :
                        : User     : MD2 MD5 PASSWORD
                        : Operator : MD2 MD5 PASSWORD
                        : Admin    : MD2 MD5 PASSWORD
                        : OEM      :
IP Address Source       : Static Address
IP Address              : 192.168.44.33
Subnet Mask             : 255.255.255.0
MAC Address             : 00:1a:64:cc:c9:a5
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
BMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Disabled
Gratituous ARP Intrvl   : 2.0 seconds
Default Gateway IP      : 192.168.44.3
Default Gateway MAC     : 00:00:00:00:00:00
Backup Gateway IP       : 0.0.0.0
Backup Gateway MAC      : 00:00:00:00:00:00
802.1q VLAN ID          : Disabled
802.1q VLAN Priority    : 0
RMCP+ Cipher Suites     : 0,1,2,3
Cipher Suite Priv Max   : uaaaXXXXXXXXXXX
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM

Продължаваме :) Сега трябва да си добавим потребител, с които ще достъпваме отдаличено сървъра… Потребителя ще е с администраторски права :)

Нека първо да видим какви потребители имаме:

[root@centos ~]# ipmitool user list 1 (Това е за канал 1 (channel 1))
ID  Name             Enabled Callin  Link Auth  IPMI Msg   Channel Priv Limit
1                           true      true    false          true       ADMINISTRATOR
2   USERID             true      true    false           true       ADMINISTRATOR

[root@centos ~]# ipmitool user list 2 (Това е за канал 2 (channel 2))
ID  Name             Enabled Callin  Link Auth  IPMI Msg   Channel Priv Limit
2   USERID              true     true     false           true       ADMINISTRATOR

До тук добре, но както се вижда има две потребителски имена, които  са включени като ID 1 няма зададено потребителско име, а ID 2 е с потребителско име USERID , които си идва по подразбиране и е с парола PASSW0RD (буквичката О е заместана с нула“0″).

Лично аз препоръчам да ги изключим … ето така:

[root@centos ~]# ipmitool user disable 1
[root@centos ~]# ipmitool user disable 2

И след като ги спряхме вече изглежда така…

[root@centos ~]# ipmitool user list 1
ID  Name             Enabled Callin  Link Auth  IPMI Msg   Channel Priv Limit
2   USERID           false       true    false           false      ADMINISTRATOR

Готови сме !!! (Но има още) 

Добавянето се прави ето така:

[root@centos ~]# ipmitool user set name 3 whatuwant ( 3 e следващото свободно ID, а whatuwant e потребителското име, което сме избрали)

[root@centos ~]# ipmitool user enable 3 (Включваме го )

[root@centos ~]# ipmitool user priv 3 4 1 (Добавяме му права: 3 е ID-то на потребителя, за които задаваме права; 4 е за администратор; 1 е канала, за които добавяме правата. )

[root@centos ~]# ipmitool user set password 3 (тук задаваме паролата)
Password for user 3: (първи път паролата) поне 8 символа е добре да слагате
Password for user 3: (повтаряме паролата)

Време е за конфигуриране на SOL ( Serial-over-LAN):

Нека първо да видим как изглеждат настройките по подразбиране…

[root@centos ~]# ipmitool sol info 1
Info: SOL parameter ‘Payload Channel (7)’ not supported – defaulting to 0x01
Set in progress                 : set-complete
Enabled                         : true
Force Encryption                : true
Force Authentication            : false
Privilege Level                 : USER
Character Accumulate Level (ms) : 150
Character Send Threshold        : 200
Retry Count                     : 7
Retry Interval (ms)             : 480
Volatile Bit Rate (kbps)        : 19.2
Non-Volatile Bit Rate (kbps)    : 19.2
Payload Channel                 : 1 (0x01)
Payload Port                    : 623

[root@centos ~]# ipmitool sol set volatile-bit-rate 115.2 1  (скоростта на комуникация 115 200 за канал 1 )
[root@centos ~]# ipmitool sol set non-volatile-bit-rate 115.2 1  (скоростта на комуникация 115 200 за канал 1)

[root@centos ~]# ipmitool sol payload  status 1 3 (проверяваме дали потребителя, които ще използваме му е разрешено да прави отдаличена връзка (SOL)
User 3 on channel 1 is disabled ( За момента нямаме и трябва да го разрешим)

[root@centos ~]# ipmitool sol payload enable 1 3 (едно е канала, а три е ID-то на потребителя)

[root@centos ~]# ipmitool sol payload  status 1 3
User 3 on channel 1 is enabled

Време е да пипнем малко по линукса :)

Нека да видим кои ни е серииния порт

[root@centos ~]# dmesg |grep ttyS
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:02: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

Вижда, се че това е COM1 :)

Сега малко по конфигурацията на grub :)

Избираме си редактор и отваряме /etc/grub.conf

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,0)
#          kernel /boot/vmlinuz-version ro root=/dev/sda1
#          initrd /boot/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz

(Този ред го коментираме, за да изключим изображението при стартираме)

#Add this

serial –unit=0 –speed=115200
terminal –timeout=8 console serial
#End  –unit=0 is ttyS0
hiddenmenu
title CentOS (2.6.18-194.11.3.el5)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.18-194.11.3.el5 ro root=LABEL=/ console=tty1 console=ttyS0,115200n8
        initrd /boot/initrd-2.6.18-194.11.3.el5.img
## Включваме комуникацията през tty1 и ttyS0 (серийния порт) 

Добавяме само това в /etc/grub.conf, което е удебелено. При добавяне на тези линии внимавайте, че след рестарта да не стане така, че да не може да зареди линукса :)

 Следва да редактираме и /etc/inittab

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

#Start from here

s0:2345:respawn:/sbin/agetty -L 115200 ttyS0 vt100

## End here

Записваме промените във файла и за да станат активни без да рестартираме системата изпълняваме командата

[root@centos ~]# init q

Ако всичко сме направили както трябва … Можем да пробваме да се свържем отдаличено.

[root@remote-linux ~]# ipmitool -I lanplus -H 192.168.44.33 -U whatuwant -a sol activate

Password:
[SOL Session operational.  Use ~? for help]

CentOS release 5.5 (Final)
Kernel 2.6.18-194.11.3.el5 on an x86_64

centos login:

 Eто вече имаме Serial-over-LAN :) Но сега трябва да тестваме и след като рестартираме дали ще видим дали ще видим как стартира линукса …

Оставаме свързани през SOL и на пишем….

[root@centos ~]# reboot

 Това разбира се го правим, ако няма да попречим на някои, които ползва този сървър (Затова 3-4 сутринта е най-удобното време за тези експерименти) :)

И след като сме видяли зареждането на линукс сме готови :)

Ако искаме през ttyS0 да влизаме с root ще трябва да добавим един ред в /etc/securetty

и това изглежда така

tty11
ttyS0
Добавяме само ttyS0 ( това е серииният порт, за които разрешаваме root да се логва в сървъра ни).

И това е то ….

Хубаво е да знаете, че като правите ъпдейт на kernel-а през yum той препокрива grub.conf  и ще се налага всеки път да добавяте промените … Сигурно е възможно да се избегне това, но това по нататък :)

Както пиша всеки път … ПРАВЕТЕ резервни копия на файловете, които променяте!!! И всичко е на ВАША ОТГОВОРНОСТ!!!

 И ако нещо съм пропуснал или съм сбъркал ме поправете :)

PHP, Suhosin и e107 CMS…

Тези дни реших да си поиграя със сигурността при php. След като php-то не поддържа disable_functions за всеки виртуален хост, трябваше да се намери алтернатива … И аз избрах тя да е Suhosin. След като пачнах, php-то … компилирах suhosin.so … И включих модула …

До тук всичко добре … Но като се опитах да заредя сайт, ползващ e107 CMS … Стана интересно :) В лога започнах да се появяват много функции, които бяха забранени.  Сега трябваше да вкарам всички тези функции в whitelist на този виртуален хост… Направих го … И си мислех, че всичко е наред и сайта ще си работи … Да ама не … На следващия ден ми съобщиха, че в администрационния панел липсва дясното меню … Получих достъп до админ частта … И реших да си направя експеримент. Логвам се като е включен модула менюто го няма … Изключвам модула … появява се …

Гледам логовете нищо … Прегледах малко кода на тази система, но стигнах до извода, че ще ми отнеме време за да дебъгна всичко и да разбера кое, как и защо се счупва …

И затова временно изключих модула (suhosin.so) докато тези от e107 открият проблема… Не съм им пуснал още проблема в тяхната система, но и това ще направя скоро …

Но в заключение … На НИКОИ НЕ препоръчвам тази CMS. 

Ако има развитие … Ще пиша …