OpenVPN 下载地址: http://openvpn.net
查看系统版本
cat /etc/redhat-release
CentOS release 6.5 (Final)
查看内核和cpu架构
uname -rm
2.6.32-431.el6.x86_64 x86_64
查看ip
ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:5E:DF:74
inet addr:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe5e:df74/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:457 errors:0 dropped:0 overruns:0 frame:0
TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:37261 (36.3 KiB) TX bytes:6438 (6.2 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
#使用单网卡
添加epel源
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
安装openvpn和easy-rsa
yum -y install openvpn easy-rsa
拷贝文件
cp /usr/share/doc/openvpn-2.3.10/sample/sample-config-files/server.conf /etc/openvpn
cp -r /usr/share/easy-rsa/2.0/* /etc/openvpn/
进入openvpn目录
cd /etc/openvpn/
配置PKI
vi vars
编辑下面内容,自定义。
export KEY_COUNTRY="CN"
export KEY_PROVINCE="guangdong"
export KEY_CITY="guangzhou"
export KEY_ORG="xxx"
export KEY_EMAIL="xxx@qq.com"
export KEY_OU="xxx"
初始化vars
source vars
清理原有证书
./clean-all
生成ca证书
./build-ca
#一路按回车键
生成服务器密钥证书
./build-key-server server
#一路按回车键,两次按y
生成DH验证文件
./build-dh
生成客户端密钥证书
./build-key xxx
#一路按回车键,两次按y
生成ta.key文件
openvpn --genkey --secret /etc/openvpn/keys/ta.key
编辑服务配置文件server.conf
vi /etc/openvpn/server.conf
主要修改以下内容:
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
server 10.8.0.0 255.255.255.0
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
log-append /var/log/openvpn/openvpn.log
#我采用的是相对路径
新建日志目录
mkdir -p /var/log/openvpn
启动openvpn服务
service openvpn start
新手一般都会在这一步启动不了,但是重要的是要学会通过查看日志排错。
cat /var/log/openvpn/openvpn.log
添加openvpn到后台启动
chkconfig openvpn on
开启路由转发功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sysctl -p
配置防火墙让openvpn端口通过
iptables -A INPUT -p UDP --dport 1194 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
service iptables save
客户端文件配置
cp /usr/share/doc/openvpn-2.3.10/sample/sample-config-files/client.conf /etc/openvpn/keys/client.ovpn
vi /etc/openvpn/keys/client.ovpn
主要修改以下内容:
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194 #ip为服务器网卡的ip
ca ca.crt
cert xxx.crt
key xxx.key
#以上证书路径均为相对路径
将客户端所需的五个文件下载到本地
sz /etc/openvpn/keys/{ca.crt,xxx.crt,xxx.key,ta.key,client.ovpn}
下载windows客户端并安装
https://openvpn.net/index.php/open-source/downloads.html
将之前下载的五个文件拷贝到C:/Program Files/OpenVPN/config目录下,双击桌面openvpn图标就ok了。
添加新用户
以上仅生成了一个 xxx 用户, 仅一用户可用,可以用相同的方法添加其它用户。
1: cd /etc/openvpn/easy-rsa/2.0
2: source vars
PS:如果不执行这步,执行第三步./build-key 会导致如下问题:
Please edit the vars script to reflect your configuration,
then source it with "source ./vars".
Next, to start with a fresh PKI configuration and to delete any
previous certificates and keys, run "./clean-all".
Finally, you can run this tool (pkitool) to build certificates/keys.
3: ./build-key client2
执行完这步后,会在keys目录下生成client2.crt client2.key两个文件。
同第一个用户一样,将此两个文件与ca.crt,ta.key文件一同拷贝到使用者设备上即可使用。
4: 创建对应的 client2.ovpn
可直接拷贝第一个生成的ovpn或从示例中复制, 替换其中的 client2.crt 与 client2.key 即可。
注销一个用户
例如一位同事离职等情况下需要禁用或删除一个用户。使用revoke-full命令来注销其证书。若服务器上无用户证书需要将该同事证书文件放到对应的keys下。
第1,2步同添加用户
1: cd /etc/openvpn/easy-rsa/2.0
2: source vars
3: revoke-full client1
注销common name为client1的用户
revoke-full client2
注销common name为client2的用户
revoke-full xxxx
注销common name为xxxx的用户
4: 将生成的crl.pem文件放到相应的配置目录config下,然后在配置文件加入如下参数,重启或重新载入openvpn服务器
crl-verify keys/crl.pem