sybase的自启动控制脚本

 cat>/etc/init.d/sybased<<
#!/bin/bash
#

# chkconfig: 2345 81 31

# description: sybase start&stop script

# Source function library.

. /etc/rc.d/init.d/functions

SYB_OWNER=sybase
SYBASE=/opt/sybase
SYBASE_ASE=ASE-15_0
SYBASE_OCS=OCS-15_0
SYBASEDIR=\$SYBASE/\$SYBASE_ASE/install
SYB_STOP=\$SYBASE/\$SYBASE_OCS/bin
SAPASS=123456
DSQUERY=testb2bjoy
DATASERVER=testb2bjoy
RETVAL=0
PATH=\$SYBASE/\$SYBASE_ASE/bin:/\$SYBASE/\$SYBASE_ASE/install:/\$SYBASE/\$SYBASE_OCS/binPATHHOME/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/bin:.

export SYBASE DSQUERY SYBASE_ASE SYBASE_OCS DATASERVER SYBASEDIR PATH

if [ ! -f \$SYBASE/\$SYBASE_ASE/install/startserver ]
then
        echo "Sybase startup: startserver not found"
        exit
fi

start()
{
                su - \$SYB_OWNER -c "\$SYBASE/\$SYBASE_ASE/install/startserver -f \$SYBASEDIR/RUN_"\$DATASERVER""
                sleep 60
                su - \$SYB_OWNER -c "\$SYBASE/\$SYBASE_ASE/install/startserver -f \$SYBASEDIR/RUN_"\$DATASERVER"_bs"

                RETVAL=\$?

                if [ \$RETVAL -eq 0 ]; then
                            action \$"Starting Sybase 12.5 startserver: " /bin/true
                else
                            action \$"Starting Sybase 12.5 startserver: " /bin/false
                fi

                return \$RETVAL
}

stop()
{

                su - \$SYB_OWNER -c "isql -Usa -P\$SAPASS -S\$DATASERVER -i\$SYBASE/\$SYBASE_ASE/install/shutdown_backup.sql"
                su - \$SYB_OWNER -c "isql -Usa -P\$SAPASS -S\$DATASERVER -i\$SYBASE/\$SYBASE_ASE/install/shutdown_dataserver.sql"

                RETVAL=\$?


                if [ \$RETVAL -eq 0 ]; then
                           action \$"Stopping Sybase 12.5 sybshutdown: " /bin/true
                else
                            action \$"Stopping Sybase 12.5 sybshutdown: " /bin/false
                        RETVAL=1
                fi

                return \$RETVAL
}

restart()
{
    stop
    start
}

pid="dataserver"


case "\$1" in
  start)
        start
        RETVAL=\$?
        ;;
  stop)
        stop
        RETVAL=\$?
        ;;
  status)

    su - sybase -c  "/opt/sybase/ASE-15_0/install/showserver"
        RETVAL=\$?

        ;;
  restart)
            restart
        RETVAL=\$?
            ;;
  *)
        echo \$"Usage: \$0 {start|status|stop|restart}"
        exit 1
esac

exit \$RETVAL
EOF
chmod 755 /etc/init.d/sybased 
chkconfig add sybased
chkconfig --list |grep sybased

screen源码编译安装


[root@host1 src]# wget ftp://ftp.gnu.org/pub/gnu/screen/screen-4.0.3.tar.gz
[root@host1 src]# tar -xvf screen-4.0.3.tar.gz
[root@host1 src]# cd screen-4.0.3
[root@host1 screen-4.0.2]# ./configure
[root@host1 screen-4.0.2]# make
[root@host1 screen-4.0.2]# make install
[root@host1 screen-4.0.2]# install -m 644 etc/etcscreenrc /etc/screenrc
[root@host1 screen-4.0.2]# cp ./screen /bin
注意和一般程序的安装过程有所不同,后面这两条指令一定要执行。

yum安装出现这个错误的解决办法 Error: No Package Matching glibc.i686

如题,今天用yum安装软件的时候一直提示这个,不管安装什么软件包都这样,后google之,执行以下命令即可解决:
yum install glibc glibc.i386 –enablerepo=c532*

图形界面之管理工具Webmin


很多人习惯了win上的操作,点点鼠标就能完成工作,面对linux上的那么多操作命令,素手无策,今天我给大家分享一款图形化系统管理工具软件Webmin
          Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器 访问Webmin的各种管理功能并完成相应的管理动作。目前Webmin支持绝大多数的Unix系统,这些系统除了各种版本的linux以外还包括:AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。
       Webmin 让您能够在远程使用支持HTTPS (SSL 上的 HTTP)协议的 Web 浏览器通过 Web 界面管理您的主机。这在保证了安全性的前提下提供了简单深入的远程管理。这使得 Webmin 对系统管理员非常理想,因为所有主流平台都有满足甚至超出上述需求的 Web 浏览器。而且,Webmin 有其自己的“Web 服务器”,因此不需要运行第三方web软件(比如apache服务器或nginx服务器)。万事具备。Webmin 的模块化架构允许您在需要时编写您自己的配置模块。除了在此介绍的模块之外,Webmin 还包括许多模块。尽管目前我们将主要关注网络服务,但是您会看到,几乎您系统的每一部分都能够通过 Webmin 来配置和管理。
1、用ssh客户端软件登陆服务器
2、用root切换目录到/opt下,命令是:cd /opt
3、下载Webmin的安装文件,命令是:wget http://prdownloads.sourceforge.net/webadmin/webmin-1.450.tar.gz
4、解压缩文件,命令是:tar -xzf webmin-1.450.tar.gz
5、进入webmin的解压缩目录,然后运行setup.sh,命令为:./setup.sh
6、一路回车即可安装完成,最后有一个地方需要设置用户名和密码的地方,用户名默认是admin,可以自己修改,密码输入2次即可

详细操作如下:
Config file directory[/etc/webmin]: 回车    //直接回车表示选择默认安装路径,也可下其它路径,然后接回车键
Log file directory[/var/webmin]:    回车    //同上
Web server port (default 10000):回车       //指定Web访问的端口,默认端口为10000
Login name (default admin)://在这里输入登录用户名,默认是“admin”
Login password: 输入密码
Password again: 再次输入密码
Start Webmin at boot time (y/n):输入”y”
7、等看到安装完成的提示之后,在浏览器中输入http://ip:10000或 http://localhost:10000/ ,然后回车,如果看到一个登陆界面,就说明webmin已经安装成功了。至此表明,安装在Linux系统下的Webmin可以正常工作了。正确输入用户名及口令(默认只有admin账号可以登陆),就可以对系统管理了。
8、刚安装时是英文界面,登录webmin系统后,依次打开Webmin →Webmin Configuration →Language,在 Display in Language处选择Simplified Chinese (ZH_CN),然后再点击”Change Language”重新进入webmin系统时就会显示中文了。

安装成功的童鞋们,你们觉得好用吗?

RAID介绍


磁盘阵列全名是: Redundant Arrays of Inexpensive Disks, 简称RAID ,意思是:廉价的磁盘冗余阵列。 RAID 可以通过一个技术(软件或硬件),将多个物理的磁盘整合成为一个虚拟的磁盘设备,而这个虚拟的磁盘不但扩展了储存空间,而且还有数据保护的功能。 RAID根据等级 (level) 的不同,而使得整合后的磁盘具有不同的功能,基本常见的 level 有以下这几种:raid0,raid1和raid5,根据这三种又衍生出了raid0+1或者rad1+0

          RAID-0:磁盘叠加
这种模式一般是使用相同型号与容量的磁盘来组成。这种模式的 RAID 会将磁盘先切出等量的区块, 然后当一个文件需要要写入 RAID 设备时,该文件就会依据区块的大小切割好,然后再依次放到各个磁盘里。由于每个磁盘会交错的存放数据, 因此数据要写入 RAID 时,会被等量的放在各个磁盘上面。
RAID-0的特点就是:
1、磁盘越多RAID设备的容量就越大。
2、容量的总大小是多个硬盘的容量的总和。
3、磁盘越多,写入的效能就越高。
4、如果使用非等大的硬盘,那么当小的磁盘写满后,就直接向空间大的磁盘中写数据了。
5、最少的磁盘数是2个,而且磁盘使用率为100%
他的致命之处就是:万一其中一个磁盘有问题,那么数据就会全部出问题。因为数据是分开存储的。

      RAID-1:镜像备份
这种模式主要是让同一份数据,完整的保存在不同的磁盘上。由于同一份数据会被分别写入到其他不同磁盘。因此在大量写入 RAID-1 设备的情况下,写入的效能会变的非常差。但如果你使用的是硬件 RAID (磁盘阵列卡) 时,磁盘阵列卡会主动的复制一份而不使用系统的 I/O总线,这对效能影响是不大的。 如果使用软件磁盘阵列,效能就会明显下降了。
RAID-1的特点是:
1、保证了数据的安全,
2、RAID-1设备的容量是所有磁盘容量总和的一半
3、在多个磁盘组成RAID-1设备的时候,总容量将以最小的那一颗磁盘为主
4、读取的效能相对增加。这是因为数据在不同的磁盘上面,如果多个进程在读取同一笔数据时,RAID 会自行取得最佳的读取平衡。
5、磁盘数必需是2的整数倍。磁盘利用率为50%
不足之处就是:写入的效能会降低

       RAID-5:效能与数据备份的均衡考虑
RAID 5:至少需要三个以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似 RAID-0, 不过每个循环的写入过程中,在每颗磁盘还加入一个校验数据(Parity),这个数据会记录其他磁盘的备份数据, 用于当有磁盘损毁时的救援。
RAID-5的特点:
1、当任何一个磁盘损坏时,都能够通过其他磁盘的检查码来重建原本磁盘内的数据,安全性明显增强。
2、由于有同位检查码的存在,因此 RAID-5 的总容量会是整个磁盘数量减一个。
3、当损毁的磁盘数量大于等于两颗时,那么 RAID-5 的资料就损坏了。 因为 RAID-5 预设只能支持一颗磁盘的损坏情况。
4、在读写效能上与 RAID-0 差不多。
5、最少磁盘是3块,磁盘利用率N-1块
不足:数据写入的效能不一定增加,因为要写入 RAID 5 的数据还得要经过计算校验码 (parity)。所以写入的效能与系统的硬件关系较大。尤其当使用软件磁盘阵列时,校验码 (parity)是通过 CPU 去计算而非专职的磁盘阵列卡, 因此在数据校验恢复的时候,硬盘的效能会明显下降。

下面给大家分享下软raid5的做法:
# rpm -qf /sbin/mdadm                安装软件包
# mdadm -Cv /dev/md5 -l 5 -n 3 /dev/sda5 /dev/sda6 /dev/sda7
mdadm: array /dev/md5 started.
# mdadm -D -s /dev/md5   查看raid信息cat /proc/mdstat
#mkfs.ext3 /dev/md5
#mount /dev/md5 /mnt
生成 /etc/mdadm.conf 配置文件,开机自动识别
[root@lan1 dev]# mdadm -D -s > /etc/mdadm.conf
[root@lan1 dev]# vim !$
ARRAY /dev/md5 level=raid5 num-devices=3 UUID=5a944e39:948186b6:f2927409:b0ee5d4a

模拟损坏
[root@lan1 /]# mdadm /dev/md5 -f /dev/sda6
mdadm: set /dev/sda6 faulty in /dev/md5
[root@lan1 /]# mdadm -D  -s /dev/md5

    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       0        0        1      removed
       2       8        7        2      active sync   /dev/sda7

       3       8        6        -      faulty spare   /dev/sda6
将损坏的盘移除
[root@lan1 /]# mdadm /dev/md5 -r /dev/sda6
mdadm: hot removed /dev/sda6
[root@lan1 /]# mdadm -D -s /dev/md5


    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       0        0        1      removed
       2       8        7        2      active sync   /dev/sda7
添加一个新盘
[root@lan1 /]# partprobe /dev/sda
[root@lan1 /]# mdadm /dev/md5 -a /dev/sda8
mdadm: added /dev/sda8
[root@lan1 /]# mdadm -D -s /dev/md5        不需要格式化会自动重构
    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       3       8        8        1      spare rebuilding   /dev/sda8
       2       8        7        2      active sync   /dev/sda7
[root@lan1 /]# mdadm -D -s /dev/md5

    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8        8        1      active sync   /dev/sda8
       2       8        7        2      active sync   /dev/sda7
启用与停用
[root@lan1 ~]# mdadm -A -s /dev/md5
mdadm: device /dev/md5 already active - cannot assemble it
[root@lan1 ~]# mdadm -S -s /dev/md5
mdadm: stopped /dev/md5
[root@lan1 ~]# mdadm -D -s /dev/md5
mdadm: md device /dev/md5 does not appear to be active.
[root@lan1 ~]# mdadm -A -s /dev/md5
mdadm: /dev/md5 has been started with 3 drives.
[root@lan1 ~]# mdadm -D -s /dev/md5
/dev/md5:
移除
[root@lan1 /]# umount /mnt
[root@lan1 /]# mdadm -S -s /dev/md5
mdadm: stopped /dev/md5
[root@lan1 /]# mdadm --zero-superblock /dev/sda5 /dev/sda7 /dev/sda8
[root@lan1 /]# mdadm -A -s /dev/md5
mdadm: /dev/md5 assembled from 1 drive - not enough to start the array.
mdadm -as /dev/md5 将设置为阵列随系统启动而启动a是auto的意思

apache的两种工作模式详解


1、prefork.c模块(一个非线程型的、预派生的MPM)
    prefork MPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:他能够使用那些没有处理好线程安全的第三方模块,并 且对于那些线程调试困难的平台而言,他也更容易调试一些。
ServerLimit   20000
StartServers   5
MinSpareServers   5
MaxSpareServers   10
MaxClients   1000
MaxRequestsPerChild 0

ServerLimit     2000
//默认的MaxClient最大是256个线程,假如想配置更大的值,就的加上ServerLimit这个参数。20000是ServerLimit这个参数的最大值。假如需要更大,则必须编译apache,此前都是无需重新编译Apache。
生效前提:必须放在其他指令的前面
StartServers   5
//指定服务器启动时建立的子进程数量,prefork默认为5。
MinSpareServers   5
//指定空闲子进程的最小数量,默认为5。假如当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。
MaxSpareServers   10
//配置空闲子进程的最大数量,默认为10。假如当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。此参数不要设的太大。假如您将该指令的值配置为比MinSpareServers小,Apache将会自动将其修改成"MinSpareServers+1"。
MaxClients   256
//限定同一时间客户端最大接入请求的数量,默认为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,您必须同时增大ServerLimit 。
MaxRequestsPerChild 10000
//每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。假如MaxRequestsPerChild为"0",子进程将永远不会结束。
将MaxRequestsPerChild配置成非零值有两个好处:
1.能够防止(偶然的)内存泄漏无限进行,从而耗尽内存。
2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量(重生的机会)。
工作方式:
一个单独的控制进程(父进程)负责产生子进程,这些子进程用于监听请求并作出应答。Apache总是试图保持一些备用的 (spare)或是空闲的子进程 用于迎接即将到来的请求。这样客户端就无需在得到服务前等候子进程的产生。在Unix系统中,父进程通常以root身份运行以便邦定80端口,而 Apache产生的子进程通常以一个低特权的用户运行。User和Group指令用于配置子进程的低特权用户。运行子进程的用户必须要对他所服务的内容有 读取的权限,但是对服务内容之外的其他资源必须拥有尽可能少的权限。
2、worker.c模块(支持混合的多线程多进程的多路处理模块)
    worker MPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,假如一个线程崩溃,整个进程就会连同其任何线程一起"死掉".由于线程共享内存空间,所以一个程式在运行时必须被系统识别为"每 个线程都是安全的"。
ServerLimit   50
ThreadLimit   200
StartServers   5
MaxClients   5000
MinSpareThreads   25
MaxSpareThreads   500
ThreadsPerChild   100
MaxRequestsPerChild 0

ServerLimit   16
//服务器允许配置的进程数上限。这个指令和ThreadLimit结合使用配置了MaxClients最大允许配置的数值。任何在重启期间对这个指令的改变都将被忽略,但对MaxClients的修改却会生效。
ThreadLimit 64
//每个子进程可配置的线程数上限。这个指令配置了每个子进程可配置的线程数ThreadsPerChild上限。任何在重启期间对这个指令的改变都将被忽略,但对ThreadsPerChild的修改却会生效。默认值是"64".
StartServers 3
//服务器启动时建立的子进程数,默认值是"3"。
MinSpareThreads 75
//最小空闲线程数,默认值是"75"。这个MPM将基于整个服务器监控空闲线程数。假如服务器中总的空闲线程数太少,子进程将产生新的空闲线程。
MaxSpareThreads 250
//配置最大空闲线程数。默认值是"250"。这个MPM将基于整个服务器监控空闲线程数。假如服务器中总的空闲线程数太多,子进程将杀死多余的空闲线 程。MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正您配置的值:worker需要其大于等于 MinSpareThreads加上ThreadsPerChild的和
MaxClients 400
//允许同时伺服的最大接入请求数量(最大线程数量)。任何超过MaxClients限制的请求都将进入等候 队列。默认值是"400",16 (ServerLimit)乘以25(ThreadsPerChild)的结果。因此要增加MaxClients的时候,您必须同时增加 ServerLimit的值。
ThreadsPerChild 25
//每个子进程建立的常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。
MaxRequestsPerChild 0
//配置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。假如MaxRequestsPerChild为"0",子进程将永远不会结束。
将MaxRequestsPerChild配置成非零值有两个好处:
1.能够防止(偶然的)内存泄漏无限进行,从而耗尽内存。
2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量(重生的机会)。

注意
对于KeepAlive链接,只有第一个请求会被计数。事实上,他改变了每个子进程限制最大链接数量的行为(这个大家能理解吗??)。
工作方式:
每个进程能够拥有的线程数量是固定的。服务器会根据负载情况增加或减少进程数量。一个单独的控制进程(父进程)负责子进程的建 立。每个子进程能够建立 ThreadsPerChild数量的服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答。Apache总是试图维持一个备 用(spare)或是空闲的服务线程池。这样,客户端无须等待新线程或新进程的建立即可得到处理。在Unix中,为了能够绑定80端口,父进程一般都是以 root身份启动,随后,Apache以较低权限的用户建立子进程和线程。User和Group指令用于配置Apache子进程的权限。虽然子进程必须对 其提供的内容拥有读权限,但应该尽可能给予他较少的特权。另外,除非使用了suexec ,否则,这些指令配置的权限将被CGI脚本所继承。

硬限制:
ServerLimi和ThreadLimit这两个指令决定了活动子进程数量和每个子进程中线程数量的硬限制。要想改变这个硬限制必须完全停止服务器然后再启动服务器(直接重启是不行的)。
Apache在编译ServerLimit时内部有一个硬性的限制,您不能超越这个限制。
prefork MPM最大为"ServerLimit 200000"
其他MPM(包括work MPM)最大为"ServerLimit 20000
Apache在编译ThreadLimit时内部有一个硬性的限制,您不能超越这个限制。
mpm_winnt是"ThreadLimit 15000"
其他MPM(包括work prefork)为"ThreadLimit 20000

注意:
使用ServerLimit和ThreadLimit时要特别当心。假如将ServerLimit和ThreadLimit配置成一个高出实际需要许多的值,将会有过多的共享内存被分配。当配置成超过系统的处理能力,Apache可能无法启动,或系统将变得不稳定。

分享几个vim里常用的快捷键

1,注释所有的行:ctrl+v j/k+ shift +i
2,查看光标当前的man手册 shift+k
3,d+f+字符
4,选中面积 v+t+字符
5,在vim里面删除光标后的所有字符 shift+d
6,删除当前光标上的单词 d+i+w
7,选中当前光标上的单词 v+i+w

删除登录服务器的相关信息

Linux下挂载lvm管理的文件系统,备份数据,并解决lvm同名冲突问题


NND,今天改了几个linux的内核参数,然后终端就操作不了了,重启也无用,起不来,因为自己不在机房,所以没办法看到错误提示,也不能进入单用户模式去修复linux操作系统,最后机房的人拿新的硬盘安装了操作系统,再把磁盘挂载到这个新系统上,然后我就准备把数据备份出来,2个系统分区格式全为系统默认分区,系统默认使用的lvm格式,并且默认的卷都是 VolGroup00 ,彻底无语,以下是具体备份方法:

使用 pvs 查看显示如下:
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup00 lvm2 a- 136.62G 0
/dev/sdb2 VolGroup00 lvm2 a- 136.62G 0
发现可以正确认别到两个VG,但是同名,如何挂载呢?
解决办法是,将原来的VG更名,解决冲突即可挂载。



重命名格式为:vgrename VolGroup00 VolGroup01
此时会提示:
[root@localhost ~]# vgrename VolGroup00 VolGroup01
Found more than one VG called VolGroup00. Please supply VG uuid.
原因是存在两个 VolGroup00,修改的方法他已经提示了要指定 VG uuid即可。


查看VG uuid的命令为:
[root@localhost ~]# 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 136.62G 0 dcHa6G-abU2-Xfq8-EPBm-jBLj-sf18-O5uH0U
VolGroup00 wz--n- 32.00M 1 2 0 136.62G 0 OF8g7h-PQJB-9D9z-yPxn-1kfY-Advq-YbNHJ9



查到VG uuid以后,再次执行改名:
[root@localhost ~]# vgrename OF8g7h-PQJB-9D9z-yPxn-1kfY-Advq-YbNHJ9 VolGroup01
Volume group "VolGroup00" still has active LVs



修改成功以后,再执行:lvscan
[root@localhost ~]# lvscan
inactive '/dev/VolGroup01/LogVol00' [130.84 GB] inherit
inactive '/dev/VolGroup01/LogVol01' [5.78 GB] inherit
ACTIVE '/dev/VolGroup00/LogVol00' [130.84 GB] inherit
ACTIVE '/dev/VolGroup00/LogVol01' [5.78 GB] inherit
可以看到新修改的VolGroup01是inactive状态。


再使用vgchange 加载 VolGroup01
[root@localhost ~]# vgchange -ay /dev/VolGroup01
2 logical volume(s) in volume group "VolGroup01" now active


最后 mount 就可以
[root@localhost ~]#mkdir /mnt/old
[root@localhost ~]# mount /dev/VolGroup01/LogVol00 /mnt/old
[root@localhost ~]#tar -zcvf back_20101217.tar.gz /mnt/old/var/lib/mysql /mnt/old/usr/local/nginx/htdocs/
然后想办法把back_20101217.tar.gz拷贝到本地来就可以了
至此,全部完成。

获取用户IP地址的三个属性的区别

 一、没有使用代理服务器的情况:

  REMOTE_ADDR = 您的 IP

  HTTP_VIA = 没数值或不显示

  HTTP_X_FORWARDED_FOR = 没数值或不显示

  二、使用代理服务器的情况:

  REMOTE_ADDR = 最后一个代理服务器 IP

  HTTP_VIA = 代理服务器 IP

  HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215.

  这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

关于使用vmware上网的几种方式介绍

我们在kictstart+pxe无人值守安装的时候要用到虚拟机,很多人不明白虚拟机与物理机连接的几种方式,或者说他们有什么不同,什么情况下使用什么样的连接方式?在这里我详细讲解一下:
   首先认识一下网络接口设备:
    VMnet0:用于虚拟桥接网络下的虚拟交换机

  VMnet1:用于虚拟Host-Only网络下的虚拟交换机

  VMnet8:用于虚拟NAT网络下的虚拟交换机

    在我们安装了VMware虚拟机后,我们的物理机上在网络连接对话框中会多出两个虚拟网卡

  VMware Network Adepter VMnet1:Host用于与Host-Only虚拟网络进行通信的虚拟网卡

  VMware Network Adepter VMnet8:Host用于与NAT虚拟网络进行通信的虚拟网卡

    我们知道VMware也分好几种版本,但是不管使用哪种版本,我们都能发现在安装过程中让我们选择网络模式。在默认情况下会选中NAT模式,但有用户会问其他模式是干什么用的?有时候选择了其他模式之后就不能上网了。这是为什么?我们来看一下VMware 的3种网络模式的功能和通信规则:

    (1)Bridged方式
        用这种方式,虚拟系统的IP可设置成与本机系统在同一网段,虚拟系统相当于网络内的一台独立的机器,与本机共同插在一个交换机上,网络内其他机器可访问虚拟系统,虚拟系统也可访问网络内其他机器,当然与本机系统的双向访问也不成问题。

    (2)NAT方式
        这种方式也可以实现本机系统与虚拟系统的双向访问.但网络内其他机器不能访问虚拟系统,但虚拟系统可通过本机系统用NAT协议访问网络内其他机器,并且可以跟物理机一样上网

    (3)host-only方式
        顾名思义这种方式只能进行虚拟机和主机之间的网络通信,既网络内其他机器不能访问虚拟系统,虚拟系统也不能访问其他机器.

      (4)自定义
        这个很灵活,大家根据自己喜好自己设定.....

      
        举例说明:
bridged模式
物理机的本地连接设置
IP地址: 192.168.1.10
子网掩码: 255.255.255.0
默认网关: 192.168.1.1 (根据自己的网络情况填写)
首选DNS:8.8.8.8

虚拟系统本地连接设置
IP地址: 192.168.1.11
子网掩码: 255.255.255.0
默认网关: 192.168.1.1 (根据自己的网络情况填写)
首选DNS:8.8.8.8
这样虚拟系统就相当于网络中的一台真实机器可以上网了。

2、NAT模式
这种方式不占用网络中的IP地址,只要物理主机能上网,那么虚拟系统就能上网。
修改物理主机的虚拟网卡VMware Network Adepter VMnet8,比如说设置成192.168.10.10,掩码是255.255.255.0
虚拟系统本地连接设置

IP地址: 192.168.10.11
子网掩码: 255.255.255.0
这样虚拟系统就可以和本地主机一样上网了,具体的网关根据实际情况设置

3、host-only模式
这种方式设置方法和Bridge模式基本一样,只要物理主机的VMware Network Adepter VMnet1中设置和虚拟系统中本地连接在同一个网段就可以。
本机的本地连接设置
IP地址:   192.168.2.10
子网掩码: 255.255.255.0

虚拟系统本地连接设置
IP地址:    192.168.2.11
子网掩码:  255.255.255.0
这种方式不能上网,要想上网需要共享一下物理主机的本地连接,如果用这样的方式去上网我们还不如用nat方式呢,是不是呢?
最后献上一张图给大家,帮助大家理解

 
请点击下面内容详细了解如何实现上网:
vmware6实现nat上网

sybase数据库


Sybase 是与 Oracle 并驾齐驱的数据库产品,在企业平台上有较多的应用.前几天,我为安装和配置Sybase 花费了很多时间过程记录下来,以供大家参考

一、软件的版本。操作系统为Centos5.4,内核版本是2.6.18。Sybase 版本是ase1253esd1xe_linux,从www.sybase.com上可以下载。这个版本不需要许可,可免费使用。

二、安装操作系统。centos的安装相对于红帽子来说差不多,因此大部分的操作就是用鼠标点击“下一步”,然后只需漫长的等待就可以完成安装。

三、系统基本配置。1 设置好网络参数,如果有不正确的地方,修改文件 /etc/sysconfig/network-scripts/ifcfg-eth0,有时在安装过程中设定的默认网关不生效,就可以在这个文件加入一行 GATEWAY=202.108.93.254 //应根据自己的实际情况设定。
                2 设定主机名。由于sybase需要以主机名来定义sybase的服务名称(如RUN_hostname),因此取一个简单的名字也是有必要的。通过修改文件 /etc/hosts 来达到目的,我的样本文件如下
[root@sybase root]# vim /etc/hosts

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
202.108.93.200          sybase  //这行是加上去的
待sybase安装配置完后,sybase 的主服务器名称将变成 RUN_SYBASE的样子。
              3 添加用户sybase,这个用户用来安装、配置和运行sybase数据库服务器。为安全起见,不建议使用root来安装、配置和运行sybase服务器。添加用户的命令如下:
[root@sybase /]# useradd –d /opt/sybase sybase  //指定sybase 用户的主目录
[root@sybase /]#passwd sybase   //给用户sybase设置密码
Changing password for user sybase.
New password:mygod           //密码为  mygod ,显示为星号。
Retype new password:mygod     //再输一次

  四、下载sybase安装文件ase1253esd1xe_linux.tar.gz,创建目录 /tmp/sybase,把文件ase1253esd1xe_linux保存在这个目录,而后解压该文件,解压结束后,修改目录/tmp/sybase的权限,使用户sybase可以读和执行/tmp/sybase目录下的文件。操作过程如下:
[root@sybase /]#mkdir /tmp/sybase
访问 www.sybase.com, 把文件ase1253esd1xe_linux.tar.gz保存在目录 /tmp/sybase
[root@sybase /]#cd /tmp/sybase
[root@sybase /]#tar –zxvf  ase1253esd1xe_linux.tar.gz  //解压文件
[root@sybase /]chmod –R 755 /tmp/sybase  //改变文件权限,以便于用户//sybase有权限读取和执行相
//关文件   

五、安装、配置sybase服务器。切换到sybase用户, 接着转换目录到 /tmp/sybase,执行安装脚本setup,片刻出现图形安装向导,选择安装语言,一路点击”next”按钮,直到开始复制文件;当文件复制完毕时,紧接着就需要点击 “next”进行配置服务器了。但是请注意,不要急于执行这个操作 ,暂时停下来,再开一个终端窗口,修改sybase用户的环境变量,就是把安装过程中生成的文件 /opt/sybase/SYBASE.sh的内容追加到文件 /opt/sybase/.bash_profile中,然后让这个环境变量生效。下面是操作汇总:
[root@sybase/]# startx          //启用xwindow
[root@sybase/]#xhost +        //允许用户使用xserver
[root@sybase/]# su sybase    //打开一个终端窗口,切换用户为sybase
[sybase@sybase sybase]$ cd /tmp/sybase    //转换目录
[sybase@sybase sybase]$ ./setup           // 运行sybase安装程序
[root@sybase/]# vi /opt/sybase/SYBASE.sh  //这个文件是安装sybase过程中
//自动生成的。把这个文件中的所//有内容复制到文件
// /opt/sybase/.bash_profile里。

[sybase@sybase sybase]$ cat /opt/sybase/.bash_profile  //查看环境变量
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME                //上面是默认的值

#
# Sybase Product Environment variables   //从这儿起,是由SYBASE.sh复制过//来的
#
SYBASE="/opt/sybase"
export SYBASE
SYBASE_OCS="OCS-12_5"
export SYBASE_OCS
PATH="/opt/sybase/OCS-12_5/bin":$PATH
export PATH
LD_LIBRARY_PATH="/opt/sybase/OCS-12_5/lib:/opt/sybase/OCS-12_5/lib3p":
$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
INCLUDE="/opt/sybase/OCS-12_5/include":$INCLUDE
export INCLUDE
LIB="/opt/sybase/OCS-12_5/lib":$LIB
export LIB
SYBASE_JRE="/opt/sybase/shared-1_0/JRE-1_3"
export SYBASE_JRE
PATH="/opt/sybase/JS-12_5/bin":$PATH
export PATH
SYBASE_SYSAM="SYSAM-1_0"
export SYBASE_SYSAM
LM_LICENSE_FILE="/opt/sybase/SYSAM-1_0/licenses/license.dat"
export LM_LICENSE_FILE

[sybase@sybase sybase]$ source .bash_profile  //使sybase的环境变量立即生效
切换窗口到前面的图形安装向导,点击”Next”按钮执行下一步操作,就可以顺利完成配置。值得注意的是:如果环境变量不做处理,可以安装成功,但是配置服务器的时候就会毫无例外的失败,这是配置sybase的关键之处。还有一个地方值得注意,就是sybase服务的端口号,最好是把它记录下来,因为用客户端连的时候需要指明端口号(默认值大致为5000,备份服务器5001,监控服务器5002,xp服务器5003)。

六、sybase数据库的启动。配置完sybase后,安装的服务器都会自己启动。但是,大多数情况下,需要手工启动sybase..以sybase用户登陆系统,执行命令 /opt/sybase/ASE12_5/install/startserver启动sybase.

七、安装sybase客户端。为了方便的操作和维护sybase数据库,sybase公司提供了一个基于windows系统的客户端软件pcclinet_1253.zip,把它下载到windows的机器里,解压后安装即可。

八、从客户端连接sybase数据库服务器。在上面安装sybase客户端的windows 机器启动程序sybase central.

点击菜单项“连接”---“使用Adaptive Server Enterprise连接”,填写Server name,Host name,Port number,正确的话,很快就连上了,可以方便的添加数据库和表等各种操作了。

网站分析工具——Httpwatch(网站优化必备)


网站架设完毕,实际管理运维的人,却未必是网站代码的编写人员。所以,对页面结构、文件内容的设置,往往无从下手。这是一个分析网站header的工具。简单,一目了然。这样,对自己网站的情况,便有所知晓了。

A.      工具介绍:
a)    IE强劲插件

                         i.     网站内容结构、网站webserver分析工具

                       ii.     能够收集并显示网页深层信息

b)    使用条件:关闭IE,先安装

c)     通过本机浏览器发送的http请求进行页面抓包分析及监控

d)    可以对页面展示并整合分析

************************************************

B.      工具使用说明:
a)    清除缓存:在IE的“工具”选项中选择“文件夹选项”,删除cookies和临时文件。

b)    点击Httpwatch的选项“Record”,保证请求访问的过程处于可记录状态。

c)     在IE中输入要分析的网站域名,回车。

d)    访问情况即可被记录。
************************************************

C.      工具栏选项介绍:
a)    Stop:停止访问的记录

b)    Clear:清除访问的记录

c)     View:视图,观看的选项

d)    Summary:被选中的时候,显示的是整个页面被访问的概要情况。日志总结(请求数量),历时总时长,网络路由跳数,下载数据的字节数,上传数据的字节数,http压缩减少的字节数,解析查找次数,TCP连接数。

e)    Find:查找。可以根据需要在不同请求数据中查询上行下行的关键字所在位置。

f)      Filter:过滤器。帮助分析网站动静态比例分配,特别是对在页面的URL比较多的。可以选择不同类型的内容,包含特定关键字的URL,以及头文件,http返回码等。

g)    Save:保存记录的数据和导出格式。

h)    Help:帮助选项。

************************************************

D.      窗口选项说明(上层):
a)         Started:请求URL的开始时间

b)         Time Chart:请求耗损时间中各项时间的具体情况(请求,解析,建连,发送,等待,阻塞,接收等)

c)         Time: 请求URL的耗损时间

d)         Sent:客户端向服务器发起请求的字节数

e)         Received:服务器返回客户端的字节数

f)          Method:用户请求的方式

g)         Result:cache设备对用户请求的处理方式(HTTP返回码)

h)         Type:服务器返回客户端的命令

i)           URL:具体对应的URL。

************************************************

E.       窗口选项说明(下层)
a)         Overview:对各个URL的总体情况描述

b)         Header:分为两部分。

                         i.     Headers Sent:客户端向服务器发起的数据包包头信息;

                       ii.     Headers Received:服务器向客户端回复的数据包包头信息;

1.    (Status-Line):状态项,包括协议类型,http返回码和状态;

2.    Cache-control:是否可以被缓存(public可以;private和no-cache不可以;max-age表示可被缓存的时间长)

3.    Expires:过期时间,优先级低于cache-control中的max-age。

4.    Cache-encoding:文件的编码格式(gzip等,表示有经过压缩)

5.    Age:从最近一次被cache到节点的时刻到本次请求发起的时刻直接的时间长。

6.    Connection:获取数据后是否保持连接(keep-alive:获取后保持连接,这样在下次请求发起时可以减少解析和建连等耗费的时间,比如28;close:数据传输结束之后释放本次连接,下次再解析建立连接。)

7.    Accept-ranges:文件单位,一般是字节。

8.    Content-length:文件大小。

9.    Content-location:此URL内容所在的实际位置/来源。

10. Content-type:文件类型(文本,图片,aspx等)

11. Date:本次请求到达时的,服务器系统时间。

12. Etag:根据文件头header信息由混序或者哈希算法得到的标签。一旦文件有变动更改,标签一定发生变化。

13. Last-modified:文件的上一次/最近一次的修改时间。

14. Server:客户端设备情况(服务器类型和版本)

15. X-cache/via:由哪个公司的哪个节点服务器提供服务,节点是否有缓存

16. X-powerd-by:脚本语言。

c)         Cache:对应URL的cache具体情况(请求前后在cache中的变化,过期,最后修改时间,上一次cache更新时间,上一次接入时间,标签,hit数)

d)         Query String:请求字符串(不一定每个URL都有)

e)         POST Data:客户端发起的请求数据(不一定每个URL都有)

f)          Content:对应URL的具体内容信息

g)         Stream:以流的形式显示信息

************************************************

F.       实用价值:
l  缓存管理

l  网页摘要

l  Cookies管理

l  消息头的发送/接收

l  字符

l  目录……

除了IE浏览器上的httpwatch以后,还有火狐浏览器的firebug也很常用,有兴趣的可以了解一下

url链接


http://www.kuqin.com/web/20090105/32563.html    网站加速:Cache为王篇
http://blog.csdn.net/booboo2006/archive/2010/11/04/5987707.aspx  Web前端-HTTP Cache-control
http://woodpecker.org.cn/abyteofpython_cn/chinese/  简明 Python 教程
http://www.seozac.com/seobook/  SEO教程

openvpn的配置

目前有这么一个需求,我有几个爬虫在铁通的机房里,现在需要他通过移动的网络出去抓取数据,没办法,只能借助openvpn这款优秀的vpn软件了,在移动的机房内部署一台vpn Server。然后让爬虫拨号到移动的网络去
环境如下:

Server端
OS:Centos 5.4
ip:115.160.167.108
Client端
铁通机房的一台内网主机,可上网
OS:win
ip:10.254.220.110

配置如下:
首先配置Server端
[root@Server ~]# modinfo tun  查看有没有tun模块支持
filename:       /lib/modules/2.6.18-164.el5/kernel/drivers/net/tun.ko
alias:          char-major-10-200
license:        GPL
author:         (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
description:    Universal TUN/TAP device driver
srcversion:     9DE80B8421E85BE6D3B9E06
depends:        
vermagic:       2.6.18-164.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1
module_sig:     883f3504a9f782a581431131ff6a52711218ff0a0cb17a7f7462a56b587d3919a824faa39d2d786e0a0ee3f10e7a4b9f03efc5c87b418191eea5a66171
[root@Server ~]# yum install openssl openssl-devel
[root@Server ~]# cd /usr/local/src/
[root@Server src]# wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz
[root@Server src]# tar -zxvf lzo-2.02.tar.gz
[root@Server src]# cd lzo-2.02
[root@Server lzo-2.02]#./configure
[root@Server lzo-2.02]#make
[root@Server lzo-2.02]#make install
[root@Server lzo-2.02]#cd ..
[root@Server src]#wget http://openvpn.net/release/openvpn-2.0.5.tar.gz
[root@Server src]#tar -zxvf openvpn-2.0.5.tar.gz
[root@Server src]#cd openvpn-2.0.5
[root@Server openvpn-2.0.5]# ./configure  --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib --with-ssl-headers=/usr/local/include/openssl --with-ssl-lib=/usr/local/lib
[root@Server openvpn-2.0.5]# make
[root@Server openvpn-2.0.5]# make install
[root@Server openvpn-2.0.5]# cd easy-rsa
[root@Server easy-rsa]# export D=`pwd` && export KEY_CONFIG=$D/openssl.cnf && export KEY_DIR=$D/keys && export KEY_SIZE=1024 && export KEY_COUNTRY=CN && export KEY_PROVINCE=GD && export KEY_CITY=SZ && export KEY_ORG="cmdi.com" && export KEY_EMAIL="XXXX@cmdi.com"
[root@Server easy-rsa]#./clean-all
[root@Server easy-rsa]#./build-ca  生成CA证书
Generating a 1024 bit RSA private key
................++++++
........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]: 直接回车
State or Province Name (full name) [GD]: 直接回车
Locality Name (eg, city) [SZ]: 直接回车
Organization Name (eg, company) [cmdi.com]:直接回车
Organizational Unit Name (eg, section) []:输入cmdi.com
Common Name (eg, your name or your server's hostname) []:输入server
Email Address [XXXX@cmdi.com]:直接回车

[root@Server easy-rsa]#./build-key-server server  建立服务器的证书和私匙

Generating a 1024 bit RSA private key
......++++++
....................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]: 直接回车
State or Province Name (full name) [GD]: 直接回车
Locality Name (eg, city) [SZ]: 直接回车
Organization Name (eg, company) [cmdi.com]: 直接回车
Organizational Unit Name (eg, section) []:输入cmdi.com  
Common Name (eg, your name or your server's hostname) []:输入server
Email Address [XXXX@cmdi.com]: 直接回车

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:输入密码123456
An optional company name []:输入cmdi.com
Using configuration from /usr/local/src/openvpn-2.0.5/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'GD'
localityName          :PRINTABLE:'SZ'
organizationName      :PRINTABLE:'cmdi.com'
organizationalUnitName:PRINTABLE:'cmdi.com'
commonName            :PRINTABLE:'server'
emailAddress          :IA5STRING:'XXXX@cmdi.com'
Certificate is to be certified until Mar 19 08:15:31 2016 GMT (3650 days)
Sign the certificate? [y/n]: 输入y


1 out of 1 certificate requests certified, commit? [y/n]输入y
Write out database with 1 new entries
Data Base Updated

[root@Server easy-rsa]#./build-key client1  建立客户端证书(必须为每个客户端建立一个证书,且名字不相同)。
Generating a 1024 bit RSA private key  
writing new private key to 'client1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]: 直接回车
State or Province Name (full name) [GD]: 直接回车
Locality Name (eg, city) [SZ]: 直接回车
Organization Name (eg, company) [cmdi.com]:直接回车
Organizational Unit Name (eg, section) []:输入cmdi.com
Common Name (eg, your name or your server's hostname) []:client1    #重要: 每个不同的 client 生成的证书, 名字必须不同.
Email Address [XXXX@cmdi.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:输入123456
An optional company name []:输入cmdi.com
Using configuration from /usr/local/src/openvpn-2.0.5/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'GD'
localityName          :PRINTABLE:'SZ'
organizationName      :PRINTABLE:'cmdi.com'
organizationalUnitName:PRINTABLE:'cmdi.com'
commonName            :PRINTABLE:'client1'
emailAddress          :IA5STRING:'XXXX@cmdi.com'
Certificate is to be certified until Mar 19 08:22:00 2016 GMT (3650 days)
Sign the certificate? [y/n]: 输入y


1 out of 1 certificate requests certified, commit? [y/n]输入y
Write out database with 1 new entries
Data Base Updated
依次类推生成其他客户端证书key
[root@Server easy-rsa]#./build-key client2  生成客户端2,名字可随意命名,只要不重复就行了
注意在进入 Common Name (eg, your name or your server's hostname) []: 的输入时, 每个证书输入的名字必须不同
[root@Server easy-rsa]#./build-dh  创建Diffie Hellman参数
[root@Server easy-rsa]#mkdir -p /etc/openvpn/keys
[root@Server easy-rsa]#cp keys/ca.crt /etc/openvpn/keys
[root@Server easy-rsa]#cp keys/server.crt  /etc/openvpn/keys
[root@Server easy-rsa]#cp keys/server.key /etc/openvpn/keys
[root@Server easy-rsa]#cp keys/dh1024.pem /etc/openvpn/keys
[root@Server easy-rsa]#cp ../sample-config-files/server.conf /etc/openvpn/
[root@Server easy-rsa]#vim /etc/openvpn/server.conf
插入以下内容:
local 115.160.167.108
port 1194
proto udp

dev tun

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem

server 10.8.0.0 255.255.255.0

client-to-client
keepalive 10 120

comp-lzo

persist-key
persist-tun
status /etc/openvpn/openvpn-status.log
verb 4

push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 70.88.98.10"  #服务器上本身/etc/resolv.conf 的nameserver ip地址,如有多个继续添加如下
push "dhcp-option DNS 8.8.8.8"

[root@Server easy-rsa]#cp ../sample-scripts/openvpn.init /etc/rc.d/init.d/openvpn
[root@Server easy-rsa]#chkconfig --add openvpn
[root@Server easy-rsa]#service openvpn start
[root@Server easy-rsa]#chkconfig openvpn on
添加NAT规则, 让虚拟网络10.8.0.0/24通过本机公网去访问Internet. 命令如下:
[root@Server easy-rsa]#iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 115.160.167.108
[root@Server easy-rsa]#/etc/init.d/iptables save
[root@Server easy-rsa]#/etc/init.d/iptables restart
注意不同的机器,-o eth0 参数可能不一样,具体要查看公网ip(115.160.167.108)是绑定在哪个网卡上
[root@Server easy-rsa]#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@Server easy-rsa]#/sbin/sysctl -p  使配置立即生效
[root@Server easy-rsa]#cd keys
[root@Server keys]#tar -zcvf mykeys.tar.gz ca.crt ca.key client1.crt client1.csr client1.key
然后想办法把mykeys.tar.gz下载到客户端的机器上去,然后在服务器上把mykeys.tar.gz删除

客户端配置:
服务器装的是 OpenVPN 2.0.5, 那么下载的 OpenVPN GUI fow windows 应该是: openvpn-2.0.5-gui-1.0.3-install.exe
下载地址为:http://openvpn.se/files/install_ ... i-1.0.3-install.exe
依屏幕指示安装openvpn gui,安装结束后, 进入安装文件夹下的 config 目录, 然后将打包的 mykeys.tar.gz 中的证书文件解压到此文件夹
然后在此目录下创建client.ovpn文件,将以下内容复制过去再保存,再在任务栏点 OpenVPN GUI 的小图标右键,点右键中的 connect即可连接vpn服务器.
client
dev tun
proto udp
remote 115.160.167.108 1194
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3
redirect-gateway def1
当 client 连接成功后, 在 cmd 下执行 ipconfig /all, 应该有这类似这样的输出:

Ethernet adapter Local Area Connection 3:
        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : TAP-Win32 Adapter V8
        Physical Address. . . . . . . . . : 00-FF-AA-B0-60-2B
        Dhcp Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        IP Address. . . . . . . . . . . . : 10.8.0.6
        Subnet Mask . . . . . . . . . . . : 255.255.255.252
        Default Gateway . . . . . . . . . : 10.8.0.5
        DHCP Server . . . . . . . . . . . : 10.8.0.5
        DNS Servers . . . . . . . . . . . : 10.8.0.1
                                            203.186.92.69
                                            8.8.8.8
        Lease Obtained. . . . . . . . . . : 2010年12月21日 9:13:52
        Lease Expires . . . . . . . . . . : 2010年12月21日 9:13:52

如果需要第二台机器上使用 vpn , 进行同样的配置, 只需要将打包中的 client1.crt, client1.csr, client1.key 换成对应的 client2.xxx 即可, 然后将 client.ovpn 中的对应key值改掉即可.