本文介绍使用 OpenVPNCentOSUbuntu
上搭建基本的VPN服务的方法.

一、操作系统的作用:

原文发表于:2010-09-16

生成所需密钥和证书

OpenVPN 使用 Easy-RSA 来管理PKI所需要的密钥和证书. Easy-RSA
现在有2和3两个主要版本, 使用方式略有不同. 下面分别介绍用法.
可以根据自己使用的版本选择一种来操作.

  1.是现代计算机系统中最基本和最重要的系统软件
  2.承上启下的作用
  3.向下对硬件操作进行封装
  4.向上对用户和应用程序提供方便访问硬件的接口

转载至cu于:2012-07-21

Easy-RSA 2

二、不同领域的操作系统:

一.原理简介

PXE(preboot execute
environment)工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载镜像,并由此支持来自网络的操作系统的启动。启动过程中,终端由DHCP服务器分配IP地址,再用TFTP(trivial file transfer protocol)等协议下载存在于服务器(NFS,FTP,HTTP, SAMBA等)的操作系统内核和文件系统等到本机内存中并执行,由此完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

RIS(远程安装服务,Remote Installation Services) 是windows server的可选服务,利用RIS可以让管理员很方便地为客户端部署操作系统。

安装

在Ubuntu 16.04上使用 apt 安装的是Easy-RSA 2:

# apt-get install -y easy-rsa

安装完成后, 可以在 /usr/share/easy-rsa/
目录下找到生成密钥对和证书的脚本.
这些脚本会将生成的密钥和证书放在当前目录, 为了安全, 我们将这些脚本复制到
/root 目录下:

# cp -r /usr/share/easy-rsa /root

  1.桌面操作系统:windows、mac
  2.服务器操作系统:linux、unix、windows server
  3.嵌入式操作系统:linux、windows ce
  4.移动操作系统:ios、android

二.环境说明

server
os:

CentOS 5.4 i386

server
soft:

dhcp, tftp, samba, ris-linux

可以使用yum安装:

yum –y install dhcp*
yum –y install tftp*
yum –y install samba*

server
ip:

eth1: 192.168.0.1

client:

HP 360G5

windows 2003 sp2 cn enterprise

生成CA密钥和证书

接下来的操作都是在 /root/easy-rsa 目录下进行的.

首先, 我们需要生成CA根密钥和证书, 用来给VPN
Server和Client的证书进行签名.

  1. 修改 vars 文件
    vars 文件里定义了后续生成密钥和证书所需要的环境变量.
    在文件里找到定义 KEY_COUNTRY, KEY_PROVINCE, KEY_CITY,
    KEY_ORG, 和 KEY_EMAIL 变量的部分,
    根据自己的实际情况修改为需要的值. 这几个值都不能留空. 如下

     export KEY_COUNTRY="CN"
     export KEY_PROVINCE="ZJ"
     export KEY_CITY="HZ"
     export KEY_ORG=" MyCompany"
     export KEY_EMAIL="support@mycompany.com"
    

    其它变量的意义可以参考文件中的注释, 一般不需要修改.
    修改保存后, 执行以下命令来使这些变量生效供后续操作使用:

     # source ./vars
    
  2. 生成密钥和证书
    接下来执行以下脚本来生成CA的密钥和证书

     # ./build-ca
    

    脚本会提示确认证书和密钥所需的字段, 默认值是在 vars 文件里指定的.
    脚本执行完后, 会在 keys 目录下生成CA的密钥 ca.key 和证书
    ca.crt .

三、linux的应用领域:
 
  1.服务器
  2.嵌入式
  3.桌面

三.安装配置过程简介

1.
配置DHCP

more /etc/dhcpd.conf

ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;

subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers                  192.168.0.1;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      192.168.0.1;
        option time-offset              -18000; # Eastern Standard Time
        range dynamic-bootp 192.168.0.10 192.168.1.254;
        default-lease-time 21600;
        max-lease-time 43200;

# Group the PXE bootable hosts
# PXE-server configuration direction
        next-server 192.168.0.1;    #指向nfs服务器
        filename "/pxelinux.0";     #/tftp根目录下的启动引导文件
}

重启dhcp服务:

/etc/init.d/dhcpd restart 

2.
配置TFTP

more /etc/xinetd.d/tftp

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.

service tftp
{
        socket_type            = dgram
        protocol               = udp
        wait                   = yes
        user                   = root
        server                 = /usr/sbin/in.tftpd

        #-s指定tftp根目录, -m指定一个规则文件, -vv输出tftp的log到/var/log/message 
        server_args            = -u nobody -s /tftpboot -m /tftpboot/rules -vv

        #默认yes,关闭
        disable                = no        
        per_source             = 11
        cps                    = 100 2
        flags                  = IPv4
}

重启tftp服务:

/etc/init.d/xinetd.restart

查看tftp服务是否启动:

chkconfig –list | grep tftp 

3.
建立TFTP的rules文件

Linux下区分大小写,但windows不区分,为免混乱,将所有查找文件内容统一改成小写。

more  /tftpboot/rules

ri ^[a-z]: # Remove "drive letters"
rg \\ / # Convert backslashes to slashes
rg \# @ # Convert hash marks to @ signs
rg /../ /..no../ # Convert /../ to /..no../
rg A a
rg B b
rg C c
rg D d
rg E e
rg F f
rg G g
rg H h
rg I i
rg J j
rg K k
rg L l
rg M m
rg N n
rg O o
rg P p
rg Q q
rg R r
rg S s
rg T t
rg U u
rg V v
rg W w
rg X x
rg Y y
rg Z z
r ^/(.*) \1 

4.
配置SAMBA

windows的ris安装是通过windows共享文件的方式进行文件传输,在linux下可以通过samba实现与windows进行文件共享,进而实现ris安装windows。

编辑samba配置文件:/etc/samba/smb.conf

#全局配置
[global]
       null passwords = true
       workgroup = WORKGROUP
       server string = Samba Server Version %v
       security = share
       dns proxy = no
       load printers = no
       disable spoolss = yes
       debug level = 2
       log file = /var/log/samba/%m.log
       max log size = 0

#共享配置
[wininstall]
comment = Windows 2003 Install
        path = /tftpboot
        browsable = true
        read only = no
        writeable = yes
        guest ok = yes

重启samba服务:

/etc/init.d/smb restart 

5.
配置启动需要的文件

上传windows2003的镜像或者文件到服务器。这里使用上传镜像然后挂载。

mount /root/win2003cn.iso /mnt –o loop
mkdir /tftpboot/win2k3
cd /mnt
cp –a * /tftpboot/win2k3

 

下面需要解压一些iso中的文件,可以使用cabextract。

下载页:

可以根据版本下载。

wget http://www.cabextract.org.uk/cabextract-1.3-1.i386.rpm
rpm –ivh cabextract-1.3-1.i386.rpm

 

配置windows ris 启动文件:

cd /tftpboot
cabextract win2k3/i386/startrom.n1_
#解压
sed -i -e 's/NTLDR/W2K3L/gi' startrom.n12
#直接替换startrom.n12文件中” NTLDR”为” W2K3L”
#W2K3L: windows 2003 Setup Loader
mv startrom.n12 /tftpboot/w2k3.0
#w2k3.0: windows 2003 pxe loader
cabextract win2k3/i386/setupldr.ex_
sed -i -e 's/winnt\.sif/wi2k3\.sif/gi' setupldr.exe
sed -i -e 's/ntdetect\.com/ntdetect\.2k3/gi' setupldr.exe
mv setupldr.exe /tftpboot/w2k3l
cp win2k3/i386/ntdetect.com /tftpboot/ntdetect.2k3
#ntdetect.2k3: windows 2003 ntdetect.com

 

配置pxe启动镜像:

cp /usr/lib/syslinux/pxelinux.0 /tftpboot
# pxelinux.0依赖于syslinux,没有安装使用yum:yum –y install syslinux*
# pxelinux.0是PXE启动引导文件

 

配置pxe启动加载文件:

pxelinux.0启动中,读取同目录先pxelinux.cfg文件夹下的配置文件以确定它应该怎么加载启动文件。

mkdir /tftpboot/pxelinux.cfg

vim /tftpboot/pxelinux.cfg/default
     default win2k3
     label win2k3
     kernel w2k3.0       #与ris启动文件匹配

 

建立安装应答文件:

这个文件很强大,提供的参数不是对系统很了解的人并不一定全知道,我们只需要知道对我们有用的参数。当然,没事的时候也可以慢慢研究。J

vim /tftpboot/wi2k3.sif

[data]
AutoPartition = "0"
#关闭自动分区,2003还不能完全自动分区,这点需要手工操作。如果一定要跳过这一步,需要和后面的参数配合,并且2003提供的只有将全盘划成根盘(c:\)
floppyless = "1"
msdosinitiated = "1"
UnattendedInstall = "Yes"
OriSrc = \\192.168.0.1\wininstall\win2k3\i386
#注意samba和win安装文件路径
OriTyp = "4"
LocalSourceOnCD = "1"
DisableAdminAccountOnDomainJoin = "1"

[SetupData]
OsLoadOptions = "/fastdetect"
SetupSourceDevice = "\Device\LanmanRedirector\192.168.0.1\wininstall\win2k3"

[Unattended]
UnattendMode = "FullUnattended"
#使用unattended文件
FileSystem = "LeaveAlone"
NtUpgrade = "No"
OverwriteOemFilesOnUpgrade = "No"
DriverSigningPolicy = "Ignore"
UpdateInstalledDrivers = "Yes"
ConfirmHardware = "No"
ExtendOEMPartition = "0"
TargetPath = "\WINDOWS"
UnattendSwitch = "Yes"
WaitForReboot = "No"
CrashDumpSetting = "0"
OemSkipEula = "Yes"
OEMSkipWelcome = "1"
InstallFilesPath = "\\192.168.0.1\wininstall\win2k3\i386"
LegacyNIC = "1"
OemPreInstall = "Yes"    #加载OEM中的驱动

[UserData]
ProductKey = "M4VQK-HVTD9-42RQX-2DJP2-23KVM"
FullName = "admin"
OrgName = "SDO"
ComputerName = C1ZJ

[GuiUnattended]
AdminPassword = WD#sd7258
EncryptedAdminPassword = "No"
OEMSkipRegional = "1"
TimeZone = "220"
OemSkipWelcome = "1"

[LicenseFilePrintData]
AutoMode=PerServer
AutoUsers=5

[Identification]
JoinWorkgroup = WORKGROUP

#这里和分区有关
[RemoteInstall]
Repartition = "NO"
UseWholeDisk = "No"

[Networking]
InstallDefaultComponents = "Yes"

 

#以下的默认文件中没有,和服务器raid卡驱动有关:

[MassStorageDrivers]
"Windows Driver for Smart Array SAS/SATA Controllers" = OEM

[OEMBootFiles]
cp011324.xml
cpqsetup.exe
generic.dll
hpcisss2.cat
hpcisss2.sys
hpcissx2.inf
install.xml
txtsetup.oem

#以下是系统安装完毕后第一次启动执行的批处理文件
[GuiRunOnce]
%systemdrive%\preinstall\runonce.cmd
  1. 驱动加载相关

因为是服务器的安装,所以需要提前加载一些驱动,自动安装的麻烦就在此。

 

pxe安装需要加载网卡驱动(引导和文件传输是两个阶段,传输文件阶段开始时要先把网卡驱动加载起来的)。

查到服务器使用的Broadcom NetXtreme II网卡,而Broadcom提供在ris下的驱动:

wget http://www.broadcom.com/docs/driver_download/NXII/win_2k3_RIS-5.0.0.zip
mkdir /tftpboot/nicdrive
unzip win_2k3_RIS-5.0.0.zip -d /tftpboot/nicdrive

 

驱动网卡,需要有一个binl server,binl读取所有新的与网络接口卡相关的.inf文件,并在映像中创建.pnf文件。

 binl server下载:

wget http://oss.netfarm.it/guides/ris-linux-0.4.tar.gz
tar –zxvf ris-linux-0.4.tar.gz
cd ris-linux-0.4
./infparser.py /tftpboot/nicdrive/Server/W2K3_W2K8/RIS/
./binlsrv.py -d     #-d 后台运行,不能停止此程序
cp /tftpboot/nicdrive/Server/W2K3_W2K8/RIS/b06nd51x.sys /tftpboot/win2k3/i386

 

这里是Broadcom提供有专门的ris网卡驱动,如果没有,可以将windows需要的网卡驱动(不限于网卡)的.inf文件放在/tftpboot/inf文件夹下,执行:

./infparser.py /tftpboot/inf
./binlsrv.py

 

然后是加载raid卡驱动(其他驱动也适用,关键是能否找到相关文件)。

光盘安装windows在开始时蓝色屏幕上有一个按F6的提示,提示是通过软盘加载磁盘驱动,这类驱动是windows系统中的驱动,可以下载好windows驱动,解压好驱动放在一个指定的目录,再通过应答文件,一般可以加载上这类驱动。这类驱动加载完毕后不必在系统中再安装。加载这类驱动有注意点:文件要有正确的oem数字签名(一般提供驱动的厂商都带数字签名),乱改动这类文件,同时不在配置文件中写明去掉数字签名认证,是不能加载的。

 

下载HP的raid卡驱动(已经查明型号:Smart Array E200i, 一般一个驱动支持多种类型的raid卡):

wget http://h30445.www3.hp.com/pub/softlib2/software1/sc-windows/p1285069816/v55115/cp011324.exe
mkdir /tftpboot/win2k3/i386/$oem$/textmode
unzip cp011324.exe -d /tftpboot/win2k3/i386/$oem$/textmode

 

在自动应答文件wi2k3.sif末尾添加:

[MassStorageDrivers]
"Windows Driver for Smart Array SAS/SATA Controllers" = OEM
#”Windows Driver for Smart Array SAS/SATA Controllers”可以查看textmode文件夹下的txtsetup.oem文件,名字保持一致

[OEMBootFiles]
cp011324.xml
cpqsetup.exe
generic.dll
hpcisss2.cat
hpcisss2.sys
hpcissx2.inf
install.xml
txtsetup.oem
#textmode下的所有文件名字,一般自动安装的驱动文件.inf, .cat, .sys

#新增参数,修改[Unattended]字段
OemPreInstall = "Yes"
  1. 补丁,前期包,其他驱动的加载

完成以上操作就已经可以安装系统了,但是系统安装完成后需要做一些前期操作,像打补丁,打安全包,或者一些驱动(芯片组,网卡,显卡等在上面没有加载到系统中的一些驱动)。

这些优化的问题可以利用批处理文件解决。这些批处理文件最好是在windows下编辑好再上传到服务器,否则会出现格式问题导致文件不能执行。

 

首先需要在$oem$目录下建立cmdlines.txt文件,这个文件会在系统安装过程的注册组件时间段(即还剩13分钟左右时)调用:

vim /tftpboot/win2k3/$oem$/cmdlines.txt

#文件的内容以" [COMMANDS]"为起头;使用引号“”来标记下面需要执行的每条命令。 注意路径问题,install.cmd的路径为cmdlines.txt的同级目录;
#这里还可以添加注册表。
[COMMANDS]
"install.cmd"

以下是此时使用的install.cmd:

@ echo off
title Windows Install Prepackage, Hotfix and Drives
@ color 0a

@echo 安装WINDOWS_2003_SP2补丁, 大约需要20分钟... 2>>%HOMEDRIVE%/errlog.txt
@ cd hotfix 2>>%HOMEDRIVE%/errlog.txt
WindowsServer2003-KB914961-SP2-x86-CHS.exe /quiet /norestart
WindowsUpdateAgent30-x86.exe /quiet /norestart
WindowsServer2003-KB925902-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB930178-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB931784-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB932168-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB935839-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB935840-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB933729-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB943460-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB921503-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB938829-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB941644-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB943485-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB942830-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB942831-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB943055-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB946026-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB941693-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB944338-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB945553-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB948590-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB951748-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB950974-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB952954-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB938464-x86-CHS.exe /quiet /norestart
windowsserver2003-kb953155-x86-chs.exe /quiet /norestart
windowsserver2003-kb954211-x86-chs.exe /quiet /norestart
windowsserver2003-kb956803-x86-chs.exe /quiet /norestart
windowsserver2003-kb956841-x86-chs.exe /quiet /norestart
windowsserver2003-kb957095-x86-chs.exe /quiet /norestart
WindowsServer2003-KB958644-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB957097-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB956802-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB958687-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB958690-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB960225-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB952004-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB956572-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB960803-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB961501-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB968537-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB970238-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB958469-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB971032-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB971657-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB967723-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB953298-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB958869-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB971486-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB975467-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB969947-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB974392-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB972270-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB971468-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB975713-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB977165-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB978251-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB979683-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB980232-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB979559-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB980218-x86-CHS.exe /quiet /norestart

if %errorlevel% EQU 0 (
@ echo 补丁安装成功, 继续安装prepackge... 2>>%HOMEDRIVE%/errlog.txt
@ cd ..
@ goto prepackge 2>>%HOMEDRIVE%/errlog.txt
) else (
@ echo 补丁安装失败, 继续安装prepackge... 2>>%HOMEDRIVE%/errlog.txt
@ cd ..
@ goto prepackge 2>>%HOMEDRIVE%/errlog.txt
)

:prepackge

@ echo 安装Prepackage中... 2>>%HOMEDRIVE%/errlog.txt
@ cd windows_2010628 2>>%HOMEDRIVE%/errlog.txt
install.bat /qn 2>>%HOMEDRIVE%/errlog.txt
if %errorlevel% EQU 0 (
@ echo Prepackage安装成功 2>>%HOMEDRIVE%/errlog.txt
@ cd ..
@ goto end 2>>%HOMEDRIVE%/errlog.txt
) else (
@ echo Prepackage安装失败 2>>%HOMEDRIVE%/errlog.txt
@ cd ..
@ goto end 2>>%HOMEDRIVE%/errlog.txt
)

:end

批处理文件中的hotfix(出重要的补丁时可以下载放到这,但别忘记了修改批处理文件),windows_20100628(安全部门制作的安全包解压所得)文件夹和install.cmd位于同级目录,这里就是在/tftpboot/win2k3/$oem$/下。

其中在组件注册时不能执行的的命令或者程序(包括有交互而不适合执行的程序),可以通过在自动应答文件wi2k3.sif中添加[GuiRunOnce]字段,在第一次登录系统时执行脚本来完成一些短时间能够完成的操作。

在/tftpboot/win2k3/$oem$/下建立文件夹$1,这个文件夹下的所有文件(夹)会在安装过程中复制到兄根目录,即C盘。

mkdir /tftpboot/win2k3/$oem$/$1
cd mkdir /tftpboot/win2k3/$oem$/$1
mkdir preinstall

在windows平台编辑一个批处理文件runonce.cmd,上传到preinstall文件夹下:

@ echo off
title Windows GuiRunOnce Install Drives
@ color 0a

echo starting drive
echo.
@ cd\
@ cd preinstall
@ cd hp
call bp000588.cmd

echo.
echo starting pcanywhere
@ cd\
@ cd preinstall
@ cd pcanywhere_10.5.1cn
start /wait SymantecpcAnywhere.msi 

echo.
shutdown -r -t 0
exit

这里我将HP的所有驱动放到hp文件夹下(因为我也分不清楚哪些需要,哪些不需要,就只有全部上传了,L),pcanywhere安装文件放到pcanywhere_10.5.1cn文件夹下。所有这些文件夹统一放到preinstall文件夹下(有需要还可以增加,修改runonce.cmd即可)

最后在自动应答文件wi2k3.sif中添加:

#注意路径
[GuiRunOnce]
%systemdrive%\preinstall\runonce.cmd 

8.
进阶

上面只是提到32为系统,对于64位系统,我们可以在/tftpboot下建立win2k3_64文件夹,将iso下的文件拷到此文件夹下。

cabextract win2k3_64/i386/startrom.n1_
#解压
sed -i -e 's/NTLDR/W2K3L_64/gi' startrom.n12
#直接替换startrom.n12文件中" NTLDR"为" W2K3L_64"
#W2K3L_64: windows 2003 64bit Setup Loader
mv startrom.n12 /tftpboot/w2k3_64.0
# w2k3_64.0: windows 2003 bit pxe loader
cabextract win2k3_64/i386/setupldr.ex_
sed -i -e 's/winnt\.sif/wi2k3_64\.sif/gi' setupldr.exe
sed -i -e 's/ntdetect\.com/ntdetect\.2k3_64/gi' setupldr.exe
mv setupldr.exe /tftpboot/w2k3l_64
cp win2k3_64/i386/ntdetect.com /tftpboot/ntdetect.2k3_64
# ntdetect.2k3_64: windows 2003 bit ntdetect.com

samba服务器需要建立针对64位系统的共享目录,如[win64install];同时建立自动应答文件/tftpboot/wi2k3_64.sif 。这两者当中的路径问题请一定要注意一一对应。

pxe加载/tftpboot/pxelinux.cfg/default文件,需要有系统选择时,可以修改文件:

vim /tftpboot/pxelinux.cfg/default

default win2k3
timeout 30
label win2k3
kernel w2k3.0
label win2k3_64
kernel w2k3_64.0

其实不管是32位还是64位系统,启动文件都是一样的,这些都可以不用修改,只是客户端从服务器下载文件的路径一定要区分32位和64位。

启动顺序:pxelinux.0—>
default—> pxe loader(w2k3.0,
startrom.n12)—>setup loader(w2k3l, setupldr.exe)
—> ntdetect.com(ntdetect.2k3) and
winnt.sif(wi2k3.sif)

9.
小结

关于驱动加载的问题,如果我们参照一台已经装好windows2003系统的服务器的硬件驱动(重要的是芯片组,网卡,显卡等)可以看出这些驱动主要由.sys, .dll, .inf(驱动信息文件), .cat(驱动签名文件)等文件组成。如果能收集到这些文件放到系统安装文件里,就不用事后打驱动那么麻烦。但这个过程目前我还没有摸透,这点还是有很大的改进空间的。

使用这套系统安装windows2003系统,加上打补丁(大概超过20分钟)的时间,前后在40分钟左右。我看过安全部门制作的安全包,系统正式上线后应该是可以自动打补丁的。如果有可能的话,可以把打补丁这个环节去掉。这样利用这套系统安装一台windows2003系统大概是20分钟,批量安装更能体现效果。

生成VPN Server密钥和证书

有了CA密钥和证书, 就可以生成VPN Server所需要的密钥和证书了.
执行以下脚本:

# ./build-key-server myvpn

脚本需要一个参数来指定证书和密钥的CN, 这里就是 myvpn ,
根据自己的需要来指定对应的值. 脚本在执行时,
同样会提示需要确认和输入的字段值. 脚本执行完成后, 同样会在 keys
目录下生成VPN Server的密钥和证书. 密钥和证书的文件名前缀都是指定的CN,
后缀分别是 crtkey . 在这里就是 myvpn.crtmyvpn.key .

四、文件和目录:

生成Client密钥和证书

Client端同样需要CA签名过的密钥和证书来. 执行以下脚本:

# ./build-key hongling

类似于VPN Server的密钥证书生成脚本, 这个脚本参数同样是Client的CN.
根据提示确认和输入必要参数后, Client所需的密钥 hongling.key 和证书
hongling.crt 也会保存在 keys 目录下.

澳门微尼斯人手机版,对于每个Client, 都需要生成一套密钥和证书.

  1.根目录”/”所有文件都在根目录/ 下面    
  2.用户家目录、用户工作目录
 python@ubuntu:~$ pwd
 /home/python
   
  特点:
对于用户的家目录,该用户拥有绝对的操作权限,比如创建、删除文件    3、
根目录下面的一级子目录介绍
 1)bin:可执行二进制文件的目录
 2)etc:存放配置文件的目录
 3)dev: 存放设备文件的目录
 4)opt: 存放额外安装的软件的目录
 5)/home/python : 用户的家目录

生成Diffie Hellman参数

Diffie Hellman参数用于VPN Server和Client之间进行公钥交换. 执行以下脚本:

# ./build-dh

这个脚本执行完成以后, 可以在 keys 目录下找到生成的文件 dh2048.pem .
文件名中的2048是密钥长度, 可以在 vars 文件中设置, 默认为2048.

五、终端命名格式:

Easy-RSA 3

  1. 终端命令格式 command [-options] [parameter]
    command:命令
    options: 选项
    parameter: 参数
    选项: 修饰要操作的命令  ls -l
    参数: 表示命令要操作的对象   ls /opt
    选项和参数的顺序是随意的 ls /opt -l

安装

在Centos 7.5上, 首先要确认是否安装了 epel 源:

# yum repolist

如果源列表中没有 epel 源, 需要安装:

# yum install -y epel-release

然后就可以安装 easy-RSA 了:

# yum install -y easy-rsa
# yum list installed easy-rsa

可以看到这里安装的是 Easy-RSA 3 . 安装目录在 /usr/share/easy-rsa .
对于不同的具体版本, 这个目录下的内容可能会有不同:

# ls -l /usr/share/easy-rsa/
总用量 4
lrwxrwxrwx 1 root root    5 7月  16 18:21 3 -> 3.0.3
lrwxrwxrwx 1 root root    5 7月  16 18:21 3.0 -> 3.0.3
drwxr-xr-x 4 root root 4096 7月  16 19:41 3.0.3

如以上情况中, 实际的安装目录在 3.0.3 子目录下. 为了安全,
将安装目录复制到 /root 目录下:

# cp -r /usr/share/easy-rsa/3.0.3 /root/easyrsa

后续密钥和证书操作都在 /root/easyrsa 目录下进行.

六、常用命令:

生成CA密钥和证书

在生成密钥和证书前, 需要进行初始化:

# ./easyrsa init-pki

这个操作会在当前目录下创建 pki 子目录,
接下来的操作生成的文件都会保存在这个子目录里. 如果这个 pki
子目录已经存在, 这个操作会将子目录下所有的文件清空. 所以,
如果希望重新生成所有的密钥和证书资源, 也可以使用这个命令.

接下来就可以生成CA的密钥和证书了:

# ./easyrsa build-ca

这个命令会要求输入密钥的密码和证书的CN. 这个密钥在后续给VPN
Server和Client的证书签名里, 会用到. 命令完成后, 会在 pki
目录下生成密钥文件 ca.key 和证书文件 ca.crt . 有了CA的密钥和证书,
就可以生成VPN Server和Client的密钥和证书了.

  1.ls  显示文件列表
  2.clear 清除命令窗口屏幕
  3.cd  切换目录
  4.pwd  显示当前目录
  5.mkdir 创建目录(文件夹)
  6.tocuh 创建文件
  7.rm  删除文件
  8.cp  复制文件
  9.mv  移动文件
  10.tree 以树形结构查看文件列表
  11.chmod 修改文件权限
  12.find 查找文件
  13.grep 查找文本(文件内容)
  14.>,>> 重定向
  15.ln  创建链接文件
  16.|  管道
  17.tar 打包压缩文件
  18.shutdown  关机
  19.reboot 重启
  20.who 显示当前登录的用户
  21.exit 退出用户 
  22.passwd 设置用户密码
  23.sudo 超级用户执行命令
  24.history   历史命令
  25.cat 查看文件内容
  26.more  分屏显示文件的内容

生成VPN Server的密钥和证书

首先, 需要生成Server的密钥和签名请求:

# ./easyrsa gen-req myvpn

命令的输入参数是使用这套密钥和证书的实体名,
这个名字会用来标识生成的文件, 并作为证书默认的CN. 同样,
这个命令会提示输入密钥密码和CN. 其中密钥在后续启动VPN Server时需要验证,
而CN的默认值就是命令的参数. 命令完成后, 会在 pki/reqs
下生成签名请求文件, pki/private 下生成密钥文件.
在这个例子中文件名分别为 myvpn.reqmyvpn.key .

然后对生成的请求进行签名, 生成VPN Server的证书:

# ./easyrsa sign-req server myvpn

这个命令接收两个参数, 第一个是证书类型, 这里是 server ,
第二个是证书使用的实体名, 需要和上一步生成签名请求的实体名一致,
这里同样为 myvpn . 命令会提示要求确认证书信息, 并输入CA的密钥密码.
命令执行完成后, 会在 pki/issued 目录下生成CA签名的证书, 在这个例子里,
文件名是 myvpn.crt .

七、常用命令延伸:

生成VPN Client的密钥和证书

生成Client需要的密钥和证书与生成Server的密钥和证书基本一致.
比如我们希望创建一个为用户 hongling 创建密钥和证书:

# ./easyrsa gen-req hongling
# ./easyrsa sign-req client hongling

唯一的不同是 sign_req 的第一个参数需要指定为 client .
以上两个命令执行完成后, 会生成文件 pki/private/hongling.key ,
pki/reqs/hongling.reqpki/issued/hongling.crt .

1.基于ls 命令的延伸:

生成Diffie-Hellman参数文件

为了在Server和Client之间交换密钥, 需要生成Diffie-Hellman参数文件:

# ./easyrsa gen-dh

命令执行完成后, 会在 pki
目录下生成长度为2048位的Diffie-Hellman参数文件 dh.pem .

 1)格式: ls  [-options] [parameter]
 ls  [选项]…  [文件]…
 
 2)常用选项:
 – l: 详细列出文件列表
 – a: 查看所有文件,包含隐藏文件
 – h: 以人性化的方式显示文件大小

安装和配置VPN Server

2.基于cd 命令的延伸:

发表评论

电子邮件地址不会被公开。 必填项已用*标注