ChinaHost

 找回密码
 用户.注册
查看: 2944|回复: 1

[服务器经验交流] OpenVPN设置详解

[复制链接]
发表于 2012-11-7 14:10:34 | 显示全部楼层 |阅读模式
本帖最后由 vickywu 于 2012-12-3 15:08 编辑

初始化和创建证书
1. 将examples复制到oepnvpn的配置文件目录,方便使用。
# cp -r /usr/share/doc/openvpn/examples /etc/openvpn

2. 将vars里的KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG及KEY_EMAIL参数改成自己的值。
# cd /etc/openvpn/examples/easy-rsa/2.0/
# vi ./vars

3.接下来设定服务器端:将vars的参数load到环境中,并将旧的key或设定清除,建立root certificate。
# . ./vars
# ./clean-all
# ./build-ca
注意./vars前面还有个“.”,且中间有个空格。完成后会在keys/下生成ca.crt和ca.key。

4. 建立服务器的证书。
# ./build-key-server server
server是指服务器的名字,完成后生成server.crt、server.csr和server.key。

5. 建立客户端的证书。
# ./build-key client
因为Windows客户端默认不支持密码,故建立的是无密码key。client指客户端的名字,完成后生成client.crt、client.csr和client.key。

6. 建立 Diffie Hellman parameters。
# ./build-dh
会生成dh{n}.pem。
今后若要添加客户端,则需重复. ./vars及5、6两步。
服务器端的/etc/openvpn目录下需要ca.crt/key、server.crt/key和dh{n}.pem(这几个文件直接放在/etc/openvpn下则后面的配置文件中不需要写路径),ca.crt、client.crt/key需要分发给客户端。

服务器端配置
服务器端还需要server.conf,可以在examples/sample-config-files/server.conf基础上修改
#服务器端ip
local *.*.*.*
#服务器端口
port 1194
#服务器协议,可以用tcp
proto udp
dev tun
#各类证书,如果不在server.conf相同文件夹要写绝对路径
ca /etc/openvpn/2.0/keys/ca.crt
cert /etc/openvpn/2.0/keys/server.crt
key /etc/openvpn/2.0/keys/server.key  # This file should be kept secret
dh /etc/openvpn/2.0/keys/dh1024.pem
#分配给clinet的ip段
server 10.8.0.0 255.255.255.0
#这个开启后同一个客户端可以同时连接多次
#duplicate-cn
#开启这个后各个客户端可以互相访问,类似网上邻居
#client-to-client
#记录客户端分配的ip地址情况,如果OpenVPN服务重启,
#客户端重新连接的时候会按照此文件分配原先的地址。
ifconfig-pool-persist ipp.txt
#每10秒ping一次,120秒内客户端没有动作就断开连接
keepalive 10 120
comp-lzo
;max-clients 100
;user nobody
;group nobody
persist-key
persist-tun
status /etc/openvpn/2.0/keys/openvpn-status.log
verb 4
;mute 20
#参见下面注销证书
crl-verify crl.pem

#客户端的Internet访问使用OpenVPN通道
push "redirect-gateway def1"
#Windows客户端会使用此DNS地址
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
push "route 10.8.0.0 255.255.255.0"


客户端配置
客户端还需要client.conf,可由examples/sample-config-files/client.conf修改而来。windows下后缀为ovpn。

部分解释如下

client
dev tun
#通信协议,需要与服务器端一致
proto udp
#填写服务器端ip和端口
remote *.*.*.* 1194
persist-key
persist-tun
#客户端的证书
ca ca.crt
cert client.crt
key client.key

ns-cert-type server
comp-lzo
verb 4
redirect-gateway def1


注销证书
1. 进入 OpenVPN 安装目录的 easy-rsa 子目录。
cd /etc/openvpn/2.0/

2. 执行 vars 命令
source ./vars

3. 使用 revoke-full 命令,吊销客户端证书。命令格式为:
./revoke-full client1

这条命令执行完成之后, 会在 keys 目录下面, 生成一个 crl.pem 文件,这个文件中包含了吊销证书的名单。
成功注销某个证书之后,可以打开 keys/index.txt 文件,可以看到被注销的证书前面,已标记为R.

4. 确保服务端配置文件打开了 crl-verify 选项
在服务端的配置文件 /etc/openvpn/server.conf 中,加入这样一行:
crl-verify crl.pem

如果 server.conf 文件和 crl.pem 没有在同一目录下面,则 crl.pem 应该写绝对路径,例如:
crl-verify /etc/openvpn/2.0/keys/crl.pem

5. 重启 OpenVPN 服务器。

echo 1 > /proc/sys/net/ipv4/ip_forward

OpenVPN防火墙配置

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables -A INPUT -p all -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i tun+ -j ACCEPT
sudo iptables -A FORWARD -i tun+ -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -s 10.8.0.0/24 -p all -j ACCEPT
sudo iptables -A FORWARD -d 10.8.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

发表于 2013-1-25 11:21:07 | 显示全部楼层
支持你哈...................................
您需要登录后才可以回帖 登录 | 用户.注册

本版积分规则

手机版|小黑屋|

Processed in 0.068158 second(s), 18 queries , Gzip On.

Powered by Comsenz Discuz! platform.

© 2012-2016 中国主机联盟 专业IDC交流平台,提供服务器、VPS云主机、虚拟主机、域名技术交流及优惠信息

快速回复 返回顶部 返回列表