前言
vpn全名 虚拟专用网络 使用这种技术可以使不同的地址的主机处于一个虚拟局域网络,常见的案例就是公司vpn就是让职工能在外网访问到公司的服务器。
而openvpn就是开源的实现。
一、Windows Openvpn方案
客户端:192.168.111.130
服务端:192.168.0.164
构建前:
client---->server 通过
server----->client 不可
构建后:
client---->server 通过
server----->client 通过
1.1 openvpn server windows端安装
目录结构
服务端安装
一路next,注意要选中以下选项
依次在同一个bash会话中,运行命令:
cd "C:\Program Files\OpenVPN\easy-rsa" init-config.bat # init-config 会把 vars.bat.sample 复制为 var.bat vars.bat # vars.bat 用来设置一些变量,主要就是配置文件中修改的那部分 clean-all.bat # 会清掉 C: \Program File\OpenVPN\easy-rsa\keys 目录,再把 index.txt 和 serial 文件放进来。 build-ca.bat # 生成根证书 build-hd.bat # 生成 dh1024.pem 文件,Server 使用 TLS(OpenSSL) 必须要有的文件 build-key-server.bat server # 生成服务端密钥和证书 # server01 是自己定义的参数名,与上相应的就会生成 server01.key、server01.csr 和 server01.crt,也都是在 keys 目录里。 # 这一步像 build-dh.bat 一样有些东西要填写,之后就是该回答 y 的 y 一下,关键就一个: # Common Name 必须填,且不能与执行 build-dh 时相同,否则会报: # failed to update database # TXT_DB error number 2 # 找不到 C:\Program Files\OpenVPN\easy-rsa\keys\*.old # 三个文件 server01.key、server01.csr 和 server01.crt 也会生成,但文件 server01.crt 的大小是 0 字节无效的,就要重新再来,看到 Data Base Updated 才行。 # 要生成多个服务端的密钥和证书则继续 build-key-server server02 ...... build-key.bat client #客户端生成密钥和证书 # build-ca和build-key-server一样要输入一堆东西,这里注意的是 Common Name 输入client,或者(client1,客户端名依次递增) ..\bin\openvpn --genkey --secret keys\ta.key # 生成 ta.key 文件
然后生成了一堆证书信息
证书相关文件介绍:
参考:SSL(TLS)
复制服务端配置文件
把key下面文件复制到config
- ca.crt
- ca.key
- server.crt
- server.csr
- server.key
- dh1024.pem
- ta.key
把sample-config下的以下文件复制到config
- server.ovpn
config就会有以下文件:(忽略ipp.txt,和openvpn-status.log 这是启动成功后产生的文件)
修改服务端配置文件
server.ovpn改为如下:
port 8080 # 连接端口 proto tcp # 协议 dev tun # tun模式 ca ca.crt # 根证书名 cert server.crt # 服务端证书名 key server.key # This file should be kept secret ;crl-verify vpncrl.pem dh dh1024.pem server 192.168.89.0 255.255.255.0 #局域网网段 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 218.85.157.99" push "dhcp-option DNS 223.5.5.5" push "route 192.168.88.0 255.255.255.0" client-to-client ;duplicate-cn keepalive 10 120 tls-auth ta.key 0 # This file is secret comp-lzo ;max-clients 100 user nobody group nobody persist-key persist-tun status openvpn-status.log # 日志文件 verb 4
配置8080允许通过防火墙
启动服务端
点击openvpn-gui.exe
右键托盘下的openvnp选中connect
成功连接如下
查看此时ip为192.168.89.1
1.2 openvpn client windows端安装
安装步骤同服务端,
复制服务端生成的配置文件到客户端的config
C:\Program Files\OpenVPN\easy-rsa\keys目录下的文件复制到config:
- client.crt
- client.csr
- client.key
- ca.key
- ca.crt
- ta.key
(以上文件均为服务端生成的)
复制sample-config/client.ovpn到config下,并修改为:
client dev tun proto tcp remote 192.168.0.164 8080 # 服务端ip和映射端口 ;remote my-server-2 8080 ;remote-random resolv-retry infinite nobind user nobody group nobody ;route 192.168.0.0 255.255.252.0 persist-key persist-tun ;http-proxy-retry # retry on connection failures ;http-proxy [proxy server] [proxy port #] ca ca.crt cert client.crt key client.key ns-cert-type server tls-auth ta.key 1 comp-lzo # Set log file verbosity. verb 4
启动客户端
点击openvpn-gui.exe
右键托盘下的openvnp选中connect
查看此时客户端ip会发现还有一个192.168.89.6
二、连通测试
192.168.89.1 ping 192.168.89.6
三、常见问题
3.1 客户端报错 ‘client.crt’: No such file or directory
Options error: --cert fails with ‘client.crt’: No such file or directory
Options error: --key fails with ‘client.key’: No such file or directory
原因:很有可能是生成证书名时使用client 而不是带序号的 故文件名为client1.crt
解决方案:
- client1.crt 改为 client.crt
- client1.key 改为 client.key