OpenVPN的编译安装、配置、使用及注意事项

记录OpenVPN一些相关的知识点,先用一张图说下Openet、Teamviewer、Shadowsocks这三者实现的区别

Openet、Teamviewer、Shadowsocks三者实现区别

OpenVPN的安装:

我这里提供一套安装套件,是目前最新版的OpenVPN:
链接:https://pan.baidu.com/s/1gg-AuCFgjAB2jn9ilapSTQ 密码:3h45
里面有详细的ReadMe,按照ReadMe来安装即可

OpenVPN的配置:

1、创建目录放置相关配置文件和证书:

mkdir /etc/openvpn
cp -rpf xxx/openvpn-2.4.6/sample/sample-config-files/server.conf #拷贝一个config模板到目录  
cp -rpf easyrsa/ /etc/openvpn/easy-rsa #拷贝解压出的证书生成工具,随便放哪,放解压处也可以,最后在配置文件指定好路径就行   

2、使用easyrsa生成相关证书和DH参数,制作根证书:

./easyrsa init-pki #初始化证书目录  
./easyrsa build-ca nopass #创建根证书,需要输入证书名,不和服务端和客户端证书同名即可。这步后issued文件夹下生成将会生成ca.crt,private文件夹下将会生成ca.key私钥文件,还有一些serial、reqs文件  
./easyrsa gen-dh #生成DH参数,用于密钥协商过程。这步后将生成dh.pem文件

3、制作服务端证书

./easyrsa build-server-full lz_server nopass #lz_server是证书名称 ,issued文件夹下生成lz_server.crt证书,private文件夹下生成lz_server.key私钥

4、制作客户端证书

./easyrsa build-client-full lz_client nopass #lz_client是证书名称,同理生成相关证书和私钥  

5、服务端配置
在此说明下,配置文件中的分号和井号都起到了注释的作用

#一个ip,client no  to client模式下需要能从这个ip(主机),Ping通两端主机
local ooo.xxx.ooo.xxx

port 7333

proto tcp

dev tun

ca /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
cert /etc/openvpn/easy-rsa/easyrsa3/pki/issued/lz_server.crt
key /etc/openvpn/easy-rsa/easyrsa3/pki/private/lz_server.key  # This file should be kept secret
dh /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem

server 10.3.3.0 255.255.255.0

ifconfig-pool-persist ipp.txt

#import需要访问的内网IP地址或网段
push "route xxx.xxx.xxx.xxx 255.255.255.0"

;client-to-client

keepalive 10 120

#允许使用同一客户端证书多处登录
duplicate-cn

cipher AES-256-CBC

comp-lzo

user nobody

persist-key
persist-tun

status /var/log/openvpn-status.log

log /var/log/openvpn.log

verb 3

6、客户端配置

client

dev tun

proto tcp

remote ooo.xxx.ooo.xxx 7333

resolv-retry infinite

nobind

persist-key
persist-tun

ca ca.crt
cert lz_client.crt
key lz_client.key

remote-cert-tls server

cipher AES-256-CBC

comp-lzo

verb 3

#myself add
auth-nocache

OpenVPN的使用

  • Client no to Client模式下:
    要求:在该模式下Server上的ip必须能ping通Client和另一端的主机(这是OpenVPN的原理决定的)

Server端:按照以上步骤完成,直接使用./openvpn –config /etc/openvpn/server.conf就可以启动Server服务了

Client端:在Win下就安装压缩包中的OpenGUI,然后拷贝在Server上制作好的根证书、客户端证书和客户端私钥到Client上,并在client.ovpn中配置好路径,之后直接启动连接即可。连接成功后,便可以访问xxx.xxx.xxx.xxx 255.255.255.0。
在Linux下则只需要吧Server的配置文件更换为Client的配置文件即可

  • Client to Client模式下:
    要求:在该模式下则要求各个Client可以路由到Server

Server端:开启client-to-client选项,可以关闭push “route xxx.xxx.xxx.xxx 255.255.255.0” 选项,其他不做修改

Client端:可以不做修改

注意:

1、Client no to Client 和 Client to Client两个模式可以同时存在,但是要需要注意当前网络环境是否真的可以同时满足这两个模式的要求。
2、若存在多个Client则可以选择不同的Client使用不同的客户端证书和私钥(需要Server生成多个客户端证书和私钥)。或者在启动Server时加入–duplicate-cn启动选项