openSUSE搭建OpenVPN

openSUSE搭建OpenVPN

文:铁乐与猫
2018-9-19

[toc]

环境

  • openSUSE Leap 42.3
  • openVPN 2.3.8(推荐直接使用zypper命令安装)
    • 官网下载源码页面:https://openvpn.net/index.php/open-source/downloads.html
    • 至2018年9月14日,官方最新的源码包是openVPN2.4.6版本。
    • OpenVPN 2.4.6 — released on 2018.04.24
    • 注意,需要翻墙才能下载。
  • windows端:openvpn-install-2.4.6-I602.exe
  • 注:本教程虽然是在openSUSE下操作,但和CentOS下是一样能走得通的,除了安装时将zypper换成yum而已。

安装openVPN服务端

  • 为了减少依赖的问题,我选择了直接使用zypper安装而不是源码安装的方式:
operation@opensuse-wordpress:~> sudo zypper in openvpn
[sudo] password for root: 
Retrieving repository 'openSUSE-42.3-Update-Oss-0' metadata ..................................................[done]
Building repository 'openSUSE-42.3-Update-Oss-0' cache .......................................................[done]
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 3 NEW packages are going to be installed:
  libpkcs11-helper1 openvpn pkcs11-helper

3 new packages to install.
Overall download size: 519.7 KiB. Already cached: 0 B. After the operation, additional 1.2 MiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package libpkcs11-helper1-1.11-5.3.x86_64                           (1/3),  42.1 KiB (115.2 KiB unpacked)
Retrieving: libpkcs11-helper1-1.11-5.3.x86_64.rpm ............................................................[done]
Retrieving package pkcs11-helper-1.11-5.3.x86_64                               (2/3),  17.0 KiB ( 30.0 KiB unpacked)
Retrieving: pkcs11-helper-1.11-5.3.x86_64.rpm ................................................................[done]
Retrieving package openvpn-2.3.8-14.1.x86_64                                   (3/3), 460.6 KiB (  1.1 MiB unpacked)
Retrieving: openvpn-2.3.8-14.1.x86_64.rpm ....................................................................[done]
Checking for file conflicts: .................................................................................[done]
(1/3) Installing: libpkcs11-helper1-1.11-5.3.x86_64 ..........................................................[done]
(2/3) Installing: pkcs11-helper-1.11-5.3.x86_64 ..............................................................[done]
(3/3) Installing: openvpn-2.3.8-14.1.x86_64 ..................................................................[done]
Additional rpm output:
systemd service openvpn.service does not exist.
  • 安装完成后,使用locate openvpn可检索到相关的目录和文件:

主要的有:

/etc/openvpn(此目录目前为空)
/usr/sbin/openvpn(主程序)
/usr/share/doc/packages/openvpn(这个目录下有很多相关的包)
/usr/share/doc/packages/openvpn/sample-config-files(这个目录下有配置文件的简单案例)
/usr/share/doc/packages/openvpn/sample-keys/(这个目录下也是keys密钥的示例)
/usr/share/doc/packages/openvpn/sample-scripts/(脚本例子)
  • 目前openvpn还没有加进环境变量中,不过我们使用绝对路径去运行它,可以观看到版本和相关的参数:
operation@opensuse-wordpress:/etc/openvpn> /usr/sbin/openvpn --version
OpenVPN 2.3.8 x86_64-suse-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Aug  4 2015
library versions: OpenSSL 1.0.2j-fips  26 Sep 2016, LZO 2.08
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
Compile time defines: enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=needless enable_fragment=yes enable_http_proxy=yes enable_iproute2=yes enable_libtool_lock=yes enable_lzo=yes enable_lzo_stub=no enable_management=yes enable_multi=yes enable_multihome=yes enable_pam_dlopen=no enable_password_save=yes enable_pedantic=no enable_pf=yes enable_pkcs11=no enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_small=no enable_socks=yes enable_ssl=yes enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_win32_dll=yes enable_x509_alt_username=yes with_crypto_library=openssl with_gnu_ld=yes with_mem_check=no with_plugindir='$(libdir)/openvpn/plugins' with_sysroot=no

安装easy-rsa工具

该工具用于制作ca证书,服务端证书,客户端证书。在github上看到最新的版本为v3.05。

github地址:https://github.com/OpenVPN/easy-rsa/tree/v3.0.5

  • 使用wget下载zip包并解压
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.5.zip
unzip v3.0.5.zip
  • 将解压得到的文件夹easy-rsa-3.0.5重命名并复制到/etc/openvpn以便于使用。
sudo cp -R easy-rsa-3.0.5/ /etc/openvpn/ easy-rsa

配置vars文件

  • 进入/etc/openvpn/easy-rsa/easyrsa3目录
    cd /etc/openvpn/easy-rsa/easyrsa3/
    
  • 复制vars.example为vars
    sudo cp vars.example vars

  • 修改下面字段

    • 命令:sudo vim vars,然后修改91到96行,最后wq保存
    //以下字段根据自己实际情况更改,这些信息前面是有#注释的,去掉#号
    
    set_var EASYRSA_REQ_COUNTRY “CN” #国家
    set_var EASYRSA_REQ_PROVINCE “GuangDong” #省份
    set_var EASYRSA_REQ_CITY “GuangZhou” #城市
    set_var EASYRSA_REQ_ORG “tielemao” #非盈利组织,此处可填公司之类
    set_var EASYRSA_REQ_EMAIL “wwz@tielemao.com” #邮箱地址
    set_var EASYRSA_REQ_OU “My OpenVPN” #组织单元
    

创建服务端证书及key

  • 进入/etc/openvpn/easy-rsa/easyrsa3/目录,进行初始化sudo ./easyrsa init-pki
operation@opensuse-wordpress:/etc/openvpn/easy-rsa/easyrsa3> sudo ./easyrsa init-pki
[sudo] password for root: 

Note: using Easy-RSA configuration from: ./vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/easyrsa3/pki

会在目录下生成pki目录,内含private和reqs文件

operation@opensuse-wordpress:/etc/openvpn/easy-rsa/easyrsa3> sudo ls -lh pki
total 8.0K
drwx------ 2 root root 4.0K Sep 14 17:11 private
drwx------ 2 root root 4.0K Sep 14 17:11 reqs

  • 创建根证书

    命令sudo ./easyrsa build-ca

    类似下图:

    实际操作如下:

  operation@opensuse-wordpress:/etc/openvpn/easy-rsa/easyrsa3> sudo ./easyrsa build-ca

  Note: using Easy-RSA configuration from: ./vars
  Enter New CA Key Passphrase: 
  Re-Enter New CA Key Passphrase: 
  Generating RSA private key, 2048 bit long modulus
  .........+++
  ...................................................................................................+++
  e is 65537 (0x10001)
  You are about to be asked to enter information that will be incorporated
  into your certificate request.
  What you are about to enter is what is called a Distinguished Name or a DN.
  There are quite a few fields but you can leave some blank
  For some fields there will be a default value,
  If you enter '.', the field will be left blank.
  -----
  Common Name (eg: your user, host, or server name) [Easy-RSA CA]:yunwei_openvpn

  CA creation complete and you may now import and sign cert requests.
  Your new CA certificate file for publishing is at:
  /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
  • 注意:在上述部分需要输入PEM密码(PEM passphrase),输入两次。
  • 此密码必须记住,不然以后不能为证书签名。
  • 还需要输入Common Name 通用名,自定义一个好记的。
  • 在生成证书时,切记Common Name 不能重复,CN类似一个人的ID。
  • 生成的根证书文件为:/etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt

    • 创建服务端证书

    命令:sudo ./easyrsa gen-req server nopass

    类似下图:

实际操作如下:

operation@opensuse-wordpress:/etc/openvpn/easy-rsa/easyrsa3> sudo ./easyrsa gen-req server nopass

Note: using Easy-RSA configuration from: ./vars
Generating a 2048 bit RSA private key
.................................................................................................................+++
...........+++
writing new private key to '/etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key.NlmOnoTKYW'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]:yunwei_openvpn_server

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req
key: /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key

同样起个好记的通用名字,不过就不能和前面根证书的一样。
生成的文件有两个,注意这个时候这两个文件还不是服务端证书:

req: /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req
key: /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key
  • 签约服务端证书:
    • sudo ./easyrsa sign server server
    • 注,这里前一个server是命令表示注册的是server端,后一个server是可以自行定义的名字,
      但是要和前面命令起的名字一致,我这里一致都是server。
      类似下图:

实际操作如下:

operation@opensuse-wordpress:/etc/openvpn/easy-rsa/easyrsa3> sudo ./easyrsa sign server server

Note: using Easy-RSA configuration from: ./vars


You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 1080 days:

subject=
    commonName                = yunwei_openvpn_server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from ./openssl-easyrsa.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'yunwei_openvpn_server'
Certificate is to be certified until Sep  2 08:07:56 2021 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt

要输入yes确认才能继续操作下去,
输入之前创建根证书的时候输入的PEM密码,如果忘记了就得从创建根证书重新做起了。
最终生成服务端的证书,crt格式:
/etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt

  • 创建Diffie-Hellman,确保key穿越不安全网络:
    sudo ./easyrsa gen-dh
    类似下图:

  • 生成dh.pem文件: /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem

创建客户端证书

  • 创建客户端key及生成证书(记住和之前的创建服务端根证书操作一样生成时是自己输入的密码)

    sudo ./easyrsa gen-req client-wwz //名字自己定义

如下图:

同样可看到和之前做服务端证书步骤一样,生成了属于客户端的req和key文件:

req: /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/client-wwz.req
key: /etc/openvpn/easy-rsa/easyrsa3/pki/private/client-wwz.key
  • 签约客户端证书

    sudo ./easyrsa sign client client-wwz

    这里生成client所以必须为client,client-wwz则要与之前导入名字一致
    上面签约证书跟server类似,期间还是要输入前面设置CA根证书时的PEM密码。

    客户端的证书client-wwz.crt路径在/etc/openvpn/easy-rsa/easyrsa3/pki/issued/client-wwz.crt

疏理证书文件

现在梳理一下上面都生成了些什么东西:

  • 服务端:etc/openvpn/easy-rsa/文件夹中
    /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt # 根证书
    /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req
    /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/client.req
    /etc/openvpn/easy-rsa/easyrsa3/pki/private/ca.key # 根密钥
    /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key # 服务端密钥
    /etc/openvpn/easy-rsa/easyrsa3/pki/private/client.key # 客户端密钥
    /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt  # 服务端证书 
    /etc/openvpn/easy-rsa/easyrsa3/pki/issued/client-wwz.crt # 客户端证书
    /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem
    
  • 可参照下表更为清晰:

  • 将相关的服务器证书文件cp到/etc/openvpn目录下。当然,文件留在原路径也可以,只是在配置设置文件的时候写入的路径没那么简洁。

    cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn
    cp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn
    cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn
    cp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn
    
  • 客户端的文件则可以另找一个好记的目录,比如/etc/openvpn/client放置,也可以直接等做客户端设置的时候再直接放到客户端中。
    mkdir /etc/openvpn/client
    cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn/client
    cp /etc/openvpn/easy-rsa/easyrsa3/pki/private/client-wwz.key /etc/openvpn/client
    cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/client-wwz.crt /etc/openvpn
    

服务端配置

文件都准备好后,就可以进行编写服务端配置文件了。这就是磨刀不误砍柴工,万事俱备,只欠东风!

由于我们是zypper安装的openvpn。
所以相应在“/usr/share/doc/packages/openvpn/sample-config-files目录下会有一个server.conf`文件,如果找不到,也可以使用locate之类工具查找配置案例文件。

将这个文件复制到/etc/openvpn
sudo cp /usr/share/doc/packages/openvpn/sample-config-files/server.conf /etc/openvpn/

然后修改配置文件sudo vim server.conf如下:

local 172.16.1.128            # 填自己openvpn服务器的 IP,默认侦听服务器上的所有ip
port 1194                     # 侦听端口,默认1194,最好修改默认端口。
proto udp                     # 端口协议,默认udp,也可以开启tcp方便映射转发。
dev tun                       # 默认创建一个路由IP隧道
ca /etc/openvpn/ca.crt        # 根证书
cert /etc/openvpn/server.crt  # 证书
key /etc/openvpn/server.key   # 私钥文件/重要保密
dh /etc/openvpn/dh.pem

server 10.8.0.0 255.255.255.0 
# 设置服务器端模式,并提供一个VPN子网,以便于从中为客户端分配IP地址。
# 默认是10.8.0.0这个网段。
# 服务器自身会使用10.8.0.1这个ip。

ifconfig-pool-persist ipp.txt 
# 指定用于记录客户端和虚拟IP地址的关联关系的文件。
# 当重启OpenVPN时,再次连接的客户端将分配到与上一次分配相同的虚拟IP地址

push “route 172.18.0.0 255.255.0.0” 
# 推送路由信息到客户端,以允许客户端能够连接到服务器背后的其他私有子网。
# (简而言之,就是允许客户端访问VPN服务器自身所在的其他局域网)
# 记住,这些私有子网也要将OpenVPN客户端的地址池(10.8.0.0/255.255.255.0)反馈回OpenVPN服务器。

push "redirect-gateway def1 bypass-dhcp" 
# 启用该指令,所有客户端的默认网关都将重定向到VPN,这将导致诸如web浏览器、DNS查询等所有客户端流量都经过VPN。
# (为确保能正常工作,OpenVPN服务器所在计算机可能需要在TUN/TAP接口与以太网之间使用NAT或桥接技术进行连接)
# 这个指令其实挺影响客户端处的网络的,比如我就在vpn上阿里云的服务器后,本地浏览网络会出没法访问外网,有必要到阿里云vpn服务器上注释掉此指令,而且这样也会导致云服务器流量激增,并不利。

push “dhcp-option DNS 119.29.29.29″ 
# 某些具体的Windows网络设置可以被推送到客户端,例如DNS或WINS服务器地址。
# 实际上可用于推送内网dns或阿里内网dns等。

keepalive 10 120 
# keepalive指令将导致类似于ping命令的消息被来回发送,以便于服务器端和客户端知道对方何时被关闭。
# 默认每10秒钟ping一次,如果120秒内都没有收到对方的回复,则表示远程连接已经关闭。比较频繁,建议改成30 240?

comp-lzo 
# 在VPN连接上启用压缩。如果你在此处启用了该指令,那么也应该在每个客户端配置文件中启用它。

max-clients 100 #默认最大客户端连接100,为安全可限到1或2。
# 持久化选项可以尽量避免访问那些在重启之后由于用户权限降低而无法访问的某些资源。

persist-key
persist-tun

status openvpn-status.log # 状态日志
# 为日志文件设置适当的冗余级别(0~9)。冗余级别越高,输出的信息越详细。
# 0 表示静默运行,只记录致命错误。
# 4 表示合理的常规用法。
# 5 和 6 可以帮助调试连接错误。
# 9 表示极度冗余,输出非常详细的日志信息。
verb 3

还有许多详细配置,可查看官网说明。

启动openvpn服务

VMware虚拟机可能还需加载tun内核模块并启用转发。

  • 加载tun内核模块并启用转发。
    • 加载tun内核模块以便于openvpn生成虚拟网卡:sudo modprobe tun
    • 检查tun加载成功没有lsmod | grep tun
    operation@opensuse-wordpress:/etc/openvpn> sudo modprobe tun
    [sudo] password for root: 
    operation@opensuse-wordpress:/etc/openvpn> lsmod | grep tun
    tun                    32768  0 
    ip6_udp_tunnel         16384  1 vxlan
    udp_tunnel             16384  1 vxlan
    
    
    • 检验转发启用了没有,如果己转发就不用做下一步的启用。

    cat /proc/sys/net/ipv4/ip_forward

    • 启用转发sudo echo 1 > /proc/sys/net/ipv4/ip_forward

    或直接vim编辑/proc/sys/net/ipv4/ip_forward为1。

  • 测试启动服务

    sudo openvpn --config /etc/openvpn/server.conf

    注:这个命令是非后台模式运行的,方便测试运行时我们直接查看到日志输出。

    operation@opensuse-wordpress:/etc/openvpn> sudo openvpn --config /etc/openvpn/server.conf
    [sudo] password for root: 
    Wed Sep 19 09:37:37 2018 OpenVPN 2.3.8 x86_64-suse-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Aug  4 2015
    Wed Sep 19 09:37:37 2018 library versions: OpenSSL 1.0.2j-fips  26 Sep 2016, LZO 2.08
    Wed Sep 19 09:37:37 2018 Diffie-Hellman initialized with 2048 bit key
    Wed Sep 19 09:37:37 2018 Socket Buffers: R=[212992->131072] S=[212992->131072]
    Wed Sep 19 09:37:37 2018 ROUTE_GATEWAY 172.18.47.253/255.255.240.0 IFACE=eth0 HWADDR=00:16:3e:06:52:01
    Wed Sep 19 09:37:37 2018 TUN/TAP device tun0 opened
    Wed Sep 19 09:37:37 2018 TUN/TAP TX queue length set to 100
    Wed Sep 19 09:37:37 2018 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
    Wed Sep 19 09:37:37 2018 /bin/ip link set dev tun0 up mtu 1500
    Wed Sep 19 09:37:37 2018 /bin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
    Wed Sep 19 09:37:37 2018 /bin/ip route add 10.8.0.0/24 via 10.8.0.2
    Wed Sep 19 09:37:37 2018 UDPv4 link local (bound): [undef]
    Wed Sep 19 09:37:37 2018 UDPv4 link remote: [undef]
    Wed Sep 19 09:37:37 2018 MULTI: multi_init called, r=256 v=256
    Wed Sep 19 09:37:37 2018 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
    Wed Sep 19 09:37:37 2018 IFCONFIG POOL LIST
    Wed Sep 19 09:37:37 2018 Initialization Sequence Completed
    
    
    • 后台模式运行

      openvpn --daemon --config /etc/openvpn/server.conf加了--daemon则是运行在后台模式。

    • 也可以以systemctl start openvpn 运行。

    毕竟是zypper安装的,使用systemctl来启动和停止openvpn也挺方便。

windows客户端配置

  • 用sftp或lrzsz命令工具之类将在openvpn服务器生成的客户端证书和key下载到客户端电脑。

    ca.crt client-wwz.crt client-wwz.key //这三个文件,我是为了方便起见一起放到了/etc/openvpn/client下。
    
  • 去官网下载openvpn windows端进行安装,因为都是图形界面鼠标不断点击下一步来进行安装的就不做详述和截图了。
    • 官网下载链接,需翻墙:https://openvpn.net/index.php/open-source/downloads.html

    • 我选择了安装到D:\Program Files目录下,所以安装完成后,为方便起见,前面从服务端拷下来的三个证书相关文件可以放置到D:\Program Files\OpenVPN\ToOpenSUSE下了。当然,ToOpenSUSE目录要自己新建。

  • 然后安装目录找到simple-config
    D:\Program Files\OpenVPN\sample-config\client.ovpn

    client.ovpn 复制到D:\Program Files\OpenVPN\ToOpenSUSE下,编辑client.ovpn配置文件:

  • 编辑配置文件:

    client         # 指定当前VPN是客户端
    dev tun        # 必须与服务器端的保持一致
    proto udp      # 必须与服务器端的保持一致
    remote 172.16.1.128 1194   # 指定连接的远程服务器的实际IP地址和端口号
    
    resolv-retry infinite    
    # 断线自动重新连接,在网络不稳定的情况下(例如:笔记本电脑无线网络)非常有用。
    
    nobind         # 不绑定特定的本地端口号
    persist-key
    persist-tun
    
    # 默认证书路径在安装目录的config下。
    # 证书目录是在另外路径下的,需要敲绝对路径。
    ca D:\\"Program\ Files"\\OpenVPN\\ToOpenSUSE\\ca.crt
    cert D:\\"Program\ Files"\\OpenVPN\\ToOpenSUSE\\client-wwz.crt
    key D:\\"Program\ Files"\\OpenVPN\\ToOpenSUSE\\client-wwz.key
    
    ns-cert-type server      # 指定采用服务器校验方式
    
    # tls-auth ta.key 1     
    # 如果服务器设置了防御DoS等攻击的ta.key,则必须每个客户端开启;如果未设置,则注释掉这一行;
    
    comp-lzo # 要和服务器端的配置保持一致,之前我们的服务端是配置上了压缩的,客户端也得开启
    verb 3
    

    简单应用的话我们只需要以上项目每行一个,复杂些应用的话可以参照官方具体配置文档。

    为方便区分,我们将编辑好的client.ovpn文件重命名为ToOpenSUSE.ovpn

    • 注:windows路径在配置文件中想要正确识别的话,首先要在\前加多个\表示转,而带空格的文件夹名同样空格前需带个\用来转义。
  • 打开windows openvpn客户端:

    D:\Program Files\OpenVPN\bin\openvpn-gui(当然,安装完成后桌面也会有它的快捷方式),右键弹出菜单,选择导入配置文件:

    选中之前配置好的ToOpenSUSE.ovpn配置文件:D:\Program Files\OpenVPN\ToOpenSUSE\ToOpenSUSE.ovpn

注:这个配置文件其实是导入到`C:\Users\Administrator\OpenVPN\config\ToOpenSUSE`路径下,所以以后要修改了配置的话,需要重新导入一次,或者直接到以上路径下直接修改配置文件。
  • 连接openvpn服务端:

    由于只有一个配置文件,所以导入完成后,继续右键菜单,点击Connect,进行连接测试:

注意,做这一步的时候,先保证你的服务器防火墙,云服务器的安全组等对你定义好的openvpn端口允许了udp连接。

![](https://www.tielemao.com/wp-content/uploads/2018/09/openvpn-gui-connect-password.png)

弹出输入密码框,注意,这里就是输入之前为客户端证书设置好的密码了。可以勾选上保存密码,就不用每次都要输入密码了。

![](https://www.tielemao.com/wp-content/uploads/2018/09/openvpn-gui-conn.png)

如上,连接成功。

测试openvpn连接

  • xshell测试

    如图,可以看到通过10.8.0.1而不是公网ip的方式也能ssh连接成功了。

linux openvpn客户端配置

linux端互连也是同样的,在另一个linux上配置成client就是了。

以linux客户端为centos6.9为例,yum安装的openvpn。

安装就不再重复讲述了,直接到配置这一步骤:

  • 在客户端openvpn主目录/etc/openvpn下新建config目录,
    同样将服务端的ca.crtclient-wwz.crtclient-wwz.key放置进去。

复制一份客户端配置范例进config目录,这里要注意的是,之前windows用的配置文件后缀名为.ovpn,到了linux用的就是.conf了!

cp /usr/share/doc/openvpn-2.4.4/sample/sample-config-files/client.conf /etc/openvpn/config/client.conf
  • 编辑配置文件
    client         # 指定当前VPN是客户端
    dev tun        # 必须与服务器端的保持一致
    proto udp      # 必须与服务器端的保持一致
    remote 172.16.1.128 1194   # 指定连接的远程服务器的实际IP地址和端口号
    
    resolv-retry infinite    
    # 断线自动重新连接,在网络不稳定的情况下(例如:笔记本电脑无线网络)非常有用。
    
    nobind         # 不绑定特定的本地端口号
    persist-key
    persist-tun
    
    ca /etc/openvpn/config/ca.crt                 # 指定CA证书的文件路径
    cert /etc/openvpn/config/client-wwz.crt       # 指定当前客户端的证书文件路径
    key /etc/openvpn/config/client-wwz.key        # 指定当前客户端的私钥文件路径
    
    ns-cert-type server      # 指定采用服务器校验方式
    
    # tls-auth ta.key 1     
    # 如果服务器设置了防御DoS等攻击的ta.key,则必须每个客户端开启;如果未设置,则注释掉这一行;
    
    comp-lzo              #与服务器保持一致
    verb 3                #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
    
  • 注意:
    • 配置文件中的文件路径涉及到相对路径的,均以启动OpenVPN时的所在目录为准。
      由于在配置文件中设置的文件路径都是相对config目录的路径,因此也只能在config目录下才能正常启动OpenVPN。如果想在任何地方都能使用上述命令启动OpenVPN,建议将配置文件与文件路径相关的部分全部改为绝对路径。
    • OpenVPN服务器所在计算机必须允许OpenVPN通过防火墙,你可以禁用掉防火墙,或者将OpenVPN设为可信程序,或者开放1194端口。
      -A INPUT -p udp --dport 1194 -j ACCEPT
    • 启动服务器和客户端都需要一定的权限,建议测试学习时用root账户或sudo命令进行启动。
  • 运行openvpn客户端:
    openvpn --daemon --cd 配置文件路径 --config client.ovpn(配置文件名称) --log-append /var/log/openvpn/openvpn.log(日志路径)
    

查看日志成功连接没有:
tail -f /var/log/openvpn/openvpn.log
到此已经成功了。

  • 设置开机自动连接
    vim /etc/rc.local
openvpn --daemon --cd 配置文件路径 --config client.ovpn(配置文件名称) --log-append /var/log/openvpn.log(日志路径)
  • 加入到/etc/rc.local配置文件里。

openvpn的搭建和简单使用本次就介绍到这里。

【end】

One thought on “openSUSE搭建OpenVPN

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1 + 18 =