ipmi的东西

好东西还是保存到自己博客好

4.3. ipmitool – utility for controlling IPMI-enabled devices

4.3.1. ipmitool

4.3.1.1. ubuntu

确定硬件是否支持 IPMI

				
neo@monitor:~$ sudo dmidecode |grep -C 5 IPMI
[sudo] password for neo:
Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
        Status: No errors detected

Handle 0x2600, DMI type 38, 18 bytes
IPMI Device Information
        Interface Type: KCS (Keyboard Control Style)
        Specification Version: 2.0
        I2C Slave Address: 0x10
        NV Storage Device: Not Present
        Base Address: 0x0000000000000CA8 (I/O)
				
sudo apt-get install openipmi

sudo apt-get install ipmitool

sudo mkdir -p /var/lock/subsys/ipmi

$ sudo /etc/init.d/openipmi start
 * Starting ipmi drivers                  [ OK ]

4.3.1.2. CentOS

# yum search ipmi
========================================== Matched: ipmi ===========================================
OpenIPMI.x86_64 : OpenIPMI (Intelligent Platform Management Interface) library and tools
OpenIPMI-devel.i386 : The development environment for the OpenIPMI project.
OpenIPMI-devel.x86_64 : The development environment for the OpenIPMI project.
OpenIPMI-gui.x86_64 : IPMI graphical user interface tool
OpenIPMI-libs.i386 : The OpenIPMI runtime libraries
OpenIPMI-libs.x86_64 : The OpenIPMI runtime libraries
OpenIPMI-perl.x86_64 : OpenIPMI Perl language bindings
OpenIPMI-python.x86_64 : OpenIPMI Python language bindings
OpenIPMI-tools.x86_64 : OpenIPMI utilities and scripts from ipmitool
collectd-ipmi.x86_64 : IPMI module for collectd
freeipmi.i386 : FreeIPMI
freeipmi.x86_64 : FreeIPMI
freeipmi-bmc-watchdog.x86_64 : FreeIPMI BMC watchdog
freeipmi-devel.i386 : Development package for FreeIPMI
freeipmi-devel.x86_64 : Development package for FreeIPMI
freeipmi-ipmidetectd.x86_64 : IPMI node detection monitoring daemon
openhpi.i386 : openhpi Hardware Platform Interface (HPI) library and tools
openhpi.x86_64 : openhpi Hardware Platform Interface (HPI) library and tools
ripmime.x86_64 : Extract attachments out of a MIME encoded email packages
watchdog.x86_64 : Software and/or Hardware watchdog daemon

# yum install OpenIPMI OpenIPMI-tools -y

4.3.2. sensor

# ipmitool -I open sensor list

4.3.3. ipmitool shell

# ipmitool shell

mc info

			
ipmitool> mc info
Device ID                 : 32
Device Revision           : 0
Firmware Revision         : 1.54
IPMI Version              : 2.0
Manufacturer ID           : 674
Manufacturer Name         : DELL Inc
Product ID                : 256 (0x0100)
Product Name              : Unknown (0x100)
Device Available          : yes
Provides Device SDRs      : yes
Additional Device Support :
    Sensor Device
    SDR Repository Device
    SEL Device
    FRU Inventory Device
    IPMB Event Receiver
    Bridge
    Chassis Device
Aux Firmware Rev Info     :
    0x00
    0x0f
    0x00
    0x00


ipmitool> lan print 1
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD
Auth Type Enable        : Callback : MD2 MD5
                        : User     : MD2 MD5
                        : Operator : MD2 MD5
                        : Admin    : MD2 MD5
                        : OEM      :
IP Address Source       : Static Address
IP Address              : 172.16.1.132
Subnet Mask             : 255.255.255.0
MAC Address             : 84:2b:2b:fd:e2:51
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP      : 172.16.1.254
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,4,5,6,7,8,9,10,11,12,13,14
Cipher Suite Priv Max   : aaaaaaaaaaaaaaa
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM
			

4.3.4. ipmitool 访问远程主机

			
# ipmitool -H 172.16.1.155 -U root -P 123456 lan print 1
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD
Auth Type Enable        : Callback : MD2 MD5
                        : User     : MD2 MD5
                        : Operator : MD2 MD5
                        : Admin    : MD2 MD5
                        : OEM      :
IP Address Source       : Static Address
IP Address              : 172.16.1.15
Subnet Mask             : 255.255.255.0
MAC Address             : 84:2b:2b:fc:fb:cc
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP      : 172.16.1.254
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,4,5,6,7,8,9,10,11,12,13,14
Cipher Suite Priv Max   : aaaaaaaaaaaaaaa
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM

			

4.3.5. Get chassis status and set power state

			
# ipmitool -I open chassis
Chassis Commands:  status, power, identify, policy, restart_cause, poh, bootdev, bootparam, selftest

# ipmitool -I open chassis status
System Power         : on
Power Overload       : false
Power Interlock      : inactive
Main Power Fault     : false
Power Control Fault  : false
Power Restore Policy : previous
Last Power Event     :
Chassis Intrusion    : inactive
Front-Panel Lockout  : inactive
Drive Fault          : false
Cooling/Fan Fault    : false
Sleep Button Disable : not allowed
Diag Button Disable  : allowed
Reset Button Disable : not allowed
Power Button Disable : allowed
Sleep Button Disabled: false
Diag Button Disabled : true
Reset Button Disabled: false
Power Button Disabled: false
			

4.3.6. Configure Management Controller

4.3.6.1. Management Controller status and global enables

				
# ipmitool -I open mc
MC Commands:
  reset <warm|cold>
  guid
  info
  watchdog <get|reset|off>
  selftest
  getenables
  setenables <option=on|off> ...
    recv_msg_intr         Receive Message Queue Interrupt
    event_msg_intr        Event Message Buffer Full Interrupt
    event_msg             Event Message Buffer
    system_event_log      System Event Logging
    oem0                  OEM 0
    oem1                  OEM 1
    oem2                  OEM 2
				

4.3.6.2. Configure LAN Channels

ipmitool -I open lan print 1                           	显示BMC通道的信息,如果不知道BMC使用的是哪个通道,请使用下面的命令确认:
ipmitool -I open channel info 1
ipmitool -I open lan set 1 ipsrc static                	设置本地BMC地址为静态,才能设置IP
ipmitool -I open lan set 1 ipaddr 172.16.0.2         	设置本地BMC的IP地址
ipmitool -I open lan set 1 netmask 255.255.255.0       	子网掩码,别忘了设
ipmitool -I open lan set 1 defgw ipaddr 172.16.0.254   	网关,可设可不设,不过一定要确保监控它的机器位于同一路由

4.3.6.3. Configure Management Controller users

				
ipmitool user list 1     			查看BMC的用户列表
ipmitool user set name 1 username 	对BMC的1号用户设置用户名username
ipmitool user set password 1 123456 对BMC的1号用户设置密码123456
				

4.3.6.4. Configure Management Controller channels

# ipmitool -I open channel info 1
Channel 0x1 info:
  Channel Medium Type   : 802.3 LAN
  Channel Protocol Type : IPMB-1.0
  Session Support       : multi-session
  Active Session Count  : 0
  Protocol Vendor ID    : 7154
  Volatile(active) Settings
    Alerting            : disabled
    Per-message Auth    : disabled
    User Level Auth     : enabled
    Access Mode         : always available
  Non-Volatile Settings
    Alerting            : disabled
    Per-message Auth    : disabled
    User Level Auth     : enabled
    Access Mode         : always available

4.3.7. Example for iDRAC

http://support.dell.com/support/edocs/software/smbmcmu/bmcmu_4_0/cs/ug/bmcugc0d.htm#wp1067804

4.3.7.1. 更改IP地址,子网掩码与网关

查看IP,子网掩码与网关

# ipmitool -I open lan print 1
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD
Auth Type Enable        : Callback : MD2 MD5
                        : User     : MD2 MD5
                        : Operator : MD2 MD5
                        : Admin    : MD2 MD5
                        : OEM      :
IP Address Source       : Static Address
IP Address              : 172.16.5.23
Subnet Mask             : 255.255.255.0
MAC Address             : 18:03:73:f5:ee:82
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP      : 172.16.5.254
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,4,5,6,7,8,9,10,11,12,13,14
Cipher Suite Priv Max   : aaaaaaaaaaaaaaa
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM

设置IP,子网掩码与网关

/usr/bin/ipmitool -I open lan set 1 ipaddr 172.16.8.200
/usr/bin/ipmitool -I open lan set 1 netmask 255.255.255.0
/usr/bin/ipmitool -I open lan set 1 defgw ipaddr 172.16.8.254
/usr/bin/ipmitool -I open lan set 1 access on

4.3.7.2. 更改 iDRAC LCD 显示屏

# ipmitool delloem lcd set mode userdefined test
# ipmitool delloem lcd info
LCD info
    Setting: User defined
    Text:    test

4.3.7.3. 更改 iDRAC 密码

# ipmitool user list 2
ID  Name	     Callin  Link Auth	IPMI Msg   Channel Priv Limit
2   root             true    true       true       ADMINISTRATOR
# ipmitool user set password 2 "mypasswd"

4.3.7.4. 关机/开机

服务器关机
#ipmitool -I lan -U root -P secpass -H 10.10.0.5 power off

服务器开机
#ipmitool -I lan -U root -P secpass -H 10.10.0.5 power on

服务器 reset
#ipmitool -I lan -U root -P secpass -H 10.10.0.5 power reset

4.3.7.5. 启动列表

ipmitool -I lan -H 10.10.0.5 -U ADMIN -P ADMIN chassis bootdev pxe

清楚raid信息,老硬盘

  如何删除BIOS raid metadata?磁盘有老raid卡信息,系统装不下去。
             清除meta信息的方法:dd if=/dev/zero of=/dev/sda bs=512 count=2
             接着 fdisk -s /dev/sda记住扇区数,
             dd if=/dev/zero of=/dev/sda seek=(扇区数– 20) bs=1k 这样既可!

centos安全设置

原文出处: CentOS安装之后的系统安全配置
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

本文以CentOS 5.4为例进行说明,对于5.x版本应该都是适用的,其他版本的话主要是命令的路径不同,思路是一致的。

可以使用Linux初始安装之后配置脚本进行批量处理,注意执行前修改成合适自己的情况。

第一步、账户安全管理
1. 修改密码长度

  1. [root@localhost /]# vi /etc/login.defs
  2. PASS_MIN_LEN 18

2. 创建一个普通用户账号并设置密码,这样所有的操作都使用该普通账号进行

  1. [root@localhost /]# useradd ru
  2. [root@localhost /]# passwd ru

3. Linux默认提供了很多账号,账号越多,系统就越容易受到攻击,所以应该禁止所有默认的被操作系统本身启动的并且不必要的账号。
可以使用 vi /etc/passwd 查看系统账号,使用 vi /etc/group 查看系统的用户组。

  1. [root@localhost /]# userdel adm
  2. [root@localhost /]# userdel lp
  3. [root@localhost /]# userdel sync
  4. [root@localhost /]# userdel shutdown
  5. [root@localhost /]# userdel halt
  6. [root@localhost /]# userdel news
  7. [root@localhost /]# userdel uucp
  8. [root@localhost /]# userdel operator
  9. [root@localhost /]# userdel games
  10. [root@localhost /]# userdel gopher
  11. [root@localhost /]# userdel ftp
  12. [root@localhost /]# groupdel adm
  13. [root@localhost /]# groupdel lp
  14. [root@localhost /]# groupdel news
  15. [root@localhost /]# groupdel uucp
  16. [root@localhost /]# groupdel games
  17. [root@localhost /]# groupdel dip
  18. [root@localhost /]# groupdel pppusers

4. 限制su命令
限制只有特定用户组的用户才能使用su命令作为root权限,可以编辑 /etc/pam.d/su 文件,修改或增加下面的内容

# 这一行默认是有的
auth sufficient pam_rootok.so
# 将下面这行注释掉,后面加上 group=wheel ,注意顺序
#auth required pam_wheel.so use_uid
auth required pam_wheel.so use_uid group=wheel

这样设置之后只有wheel用户组的用户可以使用su切换为root。如果系统用户ru能够su切换为root,可以运行如下命令:

  1. [root@localhost /]# usermod -G10 ru

这里注意,使用 su – 命令可以切换为root用户并将root的环境变量信息进行切换,而 su 命令仅仅是切换角色但还是原来用户的环境变量,可以使用 echo $PATH 进行查看。

5. 使用chattr命令将下面的文件加上不可更改属性,从而防止非授权用户获得权限。

  1. [root@localhost /]# chattr +i /etc/passwd
  2. [root@localhost /]# chattr +i /etc/shadow
  3. [root@localhost /]# chattr +i /etc/group
  4. [root@localhost /]# chattr +i /etc/gshadow

这样操作之后也无法创建账号和修改密码,后面可以使用chattr -i命令恢复之后再进行操作。

6. 禁止Ctrl+Alt+Delete重启命令
修改 /etc/inittab 文件,将下面一行注释掉

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

7. 设置/etc/profile

  1. # 设置自动退出终端,防止非法关闭ssh客户端造成登录进程过多,可以设置大一些,单位为秒
  2. [root@localhost /]# echo “TMOUT=3600” >>/etc/profile
  3. # 历史命令记录数量设置为10条
  4. [root@localhost /]# sed -i “s/HISTSIZE=1000/HISTSIZE=10/” /etc/profile
  5. [root@localhost /]# source /etc/profile

8. 重新设置 /etc/rc.d/init.d/ 目录下所有文件的许可权限,仅root账号可以读、写和执行其中的所有脚本文件:

  1. [root@localhost /]# chmod -R 700 /etc/rc.d/init.d/*

第二步、SSH安全配置
SSH作为系统登录的入口,其安全性好比城楼的城门,重要性不言而喻。
首先查看系统中是否安装了SSH:

  1. [root@localhost /]# chkconfig –list |grep sshd

如果出现内容则说明安装了sshd服务,否则使用 yum install ssh 命令进行安装。

接下来先备份原来的配置文件

  1. [root@localhost /]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

然后修改 /etc/ssh/sshd_config 文件:

# 修改SSH的端口,默认为22
Port 5028
# 将#protocol 2,1改为
protocol 2
# 不允许root用户直接登录
PermitRootLogin no
# 不允许空密码登录
PermitEmptyPasswords no
# 不适用DNS
UseDns no

最后使用 service sshd restart 重启SSH服务

第三步、关闭系统中不需要的服务和端口
1. 系统中少开一个服务就少一个危险,以下仅列出需要启动的服务,未列出的服务一律关闭,如果没有下面的服务则直接忽略:

  1. [root@localhost /]# setup
  2. acpid
  3. anacron
  4. cpuspeed
  5. crond
  6. iptables
  7. irqbalance \\仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。
  8. microcode_ctl
  9. network
  10. random
  11. sendmail
  12. sshd
  13. syslog
  14. # CentOS自动更新
  15. yum-updatesd

2. 使用iptables防火墙只打开指定的端口
首先创建如下的sh文件:

  1. #!/bin/bash
  2. iptables -F INPUT
  3. iptables -P INPUT DROP
  4. # 打开80端口
  5. /sbin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT
  6. # 打开SSH端口,这一点很重要,否则无法使用SSH了,注意将5028修改为你的SSH端口
  7. /sbin/iptables -A INPUT -p tcp –dport 5028 -j ACCEPT
  8. # 打开服务器对外的DNS端口
  9. iptables -A OUTPUT -p udp –dport 53 -j ACCEPT
  10. # 123为ntpdate更新时间的端口
  11. iptables -A INPUT -p udp -m multiport –sport 53,123 -j ACCEPT
  12. iptables -A INPUT -p udp –dport 53 -j ACCEPT
  13. iptables -A OUTPUT -p udp –sport 53 -j ACCEPT
  14. # 打开服务器内部访问80端口
  15. iptables -A INPUT -p tcp -m multiport –sport 80,8080 -j ACCEPT

然后保存为closeports.sh文件,使用下面的命令执行该文件:

  1. [root@localhost /home/ru]# chmod +x closeports.sh
  2. [root@localhost /home/ru]# ./closeports.sh
  3. # 保存规则
  4. [root@localhost /home/ru]# /etc/init.d/iptables save
  5. # 重启iptables
  6. [root@localhost /home/ru]# /etc/init.d/iptables restart
  7. # 使用lsof -i:xx查看端口是否有效
  8. [root@localhost /home/ru]# lsof -i:81

详细的iptables配置信息存放在 /etc/sysconfig/iptables 文件中。

第四步、防止攻击
1. 阻止ping
将 /proc/sys/net/ipv4/icmp_echo_ignore_all 文件的内容修改为1,不过这样的话如果服务器重启之后就会恢复为0了。
可以将下面的内容加入到 /etc/rc.d/rc.local 文件中:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

2. 防止IP欺骗攻击
编辑 /etc/host.conf 文件,在下面增加如下几行:

  1. [root@localhost /]# vi /etc/host.conf
  2. order bind,hosts
  3. multi off
  4. nospoof on

3. 防止DoS攻击
对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。对 /etc/security/limits.conf 文件添加如下内容:

  1. # 禁止调试文件
  2. * hard core 0
  3. # 限制内存使用为5MB
  4. * hard rss 5000
  5. # 限制进程数为20
  6. * hard nproc 20

接下来必须编辑 /etc/pam.d/login 文件确认下面一行是否存在,如果不存在的话添加上:

  1. session required /lib/security/pam_limits.so

对于DDos攻击可以使用DDoS deflate脚本,详细介绍见下面的参考资料。

第五步、系统配置及性能调优
1. 修改系统默认字符集
如果使用英文安装系统之后,如果系统中有中文会显示乱码,这个时候需要修改系统默认的字符集:

  1. [root@localhost /]# vi /etc/sysconfig/i18n
  2. LANG=”zh_CN.UTF-8″
  3. [root@localhost /]# source /etc/sysconfig/i18n

将系统的编码修改为zh_CN.UTF-8,后面一句命令是让修改立即生效。

2. 使用ntp服务更新服务器时间
首先检查系统中是否安装了ntp服务:

  1. [root@localhost /]# chkconfig –list |grep ntp

如果没有安装的话使用yum进行安装并更新时间

  1. [root@localhost /]# yum install ntp
  2. [root@localhost /]# ntpdate time.windows.com

也可以将更新命令加入到cron中进行自动更新时间:

  1. [root@localhost /]# crontab -e
  2. * */12 * * * ntpdate time.windows.com
  3. [root@localhost /]# service crond restart

以上操作是每隔12小时自动更新一次时间,可以通过 crontab -l 命令进行查看。

3. 加大服务器文件描述符
当系统服务开启后,访问量变大,会使用到更多的文件描述符。使用 ulimit –n 命令显示当前的文件描述符数(需要使用 su – 命令切换到root账号)。可以使用如下方法加大文件描述符数:

  1. [root@localhost /]# vi /etc/security/limits.conf
  2. *   –   nofile  65536   #在文本的最后一行添加

重新登录之后,可以使用 ulimit –n 命令再次查看文件描述符会看的已经发生了变化。

4. 调整内核参数

  1. [root@localhost /]# cp /etc/sysctl.conf /etc/sysctl.conf.bak
  2. [root@localhost /]# vi /etc/sysctl.conf
  3. net.ipv4.tcp_fin_timeout = 2
  4. net.ipv4.tcp_tw_reuse = 1
  5. net.ipv4.tcp_tw_recycle = 1
  6. net.ipv4.tcp_syncookies = 1
  7. net.ipv4.tcp_keepalive_time = 600
  8. net.ipv4.ip_local_port_range = 4000    65000
  9. net.ipv4.tcp_max_syn_backlog = 16384
  10. net.ipv4.tcp_max_tw_buckets = 36000
  11. net.ipv4.route.gc_timeout = 100
  12. net.ipv4.tcp_syn_retries = 1
  13. net.ipv4.tcp_synack_retries = 1
  14. net.ipv4.ip_conntrack_max = 25000000
  15. net.ipv4.netfilter.ip_conntrack_max=25000000
  16. net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
  17. net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
  18. net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
  19. net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120

最后,使用 sysctl –p 命令让上述设置立即生效。

nginx 分省

Nginx可配合GeoIP模块定位IP所在物理位置并做相应处理,支持多个条件匹配:

http://www.haiyun.me/archives/nginx-geoip.html

http://nginx.org/cn/docs/http/ngx_http_geo_module.html

使用 Nginx 和 GeoIP 模块来处理不同国家的访问

http://deidara.blog.51cto.com/400447/198469/

#http://www.haiyun.me
$geoip_country_code #国家代码2位,如CN
$geoip_country_code3 #国家代码3位,如CHN
$geoip_country_name #国家完整名称,如China
$geoip_region #所在地区
$geoip_city #所在城市,如BeiJing
$geoip_postal_code #邮政编码
$geoip_city_continent_code #所在洲,如AS
$geoip_latitude #纬度
$geoip_longitude #经度

lvm备份

做个snap就行了。
lvcreate –size 20G –snapshot –name snap /dev/newvg/iotest

备份数据库很爽。
有工具,参看
http://hi.baidu.com/jackywdx/item/fdaa9e10f4a8190b8fbde454

挂载vm里面的lvm

由于xen hvm的磁盘是完整的一块,不能普通的mount
首先用 losetup 工具把 centos.img 文件和 loop 设备映射起来,-f 参数用来找出下一个可用的 loop 设备:
# losetup -f
/dev/loop0

# losetup /dev/loop0 /home/vpsee/centos.img

后通过 fdisk /dev/loop0 来查看 centos.img 里的分区表,-u 参数指明使用 sector 为单位记录偏移量(offset)而不是 cylinder 为单位:

# fdisk -u -l /dev/loop0

Disk /dev/loop0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes

Device Boot Start End Blocks Id System
/dev/loop0p1 * 63 208844 104391 83 Linux
/dev/loop0p2 208845 20964824 10377990 8e Linux LVM

因为每个 sector 是 512 字节(bytes),所以 offset 等于 208845 X 512 = 106928640,这个 offset 很重要,在下面的操作中会用到。

先解除掉 /dev/loop0 和 centos.img 的映射,然后重新用 offset = 106928640 映射起来:

# losetup -d /dev/loop0
# losetup /dev/loop0 /home/vpsee/centos.img -o 106928640

现在可以看到系统上有2个 PV(物理卷组),一个是系统本身,一个是 centos.img 里面的 PV,这两个 PV 的名字都是一样的,是因为当初安装系统的时候都使用了默认的名字,这带来了麻烦,后面的操作会改变一个 PV 的名字以方便后续操作:

# lvm pvscan
PV /dev/sda2 VG VolGroup00 lvm2 [465.66 GB / 0 free]
PV /dev/loop0 VG VolGroup00 lvm2 [9.88 GB / 0 free]
Total: 2 [475.53 GB] / in use: 2 [475.53 GB] / in no VG: 0 [0 ]

# lvm vgchange -ay
2 logical volume(s) in volume group “VolGroup00” now active
2 logical volume(s) in volume group “VolGroup00” now active

因为要给两个相同名字的 VolGroup00 改名,所以要先找到他们不同的 UUID:

# vgs -v
Finding all volume groups
Finding volume group “VolGroup00”
Finding volume group “VolGroup00”
VG Attr Ext #PV #LV #SN VSize VFree VG UUID
VolGroup00 wz–n- 32.00M 1 2 0 465.66G 0 dqfs1x-QBY1-kNRr-l0X0-RnoW-GgIR-ZfjkCS
VolGroup00 wz–n- 32.00M 1 2 0 9.88G 0 XrQNej-Aikn-qjxy-q7Lf-mBDk-gSfs-bLEgT6

上面第2个是 centos.img 里面的 VolGroup00(9.88GB 那个),改名为 vps01:

# vgrename XrQNej-Aikn-qjxy-q7Lf-mBDk-gSfs-bLEgT6 vps01
Volume group “VolGroup00” successfully renamed to “vps01”

根据卷组名字和空间大小我们可以判断我们需要挂载 LogVol00 vps01(LogVol01 vps01 是 swap):

# lvm lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LogVol00 VolGroup00 -wi-ao 460.03G
LogVol01 VolGroup00 -wi-ao 5.62G
LogVol00 vps01 -wi— 8.88G
LogVol01 vps01 -wi— 1.00G

现在终于可以挂载 centos.img 里的 LVM 逻辑分区了:

# mount /dev/mapper/vps01-LogVol00 /mnt

# ls /mnt
bin dev home lib64 media opt root selinux sys usr
boot etc lib lost+found mnt proc sbin srv tmp var

使用完后,需要按顺序干净卸载:

# umount /mnt
# vgchange -an vps01
0 logical volume(s) in volume group “vps01” now active
# losetup -d /dev/loop0

备注1,如果在使用,用fuser
然后kill

XEN网络配置综述

原文 http://www.5iops.com/html/2012/keyinfra_0603/53_2.html
Xen网络概览

Xen可配置让它的虚拟机(VMs):

使用已有的网络与IP地址.
使用新创建的私有IP地址段.

Xen在/etc/xen/xend-config.sxp有3个主要配置:
网桥模式(Bridge Networking)

(network-script network-bridge)
(vif-script vif-bridge)

NAT路由网络模式(Routed Networking with NAT)

(network-script network-nat)
(vif-script vif-nat)

双向路由网络模式(Two-way Routed Network)

(network-script network-route)
(vif-script vif-route)

一般XEN的网络只能工作运行于上述3种方式之一,其他2种必须注释掉。

上述3种工作模式的选择依赖于当前的网络结构或网络规划,下面会讨论一些场景,以帮助大家选取何种XEN网络模式。
网络应用场景
应用场景 1

已存在一个计算机网络.
只间简单地让任一VMs (xen虚拟机)显现在现有网络中.
可以随意添加新的计算机到已有网络中(通过静态IP地址或DHCP).
希望能从本地电脑访问这些VMs,也可以由VMs访问本地电脑.

配置使用: 网桥模式(Bridge Networking)
应用场景 2

已存在一个计算机网络.
已由ISP指定一段静态公网IP地址.
希望提供多个WEB服务与邮件服务.

配置使用: 网桥模式(Bridge Networking)
应用场景 3

没有已存在网络(如家中).
仅有1台独立的计算机使用xen.
这台计算机(dom0) 可能有,也可能没有internet连接.
希望VMs可以访问Internet(若dom0有internet连接).
希望VMs是私有的,不被Internet所见.

配置使用: NAT路由模式( Routed Networking with NAT)
应用场景 4

已存在一个计算机网络.
希望为新的VMs创建一个新的私有网络.
希望对于其他外部网络而言,VMs是私有且隐藏.
希望可以访问internet或其他网络.

配置使用: NAT路由网络模式( Routed Networking with NAT)
应用场景 5

已存在一个计算机网络.
希望为新的VMs创建一个新的私有网络.
希望对于已存在的外部网络而言,VMs是可见的.
希望能从本地电脑访问这些VMs,也可以由VMs访问本地电脑.

配置使用: 双向路由网络模式(Two-way Routed Network)
网桥模式

XEN中网桥模式是最简单与最容易配置的。这种网络模式只是让VMs以虚拟以太网卡加入现存网络,很多情况下都会用到。典型的网桥模式被用于:

可随意加入计算机或设备到现存网络.
现存网络使用DHCP或静态IP地址.
希望VMs在现有网络中可见,允许双向访问.

网络结构示意图

Xen_Networks1.jpg
配置Xen使用网桥模式(Bridge Networking)

主要的网络配置步骤见下:
1.配置xend-config.sxp

vi /etc/xen/xend-config.sxp
(network-script network-bridge)
#(network-script network-nat)
#(network-script network-route)

(vif-script vif-bridge)
#(vif-script vif-nat)
#(vif-script vif-route)

2. 配置vm01.cfg (vm配置文件)

vi /etc/xen/auto/vm01.cfg
vif = [ ‘ip=192.168.0.6’ ]
#thats all that is required for the networking part.

3. 配置VM自己的接口/etc/network/interfaces

mount /srv/xen/vm01-disk.img /mnt
vi /mnt/etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.0.6
gateway 192.168.0.1
netmask 255.255.255.0

xm create /etc/xen/vm01.cfg
xm console vm01

完成。
网桥模式的排障步骤

在dom0上,运行ifconfig 应该看到下面类似的内容:

dom0:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:8B:DC:F7:2B
inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.192
inet6 addr: fe80::250:8bff:fedc:f72b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2848 errors:0 dropped:0 overruns:0 frame:0
TX packets:1768 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:256292 (250.2 KiB) TX bytes:277686 (271.1 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1120 (1.0 KiB) TX bytes:1120 (1.0 KiB)

peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:3716 errors:0 dropped:0 overruns:0 frame:0
TX packets:2046 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:493403 (481.8 KiB) TX bytes:318089 (310.6 KiB)

vif0.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:1768 errors:0 dropped:0 overruns:0 frame:0
TX packets:2848 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:277686 (271.1 KiB) TX bytes:256292 (250.2 KiB)

vif1.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:265 errors:0 dropped:0 overruns:0 frame:0
TX packets:408 errors:0 dropped:203 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:35758 (34.9 KiB) TX bytes:215469 (210.4 KiB)

xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:208 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16101 (15.7 KiB) TX bytes:0 (0.0 b)

若没看到xenbr0, 或vif1.0, 或peth0,刚网桥没有正确配置. 检查xend-config.sxp文件确保仅有network-script network-bridge与vif-script vif-bridge这2项启用,同时确保安装了bridge-utils.

在dom0上运行iptables -L 应该看到类似下面的内容:

dom0:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT 0 — 192.168.0.6 anywhere PHYSDEV match –physdev-in vif1.0
ACCEPT udp — anywhere anywhere PHYSDEV match –physdev-in vif1.0 udp spt:bootpc dpt:bootps

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

若没看到上述类似内容,则需要重启dom0,重启xend,并确保iptables正确安装. 检查所列ip地址正确.

在VM (vm01)上运行ifconfig 应看到以下类似内容:

vm01:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:1D:1A:E9
inet addr:192.168.0.6 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe1d:1ae9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:391 errors:0 dropped:0 overruns:0 frame:0
TX packets:263 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:214108 (209.0 KiB) TX bytes:39372 (38.4 KiB)

检查是否配置了正确的IP地址,且默认网关配置正确.
NAT路由网络模式

NAT路由网络模式最常用于将Xen虚机(VMs)置于独立的私有网络的情形。来自VMs的流量通过NAT (Network Address Translation-网络地址转换)进入外部网络。按下列步骤设置,dom0即自动执行所需NAT操作.
网络结构示意图

Xen_Networks2.jpg

示意图说明如下:

domU机器位于一个不同的私有LAN网络.
domU机器须通过dom0的NAT才能通达其他LAN网络,网络流量显示是来自dom0 (192.168.0.3).

举例:若ssh’s到192.168.0.5 , 看到则是来自192.168.0.3的网络ssh!! 换句话说,私有IP被隐藏了.

domU机器隐藏于192.168.0.0/24网络中(有保护作用).

配置Xen使用NAT路由网络模式(NAT’d Networking)

主要的配置步骤如下:

1. 配置xend-config.sxp

vi /etc/xen/xend-config.sxp
(network-script network-nat)
#(network-script network-bridge)
#(network-script network-route)

(vif-script vif-nat)
#(vif-script vif-bridge)
#(vif-script vif-route)

2. 配置vm01.cfg (vm配置文件)

vi /etc/xen/auto/vm01.cfg
vif = [ ‘ip=10.0.0.1’ ]
#thats all that is required for the networking part.

3. 配置VM自己的网络接口/etc/network/interfaces

mount /srv/xen/vm01-disk.img /mnt
vi /mnt/etc/network/interfaces
auto eth0
iface eth0 inet static
address 10.0.0.1
gateway 10.0.0.254
netmask 255.255.255.0

xm create /etc/xen/vm01.cfg
xm console vm01

完成. 这样所有VMs (10.0.0.0/24)将可访问其他的机器,其通过dom0访问外部网络(192.168.0.0/24). 所有10.0.0.0/24到192.168.0.0/24的网络流量在外部网络中将显示dom0的IP,即 192.168.0.3. 结果所有位于私网中的VMs受保护.
NAT路由网络模式排障

在dom0上运行ifconfig 应显示以下相似内容:

dom0:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:8B:DC:F7:2B
inet addr:192.168.0.3 Bcast:192.168.0.254 Mask:255.255.255.0
inet6 addr: fe80::250:8bff:fedc:f72b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1662 errors:0 dropped:0 overruns:0 frame:0
TX packets:998 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:153897 (150.2 KiB) TX bytes:145027 (141.6 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

vif1.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet addr:10.0.0.128 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:129 errors:0 dropped:0 overruns:0 frame:0
TX packets:144 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:13672 (13.3 KiB) TX bytes:17774 (17.3 KiB)

在dom0上运行iptables -L 应显示以下相似内容:

dom0:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT 0 — 10.0.0.1 anywhere PHYSDEV match –physdev-in vif1.0
ACCEPT udp — anywhere anywhere PHYSDEV match –physdev-in vif1.0 udp spt:bootpc dpt:bootps

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

在dom0上运行route 应显示以下相似内容:

dom0:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.1 * 255.255.255.255 UH 0 0 0 vif1.0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

在domU上运行ifconfig 应显示以下相似内容:

vm01:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:4B:2F:21
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe4b:2f21/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:144 errors:0 dropped:0 overruns:0 frame:0
TX packets:129 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:17774 (17.3 KiB) TX bytes:15478 (15.1 KiB)

双向路由网络模式

此xen配置相对复杂一些. 转发规则均须手工设置.这个配置当然有更大的弹性,其允许建立私有网络并进行路由.
网络结构示意图

Xen_Networks3.jpg

示意图说明如下:

domU机器处于不同的私有网段中.
domU的流量是被路由到外部网络(192.168.0.0/24)的.
domU机器可直接被192.168.0.0/24访问. 但一条路由必须加到默认网关(192.168.0.1)中.
192.168.0.0/24 可见domU机器.

此模式与NAT路由模式唯一的区别是domU机器暴露于外部网络中。当VM (10.0.0.1) ssh到外部机器 (192.168.0.5)时,会显示它的原始IP.
配置Xen使用双向路由网络模式

主要配置步骤如下.

1. 配置xend-config.sxp

vi /etc/xen/xend-config.sxp
(network-script network-route)
#(network-script network-bridge)
#(network-script network-nat)

(vif-script vif-route)
#(vif-script vif-bridge)
#(vif-script vif-nat)

2.配置vm01.cfg (vm配置文件)

vi /etc/xen/auto/vm01.cfg
vif = [ ‘ip=10.0.0.1’ ]
#thats all that is required for the networking part.

3.配置dom0进行转发

echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
iptables -t nat -A POSTROUTING -s 10.0.0.0 -j MASQUERADE

4. 配置VM自己的网络接口 /etc/network/interfaces

mount /srv/xen/vm01-disk.img /mnt
vi /mnt/etc/network/interfaces
auto eth0
iface eth0 inet static
address 10.0.0.1
gateway 10.0.0.254
netmask 255.255.255.0

xm create /etc/xen/vm01.cfg
xm console vm01

5. 配置默认网关192.168.0.1到 10.0.0.0的路由

为让192.168.0.0/24 IP地址段的机器可以看到10.0.0.0/8,需要配置增加一条路由. 需要配置在外部网络的默认网关上(192.168.0.1),以当机器查询 10.0.0.0/8 地址时,他们的默认网关可以找到路由记录.

192.168.0.1:~# route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.3
route

#to delete this route:
route del -net 172.16.0.0 netmask 255.255.255.0 gw 193.1.99.76

完成.这样所有VMs (10.0.0.0/24) 将可全面互相访问,外部网络(192.168.0.0/24)可通过dom0访问到他们。所有流量会通过dom0进行转发,所有自10.0.0.0/8到192.168.0.0/24的连接都会显示其真实IP地址.

注: 第5步是关键. 没有这一步,连接不能回去.
双向路由模式排障

在Odom0上运行ifconfig 应有如下相似内容:

dom0:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:8B:DC:F7:2B
inet addr:192.168.0.3 Bcast:192.168.0.3 Mask:255.255.255.0
inet6 addr: fe80::250:8bff:fedc:f72b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1105 errors:0 dropped:0 overruns:0 frame:0
TX packets:723 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:105354 (102.8 KiB) TX bytes:99490 (97.1 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

vif1.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet addr:192.168.0.3 Bcast:192.168.0.3 Mask:255.255.255.255
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:194 errors:0 dropped:0 overruns:0 frame:0
TX packets:153 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:13094 (12.7 KiB) TX bytes:25365 (24.7 KiB)

在dom0上运行route 应有如下相似内容:

dom0:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.1 * 255.255.255.255 UH 0 0 0 vif1.0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

在dom0上运行iptables -L 应有如下相似内容:

dom0:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT 0 — 10.0.0.1 anywhere PHYSDEV match –physdev-in vif1.0
ACCEPT udp — anywhere anywhere PHYSDEV match –physdev-in vif1.0 udp spt:bootpc dpt:bootps

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

在dom0上运行iptables -t nat -L 应有如下相似内容:

dom0:~# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE 0 — 10.0.0.0 anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

在domU上运行ifconfig 应有如下相似内容:

vm01:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:35:B8:A1
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe35:b8a1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:153 errors:0 dropped:0 overruns:0 frame:0
TX packets:194 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25365 (24.7 KiB) TX bytes:15810 (15.4 KiB)

排查与帮助提示
tcpdump

tcpdump是非常有用的工具,它可以看到ip连接与否!

192.168.0.1:~# tcpdump | grep 10.0.0.1

directadmin suphp模式设置openbasedir

http://help.directadmin.com/item.php?id=2
http://help.directadmin.com/item.php?id=183
http://forum.directadmin.com/showthread.php?t=29483
最后一个只需要参考下即可


#!/bin/sh
cd /usr/local/directadmin/data/templates
cp virtual_host2*.conf custom
cd custom

sed -i '7 iSetEnv PHP_INI_SCAN_DIR /usr/local/directadmin/data/users/|USER|/php/' virtual_host2_sub.conf
sed -i '7 iSetEnv PHP_INI_SCAN_DIR /usr/local/directadmin/data/users/|USER|/php/' virtual_host2.conf
sed -i '8 iSetEnv PHP_INI_SCAN_DIR /usr/local/directadmin/data/users/|USER|/php/' virtual_host2_secure.conf
sed -i '8 iSetEnv PHP_INI_SCAN_DIR /usr/local/directadmin/data/users/|USER|/php/' virtual_host2_secure_sub.conf
echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue

cat>/usr/local/directadmin/scripts/custom/user_create_post.sh</usr/local/lib/php.ini.template
echo "open_basedir = OBD" >>/usr/local/lib/php.ini.template

ls -l /home | grep '^d' |grep -v root| awk '{system("username="$3" /usr/local/directadmin/scripts/custom/user_create_post.sh")}'