CentOS 6.4下OpenVPN部署教程
一、环境
Server: 192.168.0.133 CentOS6.6 x64 openvpn2.3.6
节点
操作系统
openvpn版本
真实ip
vpn下ip
Server
CentOS6.4
2.3.6
192.168.0.133
10.8.0.1
Client1
CentOS6.4
2.3.6
192.168.0.140
10.8.0.10
Client2
Windows7 Pro x64
2.3.6
192.168.0.70
10.8.0.6

二、Server部署
环境配置
su
cd

iptables -t NAT -F
iptables -F
service iptables save
service iptables restart #启动并清空iptables规则

setenforce 0
vim /etc/sysconfig/selinux
更改为SELINUX=disabled #关闭SELINUX

vim /etc/sysctl.conf
更改为net.ipv4.ip_forward = 1
sysctl -p #开启服务器端路由转发功能

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
#设置nat转发,保证VPN地址池可路由出外网

iptables -A INPUT -p TCP --dport 9050 -j ACCEPT
iptables -A INPUT -p TCP --dport 7505 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#设置openvpn端口通过

ntpdate 210.72.145.44 #与中国国家授时中心服务器时间同步
hwclock -w #写入硬件

yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig
#安装依赖库,输入yes全安装。

安装openvpn
下载最新openvpn包(官网openvpn.net,已和谐,需要翻墙)
tar zxvf openvpn-2.3.6.tar.gz -C ~
cd ~/openvpn-2.3.6
./configure --prefix=/opt/software/openvpn
make && make install
vim /etc/profile
追加:
#########Setting for OpenVPN############
export PATH=/opt/software/openvpn/sbin:$PATH
export LD_LIBRARY=/opt/software/openvpn/lib/openvpn/plugins:$LD_LIBRARY
mkdir -p /etc/openvpn

复制模板到openvpn配置目录:
cp -r sample /etc/openvpn/

cp复制openvpn配置文件到主目录:
cd /etc/openvpn
cp /etc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/

安装easyrsa
cd
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
yum -y install gzip #系统若无gzip,需要安装。
mv master master.zip #若下载到的不是master.zip,则需要重命名。
unzip master.zip
mv easy-rsa-master/ /etc/openvpn/easy-rsa/
cd /etc/openvpn/easy-rsa/easyrsa3/
cp vars.example vars

vim vars #修改证书变量
set_var EASYRSA_REQ_COUNTRY "CN" #国家,根据自己情况更改
set_var EASYRSA_REQ_PROVINCE "Shanxi" #省
set_var EASYRSA_REQ_CITY "Xi'an" #城市
set_var EASYRSA_REQ_ORG "Shanghai Gentai Co" #组织
set_var EASYRSA_REQ_EMAIL "web@netinn.net" #邮件
set_var EASYRSA_REQ_OU "Gentai OpenVPN" #标识

创建服务端证书及key
./easyrsa init-pki #初始化

./easyrsa build-ca #创建根证书, 输入PEM密码两次,再输入通用名。这里以gentai为例。得到ca.crt和ca.key

创建服务器端证书

./easyrsa gen-req server nopass
需要输入通用名,不要跟之前的根证书的一样。这里以sh-gentai为例。得到server.req和server.key

签约服务端证书:
./easyrsa sign server server
需要输入yes,密码为前面输入的。得到server.crt

创建Diffie-Hellman
./easyrsa gen-dh #安全通道,需要几分钟
生成/etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem

创建客户端证书
mkdir -p ~/client
cp -r /etc/openvpn/easy-rsa/ ~/client/
cd ~/client/easy-rsa/easyrsa3/
./easyrsa init-pki #初始化,输入yes继续

创建客户端key及生成证书
./easyrsa gen-req gentai #输入密码 两次,输入gentai
将得到的gentai.req导入并签约证书
cd /etc/openvpn/easy-rsa/easyrsa3/
./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/gentai.req gentai
./easyrsa sign client gentai #签约证书,输入yes,输入密码

确认生成的文件:
服务端:
/etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req
/etc/openvpn/easy-rsa/easyrsa3/pki/reqs/gentai.req
/etc/openvpn/easy-rsa/easyrsa3/pki/private/ca.key
/etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key
/etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/issued/gentai.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem
客户端:
/root/client/easy-rsa/easyrsa3/pki/private/gentai.key
/root/client/easy-rsa/easyrsa3/pki/reqs/gentai.key
拷贝服务器密钥及证书等到openvpn目录
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn
cp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn
cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn
cp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn

拷贝客户端密钥及证书等到client目录
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /root/client
cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/gentai.crt /root/client
cp /root/client/easy-rsa/easyrsa3/pki/private/gentai.key /root/client

为服务端编写配置文件
当安装好openvpn时候,它会提供一个server.conf配置的文件例子 ,前面已移到了/etc/openvpn
#配置文件也可以作为windows服务器配置,在windows上路径注意用\
vim /etc/openvpn/server.conf
local 192.168.1.104 #服务器IP
port 9050 #端口,注意防火墙放过这个端口
proto udp #协议
dev tun #网卡类型:tun创建路由通道,tap创建局域网通道
#tap0创建桥接的局域网通道
ca /etc/openvpn/ca.crt #根证书(root certificate),所有的客户端与服务器共用一个根证书
cert /etc/openvpn/server.crt #服务器证书,每个客户端或服务器都有自己的证书和密钥
key /etc/openvpn/server.key #服务器密钥,需保密
dh /etc/openvpn/dh.pem #Diffie-Hellman码表
server 10.8.0.0 255.255.255.0 #vpn下ip段
ifconfig-pool-persist /etc/openvpn/ipp.txt #定义用户的ip地址池
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
client-to-client #默认关闭,客户端只可以看到服务器,开启后,客户端会彼此可见
keepalive 10 120 #每10s会ping一次,120s没有响应则认为远端掉线
;tls-auth ta.key 0 #HMAC防火墙,抵御DoS攻击和UDP端口溢出。
获取方法:openvpn --genkey --secret ta.key
服务器和客户端都需要一份拷贝,服务器参数0,客户端参数1
comp-lzo #使用压缩,服务器端一旦启用,客户端也要启用
max-clients 100
persist-key
persist-tun
status openvpn-status.log
verb 3 #文件冗余
收集验证文件
cd ~/client
tar zcvf key-gentai.tgz ca.crt gentai.crt gentai.key #得到的key-gentai.tgz 给客户端分发
制作多个key(以qy为例):
cd /root/client/easy-rsa/easyrsa3
./easyrsa gen-req qy #输入密码 两次,输入qy
将得到的qy.req导入并签约证书,qy.key是密钥。
cd /etc/openvpn/easy-rsa/easyrsa3/
./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/qy.req qy
./easyrsa sign client qy #签约证书,输入yes,输入密码
得到qy.crt
用户qy连接server所需文件在:
/root/client/easy-rsa/easyrsa3/pki/private/qy.key
/etc/openvpn/easy-rsa/easyrsa3/pki/issued/qy.crt
/etc/openvpn/ca.crt

收集信息:
cp /root/client/easy-rsa/easyrsa3/pki/private/qy.key ~/client
cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/qy.crt ~/client
cp /etc/openvpn/ca.crt ~/client
cd ~/client
tar zcvf key-qy.tgz ca.crt qy.* #拷到客户端备用

在服务器上启动openvpn服务
source /etc/profile
openvpn --config /etc/openvpn/server.conf &
echo "/opt/software/openvpn/sbin/openvpn --config /etc/openvpn/server.conf & &" >>/etc/rc.local #设为开机启动

三、客户端配置
su
cd
yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig
#安装依赖库
tar zxvf openvpn-2.3.6.tar.gz
cd openvpn-2.3.6
./configure --prefix=/opt/software/openvpn
make && make install
vim /etc/profile #追加以下内容
#########Setting for OpenVPN############
export PATH=/opt/software/openvpn/sbin:$PATH
export LD_LIBRARY=/opt/software/openvpn/lib/openvpn/plugins:$LD_LIBRARY
mkdir -p /etc/openvpn
cp ~/openvpn-2.3.6/sample/sample-config-files/client.conf /etc/openvpn
将服务器的/root/client/key.tgz解压到客户端的/etc/openvpn(ca.crt gentai.crt gentai.key三个文件)
vim /etc/openvpn/client.conf
修改部分:
client
dev tun
proto udp
remote 192.168.0.133 9050
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/gentai.crt
key /etc/openvpn/gentai.key
remote-cert-tls server
comp-lzo
verb 3
启动vpn:
openvpn /etc/openvpn/client.conf
输入密码即可连接

连接成功了:
可以看到客户端多了一张网卡tun0-00,其ip为10.8.0.6

ssh成功:

Windows客户端设置:
下载安装openvpn
把openvpn安装目录内的client.ovpn拷到config目录下
修改client.ovpn如下:
client
dev tun
proto udp
remote netinn.wicp.net 9050
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert gentai.crt
key gentai.key
remote-cert-tls server
comp-lzo
verb 3
把客户端制作成的key放到config文件(ca.crt gentai.crt gentai.key)夹下.
启动openvpn,输入密码,当任务栏openvpn图标变绿色时表示连接成功了。

附:
1.拨号设置:电信猫HG8245C,用超级账户:telecomadmin 密码为:nE7jA%5m ,新建连接时需要把VLAN去掉,否则无法拨号。
安装rp-pppoe,开始拨号,ifup ppp0即可。
2.动态DNS:电信的adsl的ip周期只有35h,需要ddns。这里用的花生壳,开机自启即可。
3.报错分析:
#9115端口占用,可以杀掉占用进程或者换一个端口(如9050)。
#ERIFY ERROR: depth=1, error=certificate is not yet valid: CN=gentai,查看时间设置,客户端时间不能晚于服务器时间。
#客户端获取的ip是相同的:需要单独签约,不能只是复制key

4.参考链接:
http://www.linuxidc.com/Linux/2013-06/86118.htm
http://www.gossamer-threads.com/lists/gentoo/user/207666
http://www.tuicool.com/articles/ba2u2y
http://ju.outofmemory.cn/entry/71676

发表回复

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

Captcha Code