关于 九月, 2009 的文章

在RedHat Enterprise Linux 上Oracle 9i的安装配置与调优[原创全面规范]

本文带有图片的完整文档下载地址:http://heyLinux.com/download/Oracle9i.zip

 

1 安装配置Oracle 9i数据库

本章描述内容如下所示:
1.1 安装前的准备工作
介绍在安装Oracle之前所需的准备工作。
1.2安装前的系统设置
介绍在安装Oracle之前所必须的系统设置。
1.3 安装所需软件补丁包
介绍在基于RedHat Enterprise Linux AS4操作系统上安装Oracle之前所需软件补丁包的安装。
1.4 安装所需软件补丁包
介绍在基于RedHat Enterprise Linux 5操作系统上安装Oracle之前所需软件补丁包的安装。
1.5 安装配置Oracle数据库
介绍如何安装设置Oracle数据库软件。
1.6 编辑配置Oracle启动脚本
介绍如何创建并配置Oracle自定义脚本。

 

1.1 安装前的准备工作
1.1.1 获取数据库安装包
确保已取得9.2.0.4版本的Oracle数据库安装文件;
-ship_9204_linux_disk1.cpio.gz
-ship_9204_linux_disk2.cpio.gz
-ship_9204_linux_disk3.cpio.gz

确保已取得安装所需的软件补丁包;
-oracle9i_rhel_sp.zip

1.1.2 检查操作系统版本
执行命令# cat /etc/redhat-release,检查操作系统版本信息。

屏幕显示信息为
Red Hat Enterprise Linux Server release 5.2 (Tikanga)
表示已是符合要求的RHEL 5.0以上版本。

Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
表示已是符合要求的RHEL AS4.0以上版本。

 

1.2 安装前的系统设置
1.2.1 创建用户和组
添加安装过程中需要用到的用户和组;
$ su – root  //直接使用root登录或切换到root身份
# groupadd oinstall  //添加用户组oinstall
# groupadd dba  //添加用户组dba
# useradd –g oinstall –G dba oracle  //添加用户oracle
# passwd oracle  //为oracle用户设置密码

1.2.2 创建安装目录
# mkdir –p /data/install
# cp ship_9204_linux_disk1.cpio.gz /data/install
# cp ship_9204_linux_disk2.cpio.gz /data/install
# cp ship_9204_linux_disk3.cpio.gz /data/install
# cp oracle9i_rhel_sp.zip /data/install

//将所有的安装包以及补丁包拷贝到该install文件夹里

# chown –R oracle.oinstall /data  //将目录权限属主更改为oracle用户

1.2.3 进行系统设置
a)设置内核参数
编辑/etc/sysctl.conf
kernel.shmmax = 2147483648  //这里设置为物理内存的一半,但32位RedHat最大仅支持4*1024*1024*1024 - 1 = 4294967295个字节
kernel.shmmni = 4096
kernel.shmall = 8388608
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

执行sysctl以反应修改,使内核参数立刻生效
# sysctl –p

b)设置Oracle对文件的要求
编辑/etc/security/limits.conf 添加以下内容到文档尾部
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

c)设置Oracle环境变量
编辑/home/oracle/.bash_profile 添加以下内容到文档尾部
export ORACLE_SID=SFENET   //根据需要填写
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=/data/oracle/product/9.2.0.4
export LD_LIBRARY_PATH=/data/oracle/product/9.2.0.4/lib:/lib:/usr/lib:/usr/local/lib:/usr/X11R6/lib
export TNS_ADMIN=/data/oracle/product/9.2.0.4/network/admin
export ORA_NLS33=/data/oracle/product/9.2.0.4/ocommon/nls/admin/data
export ORACLE_OWNER=oracle
export ORACLE_TERM=xterm
export PATH=/data/oracle/product/9.2.0.4/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

1.3 安装所需软件补丁包(基于RedHat Linux AS 4)
a)解压准备好的补丁压缩包
# cd /data/install
# unzip oracle9i_rhel_sp.zip
# cd /data/install/oracle9i_rhel_sp/

b)打p3006854_9204_LINUX.zip
# unzip p3006854_9204_LINUX.zip
# chmod +x 3006854/rhel3_pre_install.sh
# 3006854/rhel3_pre_install.sh

c)安装其它软件补丁包
# rpm -ivh compat-db-4.1.25-9.i386.rpm
# rpm -ivh compat-gcc-32-3.2.3-47.3.i386.rpm
# rpm -ivh compat-gcc-32-c++-3.2.3-47.3.i386.rpm
# rpm -ivh libaio-devel-0.3.105-2.i386.rpm
# rpm -ivh libaio-0.3.105-2.i386.rpm
# rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm
# rpm -ivh compat-libcwait-2.1-1.i386.rpm
# rpm -ivh compat-libgcc-296-2.96-132.7.2.i386.rpm
# rpm -ivh compat-libstdc++-296-2.96-132.7.2.i386.rpm
# rpm -ivh compat-libstdc++-33-3.2.3-47.3.i386.rpm
# rpm -ivh openmotif21-2.1.30-11.RHEL4.6.i386.rpm
# rpm -ivh giflib-4.1.3-8.i386.rpm
# rpm -ivh glib-1.2.10-26.fc7.i386.rpm
# rpm -ivh libpng10-1.0.18-2.i386.rpm
# rpm -ivh ORBit-0.5.17-22.rhel5.i386.rpm
# rpm -ivh gtk+-1.2.10-57.fc7.i386.rpm
# rpm -ivh imlib-1.9.15-2.fc7.i386.rpm
# rpm -ivh gnome-libs-1.4.1.2.90-44.1.i386.rpm
# rpm -ivh gnome-libs-devel-1.4.1.2.90-44.1.i386.rpm
# rpm -ivh xorg-x11-deprecated-libs-devel-6.8.2-1.EL.13.36.i386.rpm
# rpm -ivh xorg-x11-deprecated-libs-6.8.2-1.EL.13.36.i386.rpm

1.4 安装所需软件补丁包(基于RedHat Enterprise Linux 5)
a)解压准备好的补丁压缩包
# cd /data/install
# unzip oracle9i_rhel_sp.zip
# cd /data/install/oracle9i_rhel_sp/

b)打p3006854_9204_LINUX.zip
# unzip p3006854_9204_LINUX.zip
# chmod +x 3006854/rhel3_pre_install.sh
# 3006854/rhel3_pre_install.sh

c)安装其它软件补丁包
# rpm -ivh compat-libcwait-2.1-1.i386.rpm
# rpm -ivh compat-db-4.2.52-5.1.i386.rpm
# rpm -ivh libXp-1.0.0-8.i386.rpm
# rpm -ivh libXp-devel-1.0.0-8.i386.rpm
# rpm -ivh openmotif-2.3.0-0.3.el5.i386.rpm
# rpm -ivh openmotif-devel-2.3.0-0.3.el5.i386.rpm
# rpm -ivh giflib-4.1.3-8.i386.rpm
# rpm -ivh glib-1.2.10-26.fc7.i386.rpm
# rpm -ivh libpng10-1.0.18-2.i386.rpm
# rpm -ivh ORBit-0.5.17-22.rhel5.i386.rpm
# rpm -ivh gtk+-1.2.10-57.fc7.i386.rpm
# rpm -ivh imlib-1.9.15-2.fc7.i386.rpm
# rpm -ivh gnome-libs-1.4.2-7.rhel5.i386.rpm

d)创建软链接
# ln -s /usr/lib/libstdc++-libc6.2-2.so.3 /usr/lib/libstdc++-libc6.1-1.so.2

1.5 安装配置Oracle数据库
a)重新登录操作系统
注销当前用户后通过oracle用户登录到图形界面

b)解压Oracle安装文件
$ cd /data/install
$ zcat ship_9204_linux_disk1.cpio.gz | cpio -idmv
$ zcat ship_9204_linux_disk2.cpio.gz | cpio -idmv
$ zcat ship_9204_linux_disk3.cpio.gz | cpio -idmv

c)安装Oracle9i数据库服务器
$ export LANG=en_US.UTF-8  //更改系统语言为English
$ Disk1/runInstaller  //启动安装程序

弹出Oracle安装向导界面,如下图所示。
选择“Next”。

出现如下图所示对话框,保持默认不变,继续下一步“OK”。

弹出“UNIX Group Name”窗口,如下图所示。

设置数据库组名。
在“UNIX Group Name”文本框中填写数据库组名“oinstall”。
在“UNIX Group Name”窗口单击“Next”。
安装程序将弹出“Oracle Universal Installer”对话框,要求以root用户执行/tmp/orainstRoot.sh脚本,如下图所示。

新建一个终端窗口,切换到root用户身份并执行脚本
$ su - root
# /tmp/orainstRoot.sh

屏幕显示类似如下信息即表示执行成功
Creating Oracle Inventory pointer file (/etc/oraInst.loc)
Changing groupname of /data/oracle/oraInventory to oinstall.

脚本执行完毕后,返回到当前图形安装界面
在“Oracle Universal Installer”对话框中单击“Continue”。

安装程序进入“File Locations”窗口,设置“File Locations”,如下图所示。

在“File Locations”窗口单击“Next”

安装程序进入“Available Products”窗口,如下图所示。

在“Select a product to install”下的产品类型选项中选择“Oracle9i Database 9.2.0.4.0”单选框。

在“Available Products”窗口单击“Next”。安装程序进入“Installation Types”窗口,如下图所示。

选择“Enterprise Edition”企业版安装类型。
在“Installation Types”窗口单击“Next”。

安装程序进入“Database Configuration”窗口,如下图所示。

在“Select a database suited to your needs.”下的数据库配置方式选项中选择“Software Only”单选框,只安装软件,实例创建到后面有描述。
在“Database Configuration”窗口单击“Next”。

安装程序进入“Summary”窗口,如下图所示。

确认安装选项后单击“Install”。

安装程序进入“Install”窗口,如下图所示。

弹出“Setup Privileges”提示框,

要求执行root.sh脚本,如下图所示。

在等待安装的过程中,系统会弹出“Setup Privileges”提示框,要求以root用户执行/data/oracle/product/ 9.2.0.4/root.sh脚本。请根据以下步骤继续安装。

新建一个终端窗口,切换到root用户身份并执行脚本
$ su - root
# /data/oracle/product/ 9.2.0.4/root.sh
脚本执行过程中,对系统提示需配置的配置项,请保持默认配置,直接按“Enter”键即可。
如出现“Now product-specific root actions will be performed.”字样表示执行成功。
脚本执行完毕后,返回到当前图形安装界面。

在“Setup Privileges”提示框单击“OK”。

请等待安装至100%。

安装至100%后安装程序进入“End of Installation”窗口,单击“Exit”。

d)解决安装Configuration Tools中的错误
解决Agent Configuration Assistant启动失败的问题
$cd /data/oracle/install/oracle9i_rhel_sp/
$ unzip p3238244_9204_LINUX.zip
$ cp 3238244/files/lib/stubs/* $ORACLE_HOME/lib/stubs/
$ cd $ORACLE_HOME/network/lib/
$ make -f ins_oemagent.mk install

解决Oracle Net Configuration Assistant, Oracle Database Configuration Assistant启动失败的问题
$ rm $ORACLE_HOME/JRE
$ ln -s $ORACLE_BASE/jre/1.3.1/ $ORACLE_HOME/JRE
$ ln -s $ORACLE_HOME/JRE/bin/java $ORACLE_HOME/JRE/bin/jre
$ ln -s $ORACLE_HOME/JRE/bin/i386/native_threads/java $ORACLE_HOME/JRE/bin/i386/native_threads/jre

解决Net Manager启动失败的问题
$cd $ORACLE_HOME/bin/
$vi netmgr

进行下面的修改
# Run Net Manager
$JRE -classpath $CLASSPATH oracle.net.mgr.container.NetApplication oracle.net.mgr.container.NetApplication
修改为:
# Run Net Manager
$JRE -noverify -classpath $CLASSPATH oracle.net.mgr.container.NetApplication oracle.net.mgr.container.NetApplication

e)执行dbca配置并创建数据库
在控制台执行命令dbca,显示安装准备界面如下图所示。
$ dbca

安装准备完毕后,显示安装欢迎窗口如下图所示。

单击“Next”,显示操作类型选择窗口如下图所示。

选择“Create a database”后,单击“Next”,显示数据库模式选择窗口如下图所示。

选择“New Database”后,单击“Next”,显示数据库信息设置窗口如下图所示。

设置“Global Database Name”和“SID”为“SFENET”,单击“Next”,显示“Database Features”窗口如下图所示。
Global Database Name:全局数据库名称。
SID:Oracle数据库实例名。

将“Database Features”页签中所选中的内容全部取消。
在取消各项内容时,弹出提示窗口示例如下图所示。

单击“Yes”,显示下图所示窗口。

单击“Standard database features...”,显示窗口如下图所示。

将“Standard database features”页签中所选中的内容全部取消。

在取消各项内容时,弹出提示窗口示例如下图所示。

单击“Yes”,显示下图所示窗口。

单击“OK”,再单击“Next”,显示下图所示窗口。

选择“Dedicated Server Mode”,单击“Next”,显示参数设置窗口如下图所示。

在“Memory”页签中设置“Shared Pool”为“400”,“Buffer Cache”为“1000”,“Java Pool”为“100”,“Large Pool”为“40”,“PGA”为“24”后,选择“Character Sets”页签如下图所示。

根据实际应用不同,考虑到中文支持良好的情况,选择“ZHS16GBK”为佳,若是多语言国际性应用系统则应选择“UTF8”。
在“Character Sets”页签中设置数据库字符集为“UTF8”,选择“DB Sizing”页签如下图所示。

保持“Block Size”和“Sort Area Size”参数为默认即可。然后选择“File Locations”页签如下图所示。

保持此页签所有选项为默认即可,然后选择“Archive”页签,设置以下参数,如下图所示。

在海量数据下做数据恢复的时候,开启了该归档模式会导致恢复时磁盘空间不足,从而导致数据恢复失败。
于是这里选择非归档模式,即不要选择“Archive Log Mode”复选框。

然后点击“Next”按钮,进入“Database Storage”窗口,如下图所示。

选择“Controlfile”,显示数据库控制文件信息如下图所示。

单击“Options”页签,如下图所示。

修改“Maximum no. of datafiles”参数为“500”,修改“Maximum no. of redo log files”参数为“40”,修改“Maximum no. of  log members”参数为“3”。

在“Storage”目录树中选择“Tablespaces”中的“INDX”目录,如下图所示。
“INDX”目录“General”页签

按照所示修改Tablespaces目录中INDX的文件名,路径和容量。
Storage-Tablespaces-INDX            File Name                                                  File Directory Size
indx01.dbf                                  {ORACLE_BASE}/oradata/{DB_NAME}/    100MB

Tablespaces分支文件属性的设置方法如下:
双击File Name、File Directory或Size的值域框,弹出“Edit Datafile”对话框。
进入“General”页签,在“Name”文本框中输入“File Directory/File name”,在File Size文本框中输入文件大小。
进入“Storage”页签,去掉“Automatically extend datafile when full(AUTOEXTEND)”复选框。
后面的Tablespaces分支文件都要按照上述方法进行操作。

按照所示修改Tablespaces目录中SYSTEM的文件名,路径和容量。
Storage-Tablespaces-SYSTEM     File Name                                                     File Directory Size
system01.dbf                             {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB

按照所示修改Tablespaces目录中TEMP的文件名,路径和容量。
Storage-Tablespaces-TEMP         File Name                                                     File Directory Size
temp01.dbf                                {ORACLE_BASE}/oradata/{DB_NAME}/      2000MB
temp02.dbf                                {ORACLE_BASE}/oradata/{DB_NAME}/      2000MB

按照所示修改Tablespaces目录中TOOLS的文件名,路径和容量。
Storage-Tablespaces-TOOLS       File Name                                                      File Directory Size
tools01.dbf                                {ORACLE_BASE}/oradata/{DB_NAME}/       100MB

按照所示修改Tablespaces目录中UNDOTBS1的文件名,路径和容量。
Storage-Tablespaces- UNDOTBS1   File Name                                                      File Directory Size
undotbs01.dbf                               {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB
undotbs02.dbf                               {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB
undotbs03.dbf                               {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB
undotbs04.dbf                               {ORACLE_BASE}/oradata/{DB_NAME}/       2000MB

按照所示修改Tablespaces目录中USERS的文件名,路径和容量。
Storage-Tablespaces- USERS          File Name                                                     File Directory Size
users01.dbf                                   {ORACLE_BASE}/oradata/{DB_NAME}/       40MB

在“Storage”目录树中选择“Redo Log Groups”中的“1”目录,按照所示修改大小。
Storage-Redo Log Groups- 1           File Name                                                      File Directory Size
redo01.log                                    {ORACLE_BASE}/oradata/{DB_NAME}/        1024MB

在“Storage”目录树中选择“Redo Log Groups”中的“2”目录,按照所示修改大小。
Storage-Redo Log Groups- 2           File Name                                                      File Directory Size
redo02.log                                    {ORACLE_BASE}/oradata/{DB_NAME}/        1024MB

在“Storage”目录树中选择“Redo Log Groups”中的“3”目录,按照所示修改大小。
Storage-Redo Log Groups-3          File Name                                                       File Directory Size
redo03.log                                   {ORACLE_BASE}/oradata/{DB_NAME}/        1024MB

单击“Next”,显示“Creation Options”窗口如下图所示。

单击“Finish”,显示“Summary”窗口如下图所示。

单击“OK”,显示数据配置脚本生成成功如下图所示。

单击“OK”,显示数据服务创建进度如下图所示。

在创建数据的过程中,会出现如下提示,单击“ignore”即可。

成功创建数据库实例后,设置sys和system用户的密码,如下图所示。

请牢记sys用户密码、system用户密码。

单击“Exit”,退出安装。

f)执行netca配置数据库监听服务
在控制台执行命令netca,显示监听配置界面如下图所示。
$ netca

单击“Next”,显示操作类型选择窗口如下图所示。

选择“Add”后,单击“Next”,显示监听名称配置窗口如下图所示。

单击“Next”,显示监听协议配置窗口如下图所示。

单击“Next”,显示监听端口配置窗口如下图所示。

单击“Next”,显示监听配置结束画面如下图所示。
选择“No”,单击“Next”,然后单击“Finished”退出。
在终端中出现“Listener Started successfully.”字样表示监听成功配置并启动。

g)安装Oracle9i数据库客户端
$ export LANG=en_US.UTF-8  //更改系统语言为English
$ Disk1/runInstaller  //启动安装程序
弹出Oracle安装向导界面,如下图所示。

选择“Next”。

安装程序进入“File Locations”窗口,设置“File Locations”,如下图所示。

在“File Locations”窗口单击“Next”
安装程序进入“Available Products”窗口,如下图所示。

在“Select a product to install”下的产品类型选项中选择“Oracle9i Client 9.2.0.4.0”单选框。
在“Available Products”窗口单击“Next”。

安装程序进入“Installation Types”窗口,如下图所示。

选择“Administrator”管理员安装类型。
在“Installation Types”窗口单击“Next”。

安装程序进入“Oracle Universal Installer”窗口,如下图所示。
确认安装选项后单击“Install”。

安装程序进入“Install”窗口,如下图所示

安装至100%后安装程序进入“End of Installation”窗口,如下图所示。

在“End of Installation”窗口单击“Exit”。

1.6 编写配置Oracle启动脚本
a)编辑 /etc/oratab文件

编辑 /etc/oratab文件,配置以下常用选项:
#*:/data/oracle/product/9.2.0.4:N  //注释掉该选项;
SFENET:/data/oracle/product/9.2.0.4:Y  //修改该选项最后的“N”为“Y”;

b)创建软链接
# ln -s /data/oracle/product/9.2.0.4/dbs/spfileSFENET.ora /data/oracle/product/9.2.0.4/dbs/initSFENET.ora

c)修改dbshut脚本

编辑 /data/oracle/product/9.2.0.4/bin/dbshut文件,修改以下内容:

修改第80行与第85行的 shutdown 为 shutdown immediate

d)编写自定义脚本
创建用于启动、关闭与重启Oracle服务的自定义脚本并命名为oracle9i,内容如下:

================================================================
# !/bin/sh
# chkconfig: 2345 80 03
# description: oracle dabase deamons
# filename:oracle9i

ORACLE_HOME=/data/oracle/product/9.2.0.4
ORACLE_OWNER=oracle

case "$1" in
'start')

ORACLE_PROCESS=`ps -e |grep oracle |wc -l`

if [ $ORACLE_PROCESS -ne 0 ];
then
echo "ERROR: Oracle already running."
sleep 1
else
echo -n "Starting Oracle: "
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbstart
touch /var/lock/subsys/oracle9i
sleep 2
fi

ORACLE_LISTENER=`ps -e |grep tnslsnr |wc -l`

if [ $ORACLE_LISTENER -ne 0 ];
then
echo "ERROR: Listener already running."
sleep 1
else
echo -n "Starting Listener: "
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
sleep 2
fi

echo
;;

'stop')

ORACLE_LISTENER=`ps -e |grep tnslsnr |wc -l`

if [ $ORACLE_LISTENER -ne 0 ];
then
echo -n "Shutting down Listener: "
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
sleep 2
else
echo "ERROR: Listener already shutdown."
sleep 1
fi

ORACLE_PROCESS=`ps -e |grep oracle |wc -l`

if [ $ORACLE_PROCESS -ne 0 ];
then
echo -n "Shutting down Oracle: "
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle9i
sleep 2
else

echo "ERROR: Oracle already shutdown."
sleep 1
fi

echo
;;

'restart')

echo "Restarting Oracle: "

$0 stop
$0 start

echo
;;

*)

echo "Usage: oracle { start | stop | restart }"
exit 1

esac

exit 0
================================================================

 

e)配置自定义脚本

通过以下命令将自定义脚本添加至系统自动启动与自动关闭管理服务中:
# cp oracle9i /etc/rc.d/init.d/
# chmod 744 /etc/rc.d/init.d/oracle9i
# chown oracle:oinstall /etc/rc.d/init.d/oracle9i
# ln -s /etc/rc.d/init.d/oracle9i /etc/rc.d/rc3.d/S99oracle9i
# ln -s /etc/rc.d/init.d/oracle9i /etc/rc.d/rc5.d/S99oracle9i
# ln -s /etc/rc.d/init.d/oracle9i /etc/rc.d/rc0.d/K01oracle9i
# ln -s /etc/rc.d/init.d/oracle9i /etc/rc.d/rc6.d/K01oracle9i

这样,系统在开启时将会最后自动启动Oracle,而在关闭时会最先自动关闭Oracle。

f)使用自定义脚本
/etc/init.d/oracle9i start  //启动数据库
/etc/init.d/oracle9i stop  //关闭数据库
/etc/init.d/oracle9i restart  //重启数据库

1 Comment

在Redhat Linux上 PPTP VPN Server 的安装配置

1. 安装前的准备工作
1.1 获取PPTP VPN Server安装包
确保已取得PPTP VPN Server的相关安装文件;
基于RedHat Linux AS4 Update7操作系统所需软件包:
-dkms-2.0.6-1.noarch.rpm
-kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
-ppp-2.4.3-5.rhel4.i386.rpm
-pptpd-1.3.3-1.rhel4.i386.rpm

基于RedHat Enterprise Linux 5 Update2操作系统所需软件包:
- pptpd-1.3.3-1.i386.rpm

1.2 检查操作系统版本
执行命令# cat /etc/redhat-release,检查操作系统版本信息。

屏幕显示信息为
Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
表示已是符合要求的RHEL AS 4.0以上版本。

Red Hat Enterprise Linux Server release 5.2 (Tikanga)
表示已是符合要求的RHEL 5.0以上版本。

2 安装PPTP VPN Server
2.1 基于RHEL AS 4.7的安装步骤
1)更新PPP组件
PPTP需要PPP支持,虽然系统本身具备PPP,但它并不支持MPPE,因此需要更新。
# rpm -Uvh ppp-2.4.3-5.rhel4.i386.rpm

2)安装内核MPPE补丁
MPPE是Microsoft Point to Point Encryption,微软点对点加密,因为PPTP VPN协议是由微软主导开发的,因此必须添加该协议补丁。
# rpm -ivh dkms-2.0.6-1.noarch.rpm
# rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

安装完成后用以下命令检查内核MPPE补丁是否安装成功:
# modprobe ppp-compress-18 && echo ‘ok! MPPE was found !’
若结果显示“ok! MPPE was found !”则表示成功。

3)安装PPTPD
# rpm -ivh pptpd-1.3.3-1.rhel4.i386.rpm

4)检查PPP是否支持MPPE
# strings '/usr/sbin/pppd'|grep -i mppe|wc -l
若结果显示“0”则表示不支持,而“30”或更大的数字就表示支持。

2.2 基于RHEL 5.2的安装步骤
因为RHEL 5.2的内核已经集成了MPPE和高版本的PPP,因此可以跳过安装配置MPPE和PPP的过程直接安装PPTP。
1)检查内核MPPE补丁
用以下命令检查内核是否支持MPPE补丁:
# modprobe ppp-compress-18 && echo ‘ok! MPPE was found !’
若结果显示“ok! MPPE was found !”则表示支持。

2)检查PPP是否支持MPPE
# strings '/usr/sbin/pppd'|grep -i mppe|wc -l
若结果显示“0”则表示不支持,而“30”或更大的数字就表示支持。

3)安装PPTPD
# rpm -ivh pptpd-1.3.3-1.i386.rpm

3 配置PPTP VPN Server
3.1 编辑pptpd.conf文件
编辑 /etc/pptpd.conf文件,配置以下常用选项:
-------------------------------------------------
option /etc/ppp/options.pptpd  //PPP组件将使用的配置文件;
stimeout 120  //开始PPTP控制连接的超时时间,以秒计;
debug  //把所有debug信息记入系统日志/var/log/messages;
localip 192.168.1.10 //服务器VPN虚拟接口将分配的IP地址,可设置为与VPN服务器内网地址相同网段的IP,也可以设置为另一网段的IP;
remoteip 192.168.1.11-30  //客户端VPN连接成功后将分配的IP地址段,同样可设置为与VPN服务器内网地址相同网段的IP地址段,也可以设置为另一网段的IP地址段;
#logwtmp //注释掉该功能项,该功能项的作用是“使用wtmp记录客户端的连接与断开信息”,在RHEL 5.2中会与PPP产生版本冲突,必须注释掉;但在RHEL AS 4.7中不会产生冲突,如果需要可以开启;
-------------------------------------------------

3.2 编辑options.pptpd文件
编辑 /etc/ppp/options.pptpd文件,配置以下常用选项:
-------------------------------------------------
name pptpd  //修改“pptpd”为当前VPN服务器的主机名
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8  //DNS服务器地址
ms-dns 8.8.4.4  //DNS服务器地址
proxyarp
debug
dump
lock
nobsdcomp
novj
novjccomp
nologfd
logfile /var/log/pptpd.log //日志存放的路径
multilink
-------------------------------------------------

3.3 编辑chap-secrets文件
编辑 /etc/ppp/chap-secrets文件,配置VPN用户信息:
-------------------------------------------------
# Secrets for authentication using CHAP
# client       server      secret            IP addresses
"vpnuser01"     *     "vpn.user01@sfitc"       *
"vpnuser02"     *     "vpn.user02@sfitc"     192.168.1.12
-------------------------------------------------
vpnuser01  //用户账号,需要用双引号包含
*  //代表自动识别当前服务器主机名,也可以手动配置
vpn.user01@sfitc //用户密码,需要用双引号包含
*  //代表自动分配可用的IP地址,可根据需要指定IP地址

除了上面直接编辑配置文件的方式,还可以使用vpnuser命令来进行配置:
-------------------------------------------------
# vpnuser add vpnuser01 vpn.user01@sfitc //添加一个vpnuser01用户,密码为vpn.user01@sfitc
# vpnuser del vpnuser01  //删除vpnuser01用户
-------------------------------------------------

3.4 防火墙与路由策略配置
1)配置SELinux
对于默认开启了SELinux的主机,需要进行以下设置:

方法1,关闭SELinux认证
编辑 /etc/selinux/config文件,配置以下选项
-------------------------------------------------
SELINUX=disabled
-------------------------------------------------

然后执行以下命令使修改生效
-------------------------------------------------
# setenforce 0
-------------------------------------------------

方法2,配置SELinux认证
执行以下命令使pppd与pptp通过SELinux
-------------------------------------------------
# setsebool pppd_disable_trans 1
# setssebool pptp_diable_trans 1
-------------------------------------------------

2)配置iptables
对与开启了iptables过滤的主机,需要开放VPN服务的端口:
编辑 /etc/sysconfig/iptables文件,加入以下规则
-------------------------------------------------
-A RH-Firewall-1-INPUT -p gre -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT
-------------------------------------------------

然后执行以下命令使修改生效
-------------------------------------------------
# iptables -A RH-Firewall-1-INPUT -p gre -j ACCEPT
# iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT
# iptables -A RH-Firewall-1-INPUT –p tcp –m state –state NEW –m tcp –dport 1723 –j ACCEPT
-------------------------------------------------

3)开启数据包转发
因为VPN客户端在拨号后实际是通过服务器外网网卡进行数据通信的,那么要访问内网网段的地址就必须开启数据包转发,使外网网卡的数据包能够转发到内网网卡上。

编辑 /etc/sysctl.conf文件,修改以下规则
-------------------------------------------------
net.ipv4.ip_forward = 1
-------------------------------------------------

然后执行以下命令使修改生效
-------------------------------------------------
# sysctl -p
-------------------------------------------------

4)配置路由策略
一般来说,VPN服务器的内网IP是可以直接与所在的局域网通信的,但在某些安全性方面要求很高的环境中,各个网段间默认是隔离的,还需要添加路由策略才行;

添加静态路由使IP段192.168.1.0/24 与192.168.5.0/24互通:
-------------------------------------------------
# route add -net 192.168.5.0/24 dev eth1
//路由必须指定在内网网卡上,如上面的eth1
# route add -net 192.168.5.0/24 gw 192.168.1.1 dev eth1
//需要网关进行跨网段连接的情况,如上面的192.168.1.1
-------------------------------------------------

5)配置共享上网
在VPN客户端成功拨号以后,本地网络的默认网关会变为VPN服务器的VPN内网地址,这样会导致客户端只能够连接VPN服务器及其所在的内网,而不能访问互联网;
要解决这个问题需要配置共享上网策略,使VPN客户端在成功拨号以后,既能够访问对端内网地址,又能够访问互联网;

编辑 /etc/rc.local文件,加入以下规则
-------------------------------------------------
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
//规则必须指定外网网卡与内网网段,如上面的eth0和内网网段192.168.1.0/24
-------------------------------------------------

然后执行以下命令时修改生效
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

另外,如果防火墙开启了端口过滤,但是又不想让拨上VPN之后受限与这些策略,想全部放行的话,可以加入以下规则:
# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

6)重启或关闭服务
在修改了VPN服务器的相关配置之后,需要重启VPN服务才能生效
# /etc/init.d/pptpd restart //重启服务不会造成现有VPN连接中断

在需要关闭和开启VPN服务时候,通过以下方式
# /etc/init.d/pptpd stop //关闭服务,会造成现有VPN连接全部断开
# /etc/init.d/pptpd start //开启服务

至此,PPTP VPN Server的相关配置就全部完成了,下面我们讲一下如何使用Windows的VPN客户端进行连接。

3.5 客户端连接配置
1)新建连接
右键单击“网上邻居”→“属性”,打开网络连接配置界面;
“创建一个新的连接”→“连接到我的工作场所网络” →“虚拟专用网络连接” →“公司名(可以随便填写)” →“不拨初始连接” →“IP地址(填入VPN服务器的IP地址)”→ 选中“在我的桌面上添加一个到此方式的快捷方式”,最后单击“完成”,就建立起了一个新的VPN连接。

2)建立连接
双击刚才建立好的连接,填入设置好的用户名和密码,单击“确定”进行连接。
连接成功后,在连接的“详细信息”里可以看到服务器所分配的IP地址等信息,这时就可以跟连接进入的局域网里的其它计算机进行通信了。

3)高级选项
如果能确定对端内网地址的网段与VPN拨号连接后本地所分配的地址的网段相同,那么就可以不通过上面的“配置共享上网”步骤,而使VPN客户端在成功拨号以后,既能够访问对端内网地址,又能够访问互联网;
右键单击刚刚创建的连接,再依次单击“属性”→“网络(选择TCP/IP协议)”→“属性”→“高级”,然后把“在远程网络上使用默认网关”前面的勾去掉,单击“确定”,然后再重新建立连接。

4)网络要求
必须注意的是,通过路由器等设备共享上网的用户,其本地内网的网段不能与对端的内网网段相同,如果相同会导致在成功拨号后,不能正常的进行数据通讯;
造成这个问题的原因在于本地电脑的直连路由策略,它会定义本地网络的同一网段的数据包仅在内网询问,而不需要经过网关;因此要解决这个问题,必须更改本地内网的网段才行。

No Comments