CentOS下安装Openvpn
时间:2014-07-26 00:50 来源:blog.51cto.com 作者:gyyx2 的BLOG
原理:
OpenVpn的技术核心是虚拟网卡,其次是SSL协议实现这里重点对虚拟网卡及其在OpenVpn的中的工作机理进行介绍:
虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统下都有相应的实现,这也是OpenVpn能够跨平台一个很重要的理由。
在OpenVpn中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,通过 SOCKET从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡,则应用软件可以接收到,完成了一个单向传输的过程,反之亦然。
安装环境 :服务端 RHEL 5.3 (IP 192.168.10.191) 或以上
客户端:win7
Linux 系统kerner需要支持 tun设备,需要加载iptables模块。
#modinfo tun
OpenVPN如果需要启用 SSL 连接,则需要先安装 OpenSSL。
#rpm -qa | grep ssl
如果没有
#yum install openssl-devel
本次安装用的2.2.2,可在官网上下载
通过通过SecureCRT或者XShell等登录到服务器,上传LZO和OpenVPN,LZO用于数据压缩
安装过程:
1.解压并安装lzo
#tar zxvf lzo.2.06.tar.gz
#cd lzo-2.06
#./configure
#make
#make install
2.解压并安装openvpn
#tar zxvf openvpn-2.2.2.tar.gz
#cd openvpn-2.2.2
#configure && make && make install
3.生产证书key
初始化PKI
#mkdir /etc/openvpn (默认没有此目录)
#cd openvpn-2.2.2
#cp -r easy-rsa/2.0 /etc/openvpn/easy-rsa
#cd /etc/openvpn/easy-rsa
#vi vars
将最下面几行根据需要自己修改,例如:
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="Beijing"
export KEY_ORG="baidu"
export KEY_EMAIL="tech@baidu.cn"
export KEY_EMAIL=tech@baidu.cn
export KEY_CN=baidu
export KEY_NAME=baidu
export KEY_OU=baidu
export PKCS11_MODULE_PATH=baidu
export PKCS11_PIN=1q2w3e4r
创建证书
#../vars
NOTE: Ifyou run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
(只有在第一次生成证书的时候才需要执行)
#./clean-all
#./build-ca (一路回车)
#./build-key-server server (建立 server key)
(一路回车,到提示[y/n],输入y)
#cd /etc/openvpn/easy-rsa/keys
将生成的证书复制到/etc/openvpn
#cp ca.crt dh1024.pem server.crt server.key /etcp/openvpn
创建server.conf
#cd /etc/openvpn
#vim server.conf (默认没有此文件)
local 192.168.10.191
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 11.8.0.0 255.255.255.0
keepalive 10 120
comp-lzo
persist-key
persist-tun
log openvpn.log
log-append openvpn.log
status openvpn-status.log
verb 3
启动服务端
#openvpn --config /etc/openvpn/server.conf --daemon
#ip a
可以看到增加了一个tun0设备,且IP是11.8.0.1, 说明启动成功
4.生成客户端key
#cd /etc/openvpn/easy-rsa
#./build-key client1 (以后类似生成 ./build-key client2 ...)
(一路回车,到提示[y/n],输入y)
将生产的客户端key文件 ca.crt client1.crt client1.key拷贝到win7上,
5.win7配置
将ca.crt client1.crt client1.key拷贝到 openvpn的安装目录下的config目录里面
,并创建client.ovpn(默认没有)文件
编辑 client.ovpn ,内容如下
client
dev tun
proto udp
remote 192.168.10.191 1194
resolv-retry infinite
nobind
user nobody
group nodody
persist-key
persis-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3
keepalive 10 120
win7使用客户端连接,拨号成功显示自动获取的IP,ping 11.8.0.1通即成功
补充linux作为客户端:
linux客户端也要安装lzo和openven(见安装过程1和安装过程2)
并创建/etc/openvpn
把 ca.crt client1.crt client1.key 拷贝到/etc/openvpn
还要创建client.conf(默认没有此文件)
编辑 client.conf,内容和win7 的config目录下的client.ovpn一样。
启动客户端
#openvpn --config /etc/openvpn/client.conf --daemon
#ip a
可以看到tun0设备,自动获取了11.8.0段的IP,说明拨号成功,可以ping 11.8.0.1测试。
(责任编辑:IT)
原理: OpenVpn的技术核心是虚拟网卡,其次是SSL协议实现这里重点对虚拟网卡及其在OpenVpn的中的工作机理进行介绍: 虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统下都有相应的实现,这也是OpenVpn能够跨平台一个很重要的理由。 在OpenVpn中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,通过 SOCKET从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡,则应用软件可以接收到,完成了一个单向传输的过程,反之亦然。 安装环境 :服务端 RHEL 5.3 (IP 192.168.10.191) 或以上 客户端:win7 Linux 系统kerner需要支持 tun设备,需要加载iptables模块。 #modinfo tun OpenVPN如果需要启用 SSL 连接,则需要先安装 OpenSSL。 #rpm -qa | grep ssl 如果没有 #yum install openssl-devel 本次安装用的2.2.2,可在官网上下载
通过通过SecureCRT或者XShell等登录到服务器,上传LZO和OpenVPN,LZO用于数据压缩 安装过程: 1.解压并安装lzo #tar zxvf lzo.2.06.tar.gz #cd lzo-2.06 #./configure #make #make install 2.解压并安装openvpn #tar zxvf openvpn-2.2.2.tar.gz #cd openvpn-2.2.2 #configure && make && make install 3.生产证书key 初始化PKI #mkdir /etc/openvpn (默认没有此目录) #cd openvpn-2.2.2 #cp -r easy-rsa/2.0 /etc/openvpn/easy-rsa #cd /etc/openvpn/easy-rsa #vi vars 将最下面几行根据需要自己修改,例如:
export KEY_COUNTRY="CN" export KEY_PROVINCE="BJ" export KEY_CITY="Beijing" export KEY_ORG="baidu" export KEY_EMAIL="tech@baidu.cn" export KEY_EMAIL=tech@baidu.cn export KEY_CN=baidu export KEY_NAME=baidu export KEY_OU=baidu export PKCS11_MODULE_PATH=baidu export PKCS11_PIN=1q2w3e4r
#../vars NOTE: Ifyou run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys (只有在第一次生成证书的时候才需要执行) #./clean-all #./build-ca (一路回车) #./build-key-server server (建立 server key) (一路回车,到提示[y/n],输入y) #cd /etc/openvpn/easy-rsa/keys 将生成的证书复制到/etc/openvpn #cp ca.crt dh1024.pem server.crt server.key /etcp/openvpn 创建server.conf #cd /etc/openvpn #vim server.conf (默认没有此文件) local 192.168.10.191 port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem server 11.8.0.0 255.255.255.0 keepalive 10 120 comp-lzo persist-key persist-tun log openvpn.log log-append openvpn.log status openvpn-status.log verb 3 启动服务端 #openvpn --config /etc/openvpn/server.conf --daemon #ip a 可以看到增加了一个tun0设备,且IP是11.8.0.1, 说明启动成功 4.生成客户端key #cd /etc/openvpn/easy-rsa #./build-key client1 (以后类似生成 ./build-key client2 ...) (一路回车,到提示[y/n],输入y) 将生产的客户端key文件 ca.crt client1.crt client1.key拷贝到win7上, 5.win7配置 将ca.crt client1.crt client1.key拷贝到 openvpn的安装目录下的config目录里面 ,并创建client.ovpn(默认没有)文件 编辑 client.ovpn ,内容如下 client dev tun proto udp remote 192.168.10.191 1194 resolv-retry infinite nobind user nobody group nodody persist-key persis-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 3 keepalive 10 120 win7使用客户端连接,拨号成功显示自动获取的IP,ping 11.8.0.1通即成功
补充linux作为客户端: linux客户端也要安装lzo和openven(见安装过程1和安装过程2) 并创建/etc/openvpn 把 ca.crt client1.crt client1.key 拷贝到/etc/openvpn 还要创建client.conf(默认没有此文件) 编辑 client.conf,内容和win7 的config目录下的client.ovpn一样。 启动客户端 #openvpn --config /etc/openvpn/client.conf --daemon #ip a 可以看到tun0设备,自动获取了11.8.0段的IP,说明拨号成功,可以ping 11.8.0.1测试。 (责任编辑:IT) |