OpenVPN - 服务搭建 - 图文

更新时间:2024-01-14 04:36:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

OpenVPN

--------------时间:2014-7-7 -------------------深圳运维组

如果你想要更多的不仅仅是预共享密钥的OpenVPN可以很容易地设置和使用公共密钥基础设施(PKI)来使用SSL/TLS证书进行身份验证和VPN服务器和客户端之间的密钥交换。OpenVPN可以在路由中使用或桥连的VPN模式,并且可以配置为使用UDP或TCP,端口号可以配置为其他的,但官方默认端口是1194,而且它仅使用了单端口的所有通信。

OpenVPN的客户端可用于几乎所有的系统,包括所有的Linux发行版,Mac OS X,Windows和OpenWRT的基于无线局域网的路由器。

实验网络拓扑图:

目录

OpenVPN .......................................................................................................................... 1

1. 2.

服务器安装 ..................................................................................................... 3 公钥基础设施设置 ........................................................................................... 3 2.1 2.2 2.3 3. 4. 5.

证书颁发机构设置 .................................................................................... 3 服务器证书 .............................................................................................. 4 客户端证书 .............................................................................................. 5

服务器配置 ..................................................................................................... 5 客户端配置 ......................................................................................................... 7 故障排查 ......................................................................................................... 9 5.1 5.2

错误一: .................................................................................................. 9 错误二: ................................................................................................ 10

6. 客户端软件的实现 ......................................................................................... 10 6.1 6.2 6.3

Linux的网络管理器图形用户界面的OpenVPN ............................................ 10 Linux的文本界面的OpenVPN ................................................................... 11 OpenVPN的带有GUI为Win 7或Win XP .................................................... 12

1. 服务器安装

要安装OpenVPN的 ,请在终端输入:

$sudo –s

##输入密码切换到root,后面的操作均是在root用户下进行。

#apt-get install openvpn easy-rsa

2. 公钥基础设施设置

构建的OpenVPN配置的第一步是建立一个公钥基础设施(PKI),公钥基础设施包括:

1. 一个单独的证书(也称为公钥)和私钥的服务器和每个客户端,

2. 这是用来签署每个服务器和客户端证书的大师证书颁发机构(CA)的证书和密钥。

OpenVPN的支持基于证书的双向认证,这意味着客户端必须验证服务器证书在互信建立之前,服务器也必须验证客户端证书。

服务器和客户端将验证对方先核实该提供的证书是由主证书颁发机构(CA)签署,然后通过在现在验证的证书的头,如证书的通用名称或证书类型测试信息(客户端或服务器)。

2.1 证书颁发机构设置

要建立你自己的证书颁发机构(CA)和产生的证书和密钥的OpenVPN服务器多个客户端的easy-rsa目录先复制到/etc/openvpn。这将确保任何更改脚本包时更新也不会丢失。从终端的变化,以root用户:

mkdir /etc/openvpn/easy-rsa/

cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

接下来,编辑的/etc/openvpn/easy-rsa/vars调整到适合您的环境:

root@ubuntu:/etc/openvpn/easy-rsa# cat vars |grep -v \##主要修改红色部分内容,下面是已经改好的例子 export EASY_RSA=\export OPENSSL=\

export PKCS11TOOL=\export GREP=\

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_DIR=\

echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR

export PKCS11_MODULE_PATH=\

export PKCS11_PIN=\export KEY_SIZE=2048 export CA_EXPIRE=3650 export KEY_EXPIRE=3650

export KEY_COUNTRY=\CN\国家 export KEY_PROVINCE=\SZ\省份 export KEY_CITY=\ShenZhen\城市 export KEY_ORG=\acttao\组织单位

export KEY_EMAIL=\jiaxxx@126.com\邮箱 export KEY_OU=\acttao\组织单元 export KEY_NAME=\acttao\证书名 export KEY_CN=\acttao\证书别名

输入以下命令以生成主证书颁发机构(CA)的证书和密钥:

cd /etc/openvpn/easy-rsa/

chown -R root.$user . ##$user指的是当前管理系统的用户(非root) chmod g+w . source ./vars ./clean-all

./build-ca (可能会报错,详见下图)

root@ubuntu:/etc/openvpn/easy-rsa# ./build-ca

error on line 198 of /etc/openvpn/easy-rsa/openssl-1.0.0.cnf 140065253045920:error:0E065068:configuration file

routines:STR_COPY:variable has no value:conf_def.c:618:line 198

或者

root@ubuntu:/etc/openvpn/easy-rsa# ./build-ca

error on line 220 of /etc/openvpn/easy-rsa/openssl-1.0.0.cnf 140519323657888:error:0E065068:configuration file

routines:STR_COPY:variable has no value:conf_def.c:618:line 220

经排错得知原因是:/etc/openvpn/easy-rsa/vars 配置文件中并没有涉及到该项,所以会报无效值,我们需要在/etc/openvpn/easy-rsa/openssl-1.0.0.cnf 把这两行给注释掉。

#subjectAltName=$ENV::KEY_ALTNAMES ##198行# #subjectAltName=$ENV::KEY_ALTNAMES ##220行#

再重新执行:./build-ca 就不报错了 ------一直回车

2.2 服务器证书

接下来,我们会为服务器的证书和私钥:

./build-key-server acttao 一直回车,到sign,Y 1out1,Y

正如在上一步中,大部分参数都可以默认。其他两个查询需要积极的回应,“注册证书?[Y / N]”和“1出1证书请求认证,提交?[Y / N]”。

需要为的OpenVPN服务器生成的Diffie Hellman的参数:

./build-dh

所有证书和密钥的子目录键已生成。通常的做法是将它们复制/etc/openvpn/:

cd keys/

cp acttao.crt acttao.key ca.crt dh2048.pem /etc/openvpn/

2.3 客户端证书

VPN客户端还需要一个证书来验证自己到服务器。通常你创建一个不同的证书为每个客户端。创建证书,请输入以下的终端,而作为root用户:

cd /etc/openvpn/easy-rsa/ source ./vars

./build-key client1

##大部分都是回车,最后两步是”y”

使用安全的方法,把下列文件拷贝到客户端:

1. /etc/openvpn/ca.crt

2. /etc/openvpn/easy-rsa/keys/client1.crt 3. /etc/openvpn/easy-rsa/keys/client1.key

由于客户端证书和密钥只需要在客户机上,你应该从服务器上删除它们。

3. 服务器配置

随着你的OpenVPN安装你得到了这些示例配置文件(还有更多,如果你打勾):

root@server:/# ls -l /usr/share/doc/openvpn/examples/sample-config-files/ total 68

-rw-r--r-- 1 root root 3427 2011-07-04 15:09 client.conf -rw-r--r-- 1 root root 4141 2011-07-04 15:09 server.conf.gz

开始复制和拆包server.conf.gz到/etc/openvpn/server.conf中。

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

sudo gzip -d /etc/openvpn/server.conf.gz

编辑/etc/openvpn/server.conf中确保以下行指向您在上一节中创建的证书和密钥。

root@ubuntu:/etc/openvpn# cat server.conf |grep -v \

local 192.168.100.252 ##OpenVPN Server 服务器的IP port 1194 ##通信端口

proto udp ##也可以使用tcp端口,但传输速度可能没有udp快,建议保持沉默 dev tun ##tun模式一般用DHCP分发IP,另一种tap模式,一般是从IP段中指派IP ca /etc/openvpn/ca.crt ##强烈建议写绝对路径

cert /etc/openvpn/acttao.crt ##强烈建议写绝对路径

key /etc/openvpn/acttao.key # This file should be kept secret dh /etc/openvpn/dh2048.pem ##强烈建议写绝对路径

server 10.8.0.0 255.255.255.0 ##配置VPN使用的网段,OpenVPN会自动提供基于该网段的DHCP服务,但不能和任何一方的局域网IP段重复,保证唯一性

ifconfig-pool-persist ipp.txt ##存储分发IP记录,确保下次登录还获得一样的IP push \ ##若客户端希望所有的流量都通过VPN传输,则可以使用该语句,其会自动改变客户端的网关为VPN服务器(推荐关闭) push \push \

duplicate-cn #此处设置一个证书可以多个用户同时登陆

client-to-client ##默认OpenVPN客户端之间是不能互通的,注释掉就可以了。 keepalive 10 120

comp-lzo ##使用lzo压缩的通讯,服务端与客户端都必须配置 max-clients 100 ##最大连接数 user nobody group nogroup persist-key persist-tun

status openvpn-status.log ##日志文件 verb 3e

这是起码的,你必须通过配置来获得一个工作OpenVPN服务器。您也可以使用该样本server.conf中的文件中的所有默认设置。现在启动服务器。你会发现日志和错误信息在您的系统日志(/var/log/syslog)里面可以查看到。

root@server:/etc/openvpn# service openvpn start * Starting virtual private network daemon(s)...

* Autostarting VPN 'server' [ OK ]

现在,可以查看到OpenVPN创建了一个tun0的接口:

root@server:/etc/openvpn# ifconfig tun0

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 [...]

配置虚拟网卡tun0可以通过eth0网卡进行NAT转发数据包 vim /etc/default/ufw

DEFAULT_FORWARD_POLICY=\修改成

DEFAULT_FORWARD_POLICY=\ACCEPT\

vim /etc/sysctl.conf #net.ipv4.ip_forward=1 修改成

net.ipv4.ip_forward=1

sysctl -p 执行一下命令使修改生效

添加几条策略

ufw allow 22/tcp

iptables -A INPUT -p udp –-dport 1194 -j ACCEPT 或(ufw allow 1194/udp)

iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

防止系统重启后iptables不生效

iptables-save -c >/etc/ufw/iptables.save

echo \

4. 客户端配置

有带和不带图形用户界面的各种不同的OpenVPN客户端实现。你可以阅读更多有关在后面的部分客户。现在我们使用OpenVPN客户端的Ubuntu这是相同的可执行文件服务器。所以,你必须在客户机上重新安装OpenVPN的包:

sudo apt-get install openvpn

这一次的client.conf样本配置文件复制到/etc/openvpn/。

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

复制客户端密钥,你在上面的部分,例如要在/etc/openvpn /然后编辑

/etc/openvpn/client.conf创建,以确保以下行指向这些文件的CA证书。 如果client.conf在/etc/openvpn下的文件/可以省略路径。

ca ca.crt

cert client1.crt key client1.key

你必须至少指定OpenVPN服务器的名称或地址,确保关键字的客户端是在config,这就是使得客户端模式。

client

remote 14.127.233.98 1194

##14.127.233.98是OpenVPN Server 映射出去的公网IP(192.168.100.252的1194端口在防火墙做了映射)

此外,client.conf不在/etc/openvpn目录下时,请确保您指定的服务器复制的密钥文件名

ca /etc/openvpn/ca.crt

cert /etc/openvpn/client1.crt key /etc/openvpn/client1.key ##强烈建议用绝对路径,这样不容易出错。

现在启动OpenVPN客户端:

root@client:/etc/openvpn# service openvpn start * Starting virtual private network daemon(s)...

* Autostarting VPN 'client' [ OK ]

检查它是否创造了一个tun0的接口:

root@client:/etc/openvpn# ifconfig tun0

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

检查是否可以ping OpenVPN服务器:

root@client:/etc/openvpn# ping 10.8.0.1

PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.

64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=0.920 ms

OpenVPN服务器总是使用客户端网络中的第一个可用的IP地址,只有该IP可侦测。 例如,如果你配置了一个/ 24的客户端网络掩码,.1地址将被使用。 点对点解决您在ifconfig输出中看到上面通常不回答ping请求。 检查你的路由表:

root@client:/etc/openvpn# netstat -rn Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0

10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0

192.168.42.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

0.0.0.0 192.168.42.1 0.0.0.0 UG 0 0 0 eth0

5. 故障排查

如果完成了上面操作的还启动不了服务或连接不了,检查:

1. 2. 3. 4. 5. 6.

检查您的系统日志,例如:tail / var/log/syslog

请检查您是否配置了正确的client.conf和server.conf中指定的密钥文件的名称 不可以在客户端连接到服务器的机器,也许是防火墙阻止访问 客户端和服务器必须使用相同的协议和端口,如UDP端口1194

客户端和服务器必须使用相同的配置对于压缩,看比赛 - LZO配置选项

客户端和服务器必须使用相同的方面配置桥接与路由模式,请参阅服务器与服务器桥接配置选项

举例:

5.1 错误一:

Jul 6 13:01:10 ubuntu ovpn-server[2767]: Options error: --server and --server-bridge cannot be used together Jul 6 13:01:10 ubuntu ovpn-server[2767]: Use --help for more information. 原因: Server.conf配置文件中 server 10.8.0.0 255.255.255.0 不能与下面的一起使用 server-bridge 10.8.0.1 255.255.255.0 10.8.0.50 10.8.0.100 server-bridge 5.2 错误二:

Jul 6 13:02:07 ubuntu ovpn-server[2813]: Options error: --server-bridge directive only makes sense with --dev tap Jul 6 13:02:07 ubuntu ovpn-server[2813]: Use --help for more information. 原因: Server.conf配置文件中 server-bridge 10.8.0.1 255.255.255.0 10.8.0.50 10.8.0.100 server-bridge 只能配合tap用 dev tap ;dev tun (tun注释掉) 6. 客户端软件的实现

6.1 Linux的网络管理器图形用户界面的OpenVPN

许多Linux发行版,包括Ubuntu桌面变种配有网络管理器,一个漂亮的GUI来配置您的网络设置。它也可以管理你的VPN连接。请确保您有安装包的网络管理员,OpenVPN的。在这里,您会看到安装程序将安装所有其他所需的软件包,以及:

root@client:~# apt-get install network-manager-openvpn Reading package lists... Done Building dependency tree Reading state information... Done

The following extra packages will be installed:

liblzo2-2 libpkcs11-helper1 network-manager-openvpn-gnome openvpn Suggested packages:

resolvconf

The following NEW packages will be installed:

liblzo2-2 libpkcs11-helper1 network-manager-openvpn network-manager-openvpn-gnome openvpn

0 upgraded, 5 newly installed, 0 to remove and 631 not upgraded. Need to get 700 kB of archives.

After this operation, 3,031 kB of additional disk space will be used. Do you want to continue [Y/n]?

通知网络管理员对新安装的软件包,你将不得不重新启动它:

root@client:~# restart network-manager network-manager start/running, process 3078

打开网络管理界面,选择VPN选项卡,然后在“添加”按钮。 OpenVPN的选择作为VPN类型的开放请求者,然后按“创建”。 在接下来的窗口中的OpenVPN的服务器名称为“网关”,设置“类型”为“证书(TLS)”,点“用户证书”添加到您的用户证书,“CA认证”给您的CA证书和“私钥”您的私钥文

件。 使用高级按钮,启用压缩(如比赛 - LZO),dev的自来水,或者你在服务器上设置其它特殊设置。 现在,尝试建立您的VPN。

6.2 Linux的文本界面的OpenVPN

安装OpenVPN服务

sudo apt-get install openvpn

从示例名把 client.conf 复制到配置目录下/etc/openvpn/

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

准备好以下证书文件(事前在OpenVPN Server生成好的,需要下载到客户端的/etc/openvpn/目录下)

ca ca.crt

cert client1.crt key client1.key

配置配置client.conf文 确保OpenVPN的连接地址准确

client

remote 14.127.233.98 1194

##14.127.233.98是我实验环境OpenVPN服务器的IP

确保证书路径准确

ca ca.crt

cert client1.crt key client1.key

启动客户端OpenVPN服务

root@client:/etc/openvpn# service openvpn start * Starting virtual private network daemon(s)...

* Autostarting VPN 'client' [ OK ]

查看tun0接口信息

root@client:/etc/openvpn# ifconfig tun0

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

客户端可以ping通OpenVPN Server

root@client:/etc/openvpn# ping 10.8.0.1

PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.

64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=0.920 ms

6.3 OpenVPN的带有GUI为Win 7或Win XP

首先下载并安装最新的OpenVPN的Windows安装程序 。

http://www.openvpn.net/index.php/open-source/downloads.html

OpenVPN的2.3.2是当这被写了最新的。在撰写本文时,管理GUI是包含在Windows二进制安装。

安装程序时,一路默认就可以了。

你需要启动的OpenVPN服务。转到开始>计算机>管理>服务和应用程序>服务。 找到OpenVPN的服务,并启动它。设置它的启动类型为自动。当您启动OpenVPN的心肌梗死图形用户界面第一次你需要运行它为管理员。你必须右键点击它,你会看到该选项。

编写一个OpenVPN配置文本文件,并将其放置在C:\\Program Files\\OpenVPN\\ CONFIG \\client.ovpn和CA证书放在一起。你可以把用户证书在用户的主目录就像下面的例子。

# C:\\Program Files\\OpenVPN\\config\\client.ovpn client dev tun

proto udp

remote 14.127.233.98 1194 resolv-retry infinite user nobody group nobody persist-key persist-tun

ca \

cert \key \

ns-cert-type server comp-lzo verb 3

测试连接:

安装完程序后,桌面上会有一个图标,且会多出来一个虚拟网卡,如图1:

拨VPN,拨号成功后如图2:

可以ping通OpenVPN Server的10.8.0.1这个IP,如图3:

查看一下路由信息,如图4:

检查转发的情况:

1.尝试访问一下百度,OK,访问成功,如图5:

2.在OpenVPN Server上查看虚拟网卡tun0的收发包,都不为0,如图6:

问题:

WIN 7_X64安装OpenVPN客户端后,启动VPN报错,如图:

原因:

首次启动OpenVPN客户端用的普通用户,无权操作注册表。 解决办法:

第一次启动以管理员的权限,VPN退出后再切回普通用户用就好了。

致此,OpenVPN Server的搭建及OpenVPN Client安装配置均已完毕。 如有不足之处,敬请指示,谢谢!

本文来源:https://www.bwwdw.com/article/bf1o.html

Top