OpenVPN 配置范例及配置文件说明

一、配置文件参考样例

1、Easy-vpn配置范例

1). easy-vpn 证书认证 vpnserver的配置如下:

[[email protected] openvpn]# grep -P -v "^(#|;|$)" server.conf

local 202.102.1.1

port 1194

proto udp

dev tap

ca ca.crt

cert vpnserver.crt

key vpnserver.key  # This file should be kept secret

dh dh1024.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "route 192.168.1.0 255.255.255.0"

keepalive 10 120

comp-lzo

user nobody

group nobody

persist-key

persist-tun

status openvpn-status.log

verb 3

2). easy-vpn 证书认证 vpnclient的配置如下:

[[email protected] openvpn]# grep -P -v "^(;|#|$)" client.conf

client

dev tap

proto udp

remote vpn.example.com 1194     #此FQDN必须对应vpnserver外网网卡的IP

resolv-retry infinite

nobind

user nobody

group nobody

persist-key

persist-tun

ca ca.crt

cert client.crt

key client.key

comp-lzo

verb 3

1). easy-vpn 用户名密码认证 vpnserver的配置如下:

[[email protected] openvpn]# grep -P -v "^(;|#|$)" server.conf

auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env

client-cert-not-required    #本行表示不需要验证客户端证书,如果没有本行客户端必须提供证书

username-as-common-name

local 202.102.1.1

port 1194

proto udp

dev tap

ca ca.crt

cert vpnserver.crt

key vpnserver.key  # This file should be kept secret

dh dh1024.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "route 192.168.1.0 255.255.255.0"

keepalive 10 120

comp-lzo

user nobody

group nobody

persist-key

persist-tun

status openvpn-status.log

verb 3

[[email protected] openvpn]# ll checkpsw.sh psw-file

-rwxr-x--- 1 nobody nobody 1191 9月   1 09:57 checkpsw.sh

-r-------- 1 nobody nobody   37 9月   1 09:59 psw-file

说明:以下两个文件的属主、属组必须是nobody; psw-file文件的权限必须是400

[[email protected] openvpn]# cat checkpsw.sh

#!/bin/sh

########################################################

# checkpsw.sh (C) 2004 Mathias Sundman <[email protected]>

#

# This script will authenticate OpenVPN users against

# a plain text file. The passfile should simply contain

# one row per user with the username first followed by

# one or more space(s) or tab(s) and then the password.

PASSFILE="/etc/openvpn/psw-file"

LOG_FILE="/var/log/openvpn-password.log"

TIME_STAMP=`date "+%Y-%m-%d %T"`

########################################################

if [ ! -r "${PASSFILE}" ]; then

echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}

exit 1

fi

CORRECT_PASSWORD=`awk ‘!/^;/&&!/^#/&&$1=="‘${username}‘"{print $2;exit}‘ ${PASSFILE}`

if [ "${CORRECT_PASSWORD}" = "" ]; then

echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}

exit 1

fi

if [ "${password}" = "${CORRECT_PASSWORD}" ]; then

echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}

exit 0

fi

echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}

exit 1

[[email protected] openvpn]# cat psw-file

robin 123

marry 123

#用户名<tab>密码

2). easy-vpn 用户名密码认证 vpnclient的配置如下:

[[email protected] openvpn]# grep -P -v "^(#|;|$)" client.conf

client

auth-user-pass

dev tap

proto udp

remote vpn.example.com 1194

resolv-retry infinite

nobind

user nobody

group nobody

persist-key

persist-tun

ca ca.crt

comp-lzo

verb 3

2、Site-to-Site VPN配置范例

1). site-to-site vpnserver 的配置文件如下:

[[email protected] openvpn]# grep -P -v "^(;|#|$)" server.conf

local 202.102.1.1

port 1194

proto udp

dev tun

ca ca.crt

cert vpnserver.crt

key vpnserver.key  # This file should be kept secret

dh dh1024.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "route 192.168.1.0 255.255.255.0"

client-config-dir ccd

route 192.168.2.0 255.255.255.0

client-to-client

keepalive 10 120

tls-auth ta.key 0 # This file is secret

cipher BF-CBC        # Blowfish (default)

comp-lzo

user nobody

group nobody

persist-key

persist-tun

status openvpn-status.log

verb 3

[[email protected] openvpn]#openvpn --genkey --secret ta.key

[[email protected] openvpn]#mkdir /etc/openvpn/ccd/

[[email protected] openvpn]#echo "iroute 192.168.2.0 255.255.255.0" > /etc/openvpn/ccd/slave2.example.com

说明:其中/etc/openvpn/ccd/slave2.example.com的文件名必须是vpn client 证书中的common name 。

2). site-to-site vpnclient 的配置文件如下:

[[email protected] openvpn]# grep -P -v "^(;|#|$)" client.conf

client

dev tun

proto udp

remote vpn.example.com 1194     #此FQDN必须对应vpnserver外网网卡的IP

resolv-retry infinite

nobind

user nobody

group nobody

persist-key

persist-tun

ca ca.crt

cert client.crt

key client.key

ns-cert-type server

tls-auth ta.key 1

comp-lzo

verb 3

二、配置文件参数说明

# 号和;号开头的都是注释

local 202.102.1.1       # 设置监听 IP,默认是监听所有 IP

port 2194                 #Openvpn 服务器监听端口

;proto tcp

proto udp               # 设置用 TCP 还是 UDP 协议?

dev tun                  # 设置创建 tun 的路由 IP 通道,还是创建 tap 的以太网通道;

#路由 IP 容易控制,所以推荐使用它;但如果如 IPX 等必须;

#使用第二层才能通过的通讯,则可以用 tap 方式,tap 也就是以太网桥接

server 10.9.0.0 255.255.255.0     # 配置 VPN 使用的网段,OpenVPN 会自动提供基于该网段的 DHCP

# 服务,但不能和任何一方的局域网段重复,保证唯一

# server 端 ip 默认会设为.1 的地址。

push "route 172.18.2.0 255.255.255.0"   # 为客户端创建对应的路由,以令其通达公司网内部服务器

# 但记住,公司网内部服务器也需要有可用路由返回到客户端

ifconfig-pool-persist    /usr/local/etc/ipp.txt     # 维持一个客户端和 virtual IP 的对应表,以方便客户端重新

# 连接可以获得同样的 IP

push "dhcp-option DNS 172.18.2.23"              # 用 OpenVPN 的 DHCP 功能为客户端提供DNS、WINS 等

push "dhcp-option DNS 202.96.128.86"

# 这里是重点,必须指定 SSL/TLS root certificate (ca),

# certificate(cert), and private key (key)

# ca 文件是服务端和客户端都必须使用的,但不需要 ca.key

# 服务端和客户端指定各自的.crt 和.key

# 请注意路径,可以使用以配置文件开始为根的相对路径,

# 也可以使用绝对路径

# 请小心存放.key 密钥文件

ca /usr/local/etc/keys/ca.crt

cert /usr/local/etc/keys/server.crt

key /usr/local/etc/keys/server.key

# 指定 Diffie hellman parameters.

dh /usr/local/etc/keys/dh1024.pem

crl-verify /usr/local/etc/keys/vpncrl.pem       #用于吊销客户证书

#增强安全性

# Generate with:

# openvpn --genkey --secret ta.key

# The server and each client must have

# a copy of this key.

# The second parameter should be 0

# on the server and 1 on the clients.

tls-auth /usr/local/etc/keys/ta.key 0

# 设置服务端检测的间隔和超时时间 每 10 秒 ping 一次,如果 120 秒没有回应则认为对方已经 down

keepalive 10 120

comp-lzo        # 使用 lzo 压缩的通讯,服务端和客户端都必须配置

status /var/log/openvpn-status.log      # 输出短日志,每分钟刷新一次,以显示当前的客户端

#设置日志要记录的级别。

#0 只记录错误信息。

#4 能记录普通的信息。

#5 和 6 在连接出现问题时能帮助调试

#9 是极端的,所有信息都会显示,甚至连包头等信息都显示(像 tcpdump)

verb 4

mute 20         #相同信息的数量,如果连续出现 20 条相同的信息,将不记录到日志中。

# 让 OpenVPN 以 nobody 用户和组来运行(安全)

user nobody

group nobody

# The persist options will try to avoid

# accessing certain resources on restart

# that may no longer be accessible because

# of the privilege downgrade.

# 重启时仍保留一些状态

persist-key

persist-tun

其他参数说明:

# 为特定的客户端指定 IP 或指定路由,该路由通常是客户端后面的

# 内网网段,而不是服务端连接的网段

# ccd 是/etc/openvpn 下的目录,其中建有希望限制的客户端 Common

# Name 为文件名的文件,并通过下面的命令写入固定 IP 地址

# 例如 Common Name 为 client1,则在/etc/openvpn/ccd/client1 写有:

# ifconfig-push 10.9.0.1 10.9.0.2

client-config-dir /usr/local/etc/ccd

# 若客户端希望所有的流量都通过 VPN 传输,则可以使用该语句

# 其会自动改变客户端的网关为 VPN 服务器,推荐关闭

# 一旦设置,请小心服务端的 DHCP 设置问题

;push "redirect-gateway"

# 如果您希望有相同 Common Name 的客户端都可以登陆

# 也可以注释下面的语句,推荐每个客户端都使用不用的 Common Name

# 常用于测试

;duplicate-cn

# 设置最大用户数

#max-clients 3

# 打开管理界面,可以定义监控的 IP 和端口

management localhost 7505

# 缺省日志会记录在系统日志中,但也可以导向到其他地方

# 建议调试的使用先不要设置,调试完成后再定义

;log /var/log/openvpn/openvpn.log

;log-append /var/log/openvpn/openvpn.log

# 配置为以太网桥模式,但需要使用系统的桥接功能

# 这里不需要使用

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

#记录日志,每次重新启动 openvpn 后删除原有的 log 信息

log /var/log/openvpn.log

#和 log 一致,每次重新启动 openvpn 后保留原有的 log 信息,新信息追加到文件最后

;log-append openvpn.log

#定义运行 openvpn 的用户

user nobody

group nobody

#Run script or shell command cmd to validate client

#virtual addresses or routes. 具体查看 manual

;learn-address ./script

#其它的一些需要 PUSH 给 Client

#用于记录某个 Client 获得的 IP 地址,类似于 dhcpd.lease 文件,

#防止 openvpn 重新启动后“忘记”Client 曾经使用过的 IP 地址

ifconfig-pool-persist ipp.txt

#Bridge 状态下类似 DHCPD 的配置,为客户分配地址,由于这里工作在路由模式,所以不使用

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

# 随机选择一个 Server 连接,否则按照顺序从上到下依次连接

;remote-random

# 始终重新解析 Server 的 IP 地址(如果 remote 后面跟的是域名)                 ,

# 保证 Server IP 地址是动态的使用 DDNS 动态更新 DNS 后,Client 在自动重新连接时重新解析 Server 的

IP 地址

# 这样无需人为重新启动,即可重新接入 VPN

resolv-retry infinite

# 在本机不邦定任何端口监听 incoming 数据,Client 无需此操作,除非一对一的 VPN 有必要

nobind

# 如果你使用 HTTP 代理连接 VPN Server,把 Proxy 的 IP 地址和端口写到下面

# 如果代理需要验证,使用 http-proxy server port [authfile] [auth-method]

# 其中 authfile 是一个 2 行的文本文件,用户名和密码各占一行,auth-method 可以省略,详

细信息查看 Manual

;http-proxy-retry # retry on connection failures

;http-proxy [proxy server] [proxy port #]

# Server 使用 build-key-server 脚本什成的,在 x509 v3 扩展中加入了 ns-cert-type 选项

# 防止 VPN client 使用他们的 keys + DNS hack 欺骗 vpn client 连接他们假冒的 VPN Server

# 因为他们的 CA 里没有这个扩展

ns-cert-type server

a.定义 tun 为使用路由方式的 VPN

b.小心处理证书的路径,.key 文件要保存好,特别是 ca.key。

(ca.key 不需要在 OpenVPN 中用到,可以另外保存)

注意,每个虚拟 tun 网卡都是成对的,只有 inet addr 标识的才是用于 VPN 通讯。并且必须在/30 网段

时间: 2024-10-13 14:32:07

OpenVPN 配置范例及配置文件说明的相关文章

OpenVPN配置手册

Ubuntu Server 14.04搭建OpenVPN服务器 1.1   第一步 准备系统 首先更新本地仓库数据: [email protected]:~$ sudo apt-get update 进行操作系统和已安装的包的升级,输入: [email protected]:~$ sudo apt-get dist-upgrade 如果升级了新内核,那就需要重启.当更新完成后,安装OpenVPN: [email protected]:~$ sudo apt-get -y install open

linux下搭建openvpn配置

linux 下openvpn配置 参考博客:http://blog.chinaunix.net/uid-26835604-id-3484906.html 一. 下载软件包 # wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.04.tar.gz # wget http://openvpn.net/release/openvpn-2.1_rc22.tar.gz centos: # yum install openssl-deve

2.配置范例站点站点

配置范例站点站点序号域名目录1www.heytool.com/www/html/www.heytool.com2bbs.heytool.com/www/html/bbs.heytool.com 修改nginx 配置文件:# vi nginx.confuser nobody nobody; # 运行 nginx 的所属组和所有者 Nginx 启动关闭# /usr/local/nginx-1.0.6/sbin/nginx //启动 nginx # /usr/local/nginx-1.0.6/sbi

centos yum源配置 与yum配置文件

参考博客 http://www.cnblogs.com/mchina/archive/2013/01/04/2842275.html 1.centos . yum配置文件在目录 /etc/yum.repos.d目录下 yum主要是自动化的升级 安装 和卸载 rpm软件包 David Camp 博客园 首页 新随笔 联系 订阅 管理 随笔-115  文章-0  评论-667 CentOS yum 源的配置与使用 一.yum 简介 yum,是Yellow dog Updater, Modified

Ehcache2 的配置(不使用配置文件)

EhCache是一个开放源码的,基于标准的高速缓存系统. 网上关于EhCache的使用配置很多,但是一般是基于配置文件的.但是实际应用中.我们可能需要动态的管理缓存,这时候单纯配置文件就不够用了. 所以我们需要编码形式的配置创建缓存. 其实EhCache是支持硬编码方式创建配置的(配置文件只是一种形式,最终也是需要解析成JAVA类模型的). 这里可以比较一下两种创建EhCache缓存方式的差异. 第一种方式,不使用配置文件,使用JAVA代码创建配置. Configuration configur

Profile配置和加载配置文件

Profile配置 1.Profile是什么 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同的环境下配置用不同的配置文件或者不同的配置. spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.

Centos6.7+openvpn配置Linux客户端连接,基于证书访问(三)

Linux 做为客户端连接 openvpn 服务,同样需要安装 openvpn 的软件及相关软件. 和服务器端的配置一样,先做时间同步,并添加定时任务 /usr/sbin/ntpdate time.windows.com echo '#time sync' >> /var/spool/cron/root echo '*/5 * * * * /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1' >> /var/spool

OpenVPN 配置参数详解

# #号和;号开头的都是注释# 设置监听 IP,默认是监听所有 IP#local 116.6.45.23#Openvpn 服务器监听端口port 2194# 设置用 TCP 还是 UDP 协议?;proto tcpproto udp# 设置创建 tun 的路由 IP 通道,还是创建 tap 的以太网通道# 路由 IP 容易控制,所以推荐使用它:但如果如 IPX 等必须# 使用第二层才能通过的通讯,则可以用 tap 方式,tap 也# 就是以太网桥接dev tun# 配置 VPN 使用的网段,Op

openwrt+openvpn配置

Server配置端: 一.安装openvpn Yum install –y lzo Yum install –y openvpn Wget https://github.com/OpenVPN/easy-rsa 1.unzipeasy-rsa-master.zip 2.cp easy-rsa-master/etc/openvpn/easy-rsa 3.cd/etc/openvpn/easy-rsa/easyrsa3/ 4.cp vars.example vars 5.vi vars 修改配置文件