openSUSE搭建OpenVPN
目录
openSUSE搭建OpenVPN
文:铁乐与猫
2018-9-19
环境
- 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
- 注意,需要FQ才能下载。
- 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。
- 加载tun内核模块以便于openvpn生成虚拟网卡:
测试启动服务
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端进行安装,因为都是图形界面鼠标不断点击下一步来进行安装的就不做详述和截图了。
官网下载链接,需FQ: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路径在配置文件中想要正确识别的话,首先要在
打开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.crt
、client-wwz.crt
和client-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客户端:
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】
openSUSE搭建OpenVPN的更多相关文章
- 完整CentOS搭建OpenVPN服务详细教程
一.介绍 1.定义 ① OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写.OpenVPN允许创建的VPN使用公开密钥.电子证书.或者用户名/密码来进行身份验证 ...
- Ubuntu16.04搭建OpenVPN
Ubuntu16.04搭建OpenVPN 2018年12月27日 15:50:59 VinQin 阅读数:21042 简介 如果在一个非信任网络下比如旅社或者咖啡店的WiFi网络下,想要通过你的智 ...
- CentOS搭建OpenVPN以及WIN&Android&iOS的安装连接
OpenVPNhttp://info.swufe.edu.cn/vpn/openvpn/#2 苹果.安卓智能手机openvpn的设置_百度经验https://jingyan.baidu.com/art ...
- CentOS7搭建OpenVPN
目录 CentOS7搭建OpenVPN 环境 安装 第一步.安装openvpn及所需软件 第二步.编辑vars文件,根据自己环境配置 第三步.创建服务端证书及key 第四步.创建客户端证书 第五步.拷 ...
- 如何搭建openvpn
一.什么是openvpn Openvpn是一款基于openssl的开源vpn软件,它可以很好的运行在linux及windows各发行版本中,它的核心技术是虚拟网卡,其实它更像是一个底层的网卡驱动软件, ...
- 在ubuntu14.04上搭建OpenVPN服务
简介 在连接了不可信的网络环境后,让手机或者计算机安全的访问互联网,使用虚拟专用网络(Virtual Private Network,VPN)是一个解决办法.OpenVPN是一个SSL VPN完整解决 ...
- CentOS 6.9/Ubuntu 16.04搭建OpenVPN服务器以及客户端的使用
说明: 1.发现一个很奇怪的现象,CentOS和Ubuntu有着对用户不同的管理理念,比如CentOS中安装一切软件都是以root优先(su -),而Ubuntu则以当前用户优先,安装软件以sudo开 ...
- 烂泥:ubuntu 14.04搭建OpenVPN服务器
本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司分部需要连接公司内部的服务器,但是该服务器只允许公司内部的网络访问. 为了解决这个问题,打算使用VPN.对于VPN以前使用最多的是PPTP这个解决方案 ...
- CentOS6下搭建OpenVPN服务器
• OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件.使用OpenVPN可以方便地在家庭.办公场所.住宿酒店等不同网 ...
随机推荐
- mysql使其支持插入中文数据的办法
1.找到安装的文件夹C:\Program Files (x86)\MySQL\MySQL Server 5.0 2.修改文件夹下的my.ini文件: 找到画黄线的这一字段 将后面改为utf8 这个过程 ...
- Apktool的安装与使用
官网的安装方式如下图: 前提条件: Java 1.8版本已安装 通过在终端内输入"java -version"可以查看Java版本 因为我用的是MacBook,所以只介绍如何在Ma ...
- Turbine——Hystrix集群监控
上一篇文章讲述了如何利用Hystrix Dashboard去监控断路器的Hystrix command.当我们有很多个服务的时候,这就需要聚合所有服务的Hystrix Dashboard的数据了.这就 ...
- android开发(0):android studio的下载安装与简单使用 | sdk的安装与编译运行
android studio,简称AS,是集成开发环境,所谓集成,就是集编辑.编译.调试.打包等于一体.简单来说,通过AS,就可以开发出在android系统上运行的APP. 我使用的是macos系统. ...
- SpringBoot(2) Json框架 -- Jackson返回结果处理
一.常用框架 阿里 fastjson,谷歌gson等 JavaBean序列化为Json,性能:Jackson > FastJson > Gson > Json-lib 同个结构 Ja ...
- netty源码解解析(4.0)-6 线程模型-IO线程EventLoopGroup和NIO实现(一)
接口定义 io.netty.channel.EventLoopGroup extends EventExecutorGroup 方法 说明 ChannelFuture register(Channel ...
- [NOI 2017]蔬菜
Description 题库链接 小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案. 在蔬菜仓库中,共存放有 \(n\) 种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各方面因素,设计合理的销售方 ...
- NLog 配置
之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog. 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4n ...
- Visual Studio 代码风格约束
团队内部若能统一代码风格对于日后的项目维护大有裨益,但面对厚达十几甚至几十页的代码风格规范,开发人员难免产生抵触心理.Python和Go等在语言层面就对代码风格作了一定的约束,但C#并没有,为解决这个 ...
- [PHP] 数据结构-线性表的顺序存储结构PHP实现
1.PHP中的数组实际上是有序映射,可以当成数组,列表,散列表,字典,集合,栈,队列,不是固定的长度2.数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了3.想要函数的一个参数 ...