linuxOPENVPN搭建.docx
《linuxOPENVPN搭建.docx》由会员分享,可在线阅读,更多相关《linuxOPENVPN搭建.docx(10页珍藏版)》请在冰豆网上搜索。
linuxOPENVPN搭建
RedhatLinux5下安装配置OpenVPN
摘要:
单用户访问VPNServer端局域网段OS:
RedhatAS5 OpenVPNVersion:
2.0.9. LZO:
Version2.0.3功能需求:
实现公司内部VPN客户端(10.252.255.30)能访问新的70端口VPN,但新的VPN的客户端不能相互访问。
一、所需要软件准备(为了确保安装成功,在安装系统时可以完全安装系统)
1. 到http:
//openVPN.net/上下载openVPN的最新版,至今天是openVPN-2.0.9.tar.gz.
2. 到网上下载lzo 最好是安装lzo,以便实现实时数据传输(好像在安装了lzo后,进行1024位加密时,有异常,需要进行测试)。
3. openssl redhatlinux在安装系统时,一般都安装了该包,如果未安装,请从安装光盘中进行安装。
二、安装软件
(1) lzo软件包的安装注意:
include和lzo的安装目的地址,因为openVPN需要用到。
默认的include安装到/usr/lzo/include/lzo,lib安装到了/usr/local/lib。
1. cplzo-2.03.tar.gz/usr
2. cd/usr
3. tar–zxvflzo-2.03.tar.gz
4. mv lzo-2.03 lzo
5. cd lzo
6. ./configure
7. make
8. makeinstall
(2) openVPN软件的安装,默认的openVPN安装到/usr/openVPN/easy-rsa目录下
9.cd/usr/openVPN
10../configure–with-lzo-headers=/usr/lzo/include/lzo–with-lzo-lib=/usr/local/lib
(如果没有lzo包,使用–disable-lzo,禁止使用lzo数据压缩功能。
更多参数,见./configure–help)
注意:
如果出现如下错误,用后面的方法解决:
configure:
checkingforLZOLibraryandHeaderfiles…
checkinglzo/lzo1x.husability…no
checkinglzo/lzo1x.hpresence…no
checkingforlzo/lzo1x.h…no
checkinglzo1x.husability…yes
checkinglzo1x.hpresence…yes
checkingforlzo1x.h…yes
checkingforlzo1x_1_15_compressin-llzo…no
configure:
error:
LZOheaderswerefoundbutLZOlibrarywasnotfound
解决方法一:
安装lzo-1.08.tar.gz 然后再重新编辑openvon
解决方法二:
(做软件连接,改文件名)
[root@AS47lib]#cd/usr/lzo/lib/
[root@AS47lib]#ln-s/usr/lzo/lib/liblzo2.aliblzo.a
[root@AS47lib]#ln-s/usr/lzo/lib/liblzo2.laliblzo.la
[root@AS47lib]#ls-l
total496
lrwxrwxrwx 1rootroot 22Jun1910:
52liblzo.a->/usr/lzo/lib/liblzo2.a
lrwxrwxrwx 1rootroot 23Jun1910:
52liblzo.la->/usr/lzo/lib/liblzo2.la
-rw-r–r– 1rootroot497946Jun1910:
51liblzo2.a
-rwxr-xr-x 1rootroot 738Jun1910:
51liblzo2.la
12.make
13.makeinstall
三、证书有效期vi/usr/openVPN/easy-rsa/fdefault_days = 3650(默认有效期为10年,根据你的需要修改吧,不修改也行)这一步不修改也可以
四、参数文件修改vi/usr/openVPN/easy-rsa/vars
exportKEY_COUNTRY=CN#国家
exportKEY_PROVINCE=GD #所属省
exportKEY_CITY=SZ #所在城市
exportKEY_ORG="RTXVPN" #所属组织,CA证书也会根据这个生成
exportKEY_EMAIL="luofeipeng@"邮箱,可任意写。
[root@AS47easy-rsa]#sourcevars #使修改的变量生效,注意是.vars
五、openVPN配置
1. 生成证书(服务器证书)
1) cd/usr/openVPN/easy-rsa:
openvpn安装目录
2) ./clean-all:
清除所有openvpn相关信息
3) ./build-ca:
生成以ca证书
Generatinga1024bitRSAprivatekey……….++++++…………………………++++++writingnewprivatekeyto'ca.key'—–Youareabouttobeaskedtoenterinformationthatwillbeincorporatedintoyourcertificaterequest.WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.TherearequiteafewfieldsbutyoucanleavesomeblankForsomefieldstherewillbeadefaultvalue,Ifyouenter'.',thefieldwillbeleftblank.—–
CountryName(2lettercode)[CN]:
:
默认即可
StateorProvinceName(fullname)[GD]:
:
默认即可
LocalityName(eg,city)[GD]:
:
默认即可
OrganizationName(eg,company)[SZ]:
:
默认即可
OrganizationalUnitName(eg,section)[]:
RTXVPN:
组织名
CommonName(eg,yournameoryourserver'shostname)[]:
RTXVPN:
主机名
EmailAddress[]:
4)./ubild-dh:
生成dh1024.pem文件
5) ./build-key-serverRTXVPN:
生成服务器证书文件包含.key.crt.csr文件
Generatinga1024bitRSAprivatekey……………………………..++++++……..++++++writingnewprivatekeyto'server.key'—–Youareabouttobeaskedtoenterinformationthatwillbeincorporatedintoyourcertificaterequest.WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.TherearequiteafewfieldsbutyoucanleavesomeblankForsomefieldstherewillbeadefaultvalue,Ifyouenter'.',thefieldwillbeleftblank.—–
CountryName(2lettercode)[CN]:
StateorProvinceName(fullname)[GD]:
LocalityName(eg,city)[GD]:
OrganizationName(eg,company)[SZ]:
OrganizationalUnitName(eg,section)[]:
RTXVPN
CommonName(eg,yournameoryourserver'shostname)[]:
RTXVPN
EmailAddress[]:
Pleaseenterthefollowing'extra'attributestobesentwithyourcertificaterequest
Achallengepassword[]:
Anoptionalcompanyname[]:
Usingconfigurationfrom/usr/openVPN/easy-rsa/f
Checkthattherequestmatchesthesignature
Signatureok
TheSuGDect'sDistinguishedNameisasfollows
countryName RINTABLE:
'CN'
stateOrProvinceName RINTABLE:
'GD'
localityName RINTABLE:
'GD'
organizationName RINTABLE:
'SZ'
organizationalUnitName:
PRINTABLE:
'RTXVPN'
commonName RINTABLE:
'RTXVPN'
emailAddress :
IA5STRING:
''
CertificateistobecertifieduntilJun 216:
51:
162019GMT(3650days)
Signthecertificate?
[y/n]:
y
1outof1certificaterequestscertified,commit?
[y/n]y
Writeoutdatabasewith1newentries
DataBaseUpdated
2. 客户端证书
在openVPN中,本例的这种配置方法是每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接(如果有两个机器安装相同证书,同时拨服务器,都能拨上,但是只有第一个拨上的才能连通网络)。
所以需要建立许多份证书。
下面建立三份,名称分别为client1,client2,client3。
5) ./build-keyclient1
Generatinga1024bitRSAprivatekey……………………….++++++……………………++++++writingnewprivatekeyto'client1.key'—–Youareabouttobeaskedtoenterinformationthatwillbeincorporatedintoyourcertificaterequest.WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.TherearequiteafewfieldsbutyoucanleavesomeblankForsomefieldstherewillbeadefaultvalue,Ifyouenter'.',thefieldwillbeleftblank.—–
CountryName(2lettercode)[CN]:
StateorProvinceName(fullname)[GD]:
LocalityName(eg,city)[GD]:
OrganizationName(eg,company)[SZ:
OrganizationalUnitName(eg,section)[]:
RTXVPN
CommonName(eg,yournameoryourserver'shostname)[]:
client1#重要:
每个不同的client生成的证书,名字必须不同.
EmailAddress[]:
Pleaseenterthefollowing'extra'attributestobesentwithyourcertificaterequest
Achallengepassword[]:
Anoptionalcompanyname[]:
Usingconfigurationfrom/usr/openVPN/easy-rsa/f
Checkthattherequestmatchesthesignature
Signatureok
TheSuGDect'sDistinguishedNameisasfollows
countryName RINTABLE:
'CN'
stateOrProvinceName RINTABLE:
'GD'
localityName RINTABLE:
'GD'
organizationName RINTABLE:
'SZ'
organizationalUnitName:
PRINTABLE:
'RTXVPN'
commonName RINTABLE:
'client1'
emailAddress :
IA5STRING:
''
CertificateistobecertifieduntilJun 216:
51:
472019GMT(3650days)Signthecertificate?
[y/n]:
y
1outof1certificaterequestscertified,commit?
[y/n]y
Writeoutdatabasewith1newentries
DataBaseUpdated
6) 依次类推生成其他客户端证书/key:
7) ./build-keyclient2
8) ./build-keyclient3
注:
服务器上有./build-keying执行文件。
这是一个批量生成客户端的文件
注意在进入CommonName(eg,yournameoryourserver'shostname)[]:
的输入时,每个证书输入的名字必须不同.
9)./revoke-fullno_user (no_user是一个不存在的用户名,目的是建立吊销文件crl.pem,不然服务启动后,有用户拔入时,VPN服务将自动停止,原因是无吊销文件)
3. 生成的所有证书在/usr/openVPN/easy-rsa/keys下。
其中服务器需要的是ca.crt、server.crt、server.key、dh1024.pem共4个文件,每个客户端需要的是ca.crt、client1.crt、client1.key共3个。
4. 配置服务器端文件
port70
protoudp
devtap
server10.191.0.0255.255.0.0:
客户端获取IP的网段
push"route10.252.255.0255.255.255.0":
路由客户端会自动添加此路由
push"route10.190.0.0255.255.0.0"
#push"dhcp-optionDNS10.191.0.1"
ifconfig-pool-persist/usr/local/etc/ipp.txt:
记录客户端IP信息的文档
client-config-dir/usr/local/etc/ccd
ca/usr/openvpn/easy-rsa/keys/ca.crt
cert/usr/openvpn/easy-rsa/keys/RTXVPN.crt
key/usr/openvpn/easy-rsa/keys/RTXVPN.key
dh/usr/openvpn/easy-rsa/keys/dh1024.pem
keepalive10120
#client-to-client如果此处开启,刚VPN的客户端能够实现相互访问,公司禁止此功能。
comp-lzo
#usernobody
#groupnobody
max-clients5000
status/usr/openvpn/log/openvpn-status.log
log/usr/openvpn/log/openvpn.log
writepid/usr/openvpn/log/server.pid
verb3
j) 改成verb5可以多查看一些调试信息可改可不改
k) status /usr/openVPN/logs/openVPN-status.log(VPN状态检查文件,可以根据此文件来统计登录信息,需要自己写程序来进行统计)
l) log /usr/openVPN/logs/openVPN.log (启用日志功能)
m) log-append /usr/openVPN/logs/openVPN.log (启用日志追加功能)
n) crl-verify/usr/openVPN/easy-rsa/keys/crl.pem (必须启用证书吊销功能,保证安全)
5. 启动openVPN服务(在这次搭建过程中,把iptables都清空了,什么规则也没做。
)
1) 关闭防火墙
Iptables–F清空防火墙策略
2) echo“1”>/proc/sys/net/ipv4/ip_forward (启用路由功能)
3) /usr/local/sbin/openVPN-config/usr/local/etc/server.conf (启动openVPN服务)
4) 为了实现开机启动,在/etc/rc.local后面添加
echo“1”>/proc/sys/net/ipv4/ip_forward
/usr/local/sbin/openVPN–config/usr/local/etc/openVPN/server.conf
5)路由
一、PN的路由,
DestinationGatewayGenmaskFlagsMetricRefUseIface
192.168.126.0*255.255.255.0U000eth0
10.191.0.0*255.255.0.0U000tap0
10.190.0.0192.168.126.1255.255.0.0UG000eth0
10.252.0.0192.168.126.1255.255.0.0UG000eth0
169.254.0.0*255.255.0.0U000eth0
default192.168.126.10.0.0.0UG000eth0
二、端10.252.255.30路由
三、器物理机上的路由:
四、端获取IP后的路由:
是自动从服务器上分配下来的路由。
6. 安装客户端(Windows必须启用DHCPClient服务,才能获得IP地址)
1) 从http:
//openVPN.se/上下载与openVPN服务器版本一致的Windows客户端“OpenVPNGUIForWindows”例如,服务器装的 是OpenVPN2.09,那么下载的OpenVPNGUIfowwindows应该是:
2) 将服务器上/usr/openVPN/easy-rsa/keys下面的ca.crt、client1.crt、client1.key复制到C盘下建立的一个keys文件夹(不同的客户端用不同的证书,但必须有ca.crt和再加上用户的两个文件,如client2.crt和client2.key)
3) 将/usr/openVPN/sample-config-files/client.conf 复制到客户端,改名为C:
\ProgramFiles\OpenVPN\config\client.oVPN
4) 编辑client.oVPN
client
devtap
protoudp
port70
remote219.133.36.173
resolv-retryinfinite
comp-lzo
nobind
persist-key
cac:
\\keys\\ca.crt
certc:
\\keys\\lfp.crt
keyc:
\\keys\\lfp.key
verb5
mute20
a) prototcp改成udp
b) remote219.133.36.173(VPN服务器的Internet网口IP)
c) ca那3行改为
caca.crt
certclient1.crt
keyclient1.key
7. 连接:
在右下角的openVPN图标上右击,选择“Connect”。
正常情况下应该