手把手教你搭建OpenVPN(保姆级教程)!

OpenVPN原理及部署使用

1. 简介

    VPN技术通过密钥交换、封装、认证、加密手段在公共网络上建立起私密的隧道,保障传输数据的完整性、私密性和有效性。OpenVPN是近年来新出现的开放源码项目,实现了SSL VPN的一种解决方案。

2.应用场景

有一些类似这样的情形或需求:

1、开发:通过OpenVPN让开发人员连接网站,进行开发测试(在家的时候)

2、运维:通过OpenVPN让运维连接内网服务器,或者是连接JUMPSERVER

在家里想进入公司网站的管理界面,但管理系统限制了仅允许来自公司IP可以访问想连接到某个特别网站的特别网络应用,但本地的ISP或路由节点不允许您去连接它本地的ISP或路由节点可能会监听您的数据而您不想被它拦截,想找一种可以跳过它的办法,您想访问的网站和应用是基于明文传输,但您希望这个线路是私密的和可靠的。这时候就需要用到VPN来实现。

3.OpenVPN服务端配置

3.1 环境准备

server IP
openvpn-server 公网:100.100.1.1
内网:10.100.240.3
client 能访问Internet

3.2 证书准备流程

1) 安装openvpn服务端、证书创建工具

#openvpn 服务端、证书工具安装
[root@openvpn-server ~]# yum install -y openvpn easy-rsa

#证书工具目录
[root@openvpn-server ~]# rpm -ql easy-rsa
/usr/share/easy-rsa/3.0.8/easyrsa
...

2) 服务器充当权威机构,创建ca证书

#路径太深,新建目录
[root@openvpn-server ~]# mkdir -p   /opt/easy-rsa 
[root@openvpn-server ~]# cp -a /usr/share/easy-rsa/3.0.8/* /opt/easy-rsa/
[root@openvpn-server ~]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /opt/easy-rsa/vars

#修改vars文件,配置默认参数值
[root@openvpn-server ~]# cat > /opt/easy-rsa/vars
if [ -z "$EASYRSA_CALLER" ]; then
 echo "You appear to be sourcing an Easy-RSA
'vars' file." >&2
 echo "This is no longer necessary and is
disallowed. See the section called" >&2
 echo "'How to use this file' near the top
comments for more details." >&2
 return 1
fi

set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"          # 国家
set_var EASYRSA_REQ_PROVINCE "Beijing"    # 省
set_var EASYRSA_REQ_CITY "ShangHai"       # 城市
set_var EASYRSA_REQ_ORG "zxc.com"         # 组织
set_var EASYRSA_REQ_EMAIL "123456@qq.com" # 邮箱
set_var EASYRSA_NS_SUPPORT "yes"
EOF

#配置完var后 检查 权威机构信息
[root@openvpn-server easy-rsa]# tree
.
|-- easyrsa
|-- openssl-easyrsa.cnf
|-- vars                  #var ca权威机构信息
`-- x509-types
    |-- ca
    |-- client
    |-- code-signing
    |-- COMMON
    |-- email
    |-- kdc
    |-- server
    `-- serverClient
1 directory, 11 files

#初始化,会在当前目录创建PKI目录,用于存储证书
[root@openvpn-server easy-rsa]# ./easyrsa init-pki
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars    #正在使用来自于vars

init-pki complete; you may now create a CA or requests.        #初始化完成 显示你可以尝试创建 CA证书
Your newly created PKI dir is: /opt/easy-rsa/pki               #初始化后的目录在 pki下面


#创建根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他可默认
[root@openvpn-server easy-rsa]# ./easyrsa build-ca
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017

Enter New CA Key Passphrase:                                   #密码1234
Re-Enter New CA Key Passphrase:                                #密码1234
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]:zxc.com                #域名即可

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/opt/easy-rsa/pki/ca.crt


#查看ca证书和私钥
[root@openvpn-server easy-rsa]# tree pki/
pki/
|-- ca.crt                      #ca证书
|-- certs_by_serial
|-- index.txt
|-- index.txt.attr
|-- issued
|-- openssl-easyrsa.cnf
|-- private
|   `-- ca.key                  #ca私钥
|-- renewed
|   |-- certs_by_serial
|   |-- private_by_serial
|   `-- reqs_by_serial
|-- reqs
|-- revoked
|   |-- certs_by_serial
|   |-- private_by_serial
|   `-- reqs_by_serial
|-- safessl-easyrsa.cnf
`-- serial

12 directories, 7 files

3) 创建server端证书

#创建server端证书和私钥文件
# 创建请求文件及服务端私钥,gen-req请求文件、server可以自定义、nopass表示不加密私钥文件,其他可默认
[root@openvpn-server easy-rsa]#  ./easyrsa gen-req server nopass

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017
Generating a 2048 bit RSA private key
....................................................+++
......................................+++
writing new private key to '/opt/easy-rsa/pki/easy-rsa-5343.MYL42w/tmp.4slsGH'
-----
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]:

Keypair and certificate request completed. Your files are:
req: /opt/easy-rsa/pki/reqs/server.req               #server.req 用于创建证书(证书资料) 
key: /opt/easy-rsa/pki/private/server.key            #server私钥文件




#给server端证书签名,sign签名、第一个server是服务器类型、第二个server是需要签名的证书名称
#首先是对一些信息的确认,输入yes,然后输入创建ca根证书时设置的密码
[root@openvpn-server easy-rsa]# ./easyrsa sign server server

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017


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 825 days:

subject=
    commonName                = server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes                                  #输入yes
Using configuration from /opt/easy-rsa/pki/easy-rsa-7938.RZEfrP/tmp.NCVg6D
Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:        #输入创建ca时设置的密码
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until May  7 15:26:38 2026 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /opt/easy-rsa/pki/issued/server.crt    #生成服务端证书


#验证是否创建了server的证书
[root@openvpn-server easy-rsa]# tree pki/
pki/
|-- ca.crt                                    #ca证书
|-- certs_by_serial
|   `-- 63D708FF122452B7558651207A1AF01B.pem
|-- index.txt
|-- index.txt.attr
|-- index.txt.attr.old
|-- index.txt.old
|-- issued
|   `-- server.crt                           #server证书 
|-- openssl-easyrsa.cnf
|-- private
|   |-- ca.key
|   `-- server.key                           #server私钥 
|-- renewed
|   |-- certs_by_serial
|   |-- private_by_serial
|   `-- reqs_by_serial
|-- reqs
|   `-- server.req
|-- revoked
|   |-- certs_by_serial
|   |-- private_by_serial
|   `-- reqs_by_serial
|-- safessl-easyrsa.cnf
|-- serial
`-- serial.old

12 directories, 14 files

4) 创建client端证书

#创建client端证书和私钥文件
# 创建请求文件及服务端私钥,gen-req请求文件、client可以自定义、nopass表示不加密私钥文件,其他可默认
[root@openvpn-server easy-rsa]# ./easyrsa gen-req client nopass


Common Name (eg: your user, host, or server name) [client]:    #直接回车

Keypair and certificate request completed. Your files are:
req: /opt/easy-rsa/pki/reqs/client.req
key: /opt/easy-rsa/pki/private/client.key


#给client端证书签名,sign签名、第一个client是服务器类型、第二个client是需要签名的证书名称
#给client端证书签名时,首先是对一些信息的确认,可以输入yes,然后创建ca根证书时设置的密码
[root@openvpn-server easy-rsa]# ./easyrsa sign client client
......
Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /opt/easy-rsa/pki/easy-rsa-32687.69KFgb/tmp.y1hokA
Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:
......

Certificate created at: /opt/easy-rsa/pki/issued/client.crt

5) 创建dh-pem算法文件和目录汇总

#创建Diffie-Hellman文件,秘钥交换时的Diffie-Hellman算法
[root@openvpn-server easy-rsa]# ./easyrsa gen-dh
.......
DH parameters of size 2048 created at /opt/easy-rsa/pki/dh.pem


#目录汇总
[root@openvpn-server easy-rsa]# tree
.
|-- easyrsa
|-- openssl-easyrsa.cnf
|-- pki
|   |-- ca.crt                           #ca证书   
|   |-- certs_by_serial
|   |   |-- 58D4C3BEB5AA4931D7CE3D9D0119C3CF.pem
|   |   `-- 63D708FF122452B7558651207A1AF01B.pem
|   |-- dh.pem                          #df算法文件
|   |-- index.txt
|   |-- index.txt.attr
|   |-- index.txt.attr.old
|   |-- index.txt.old
|   |-- issued
|   |   |-- client.crt                  #client证书
|   |   `-- server.crt                  #server证书
|   |-- openssl-easyrsa.cnf
|   |-- private
|   |   |-- ca.key
|   |   |-- client.key                  #客户端私钥
|   |   `-- server.key                  #服务端私钥
|   |-- renewed
|   |   |-- certs_by_serial
|   |   |-- private_by_serial
|   |   `-- reqs_by_serial
|   |-- reqs
|   |   |-- client.req
|   |   `-- server.req
|   |-- revoked
|   |   |-- certs_by_serial
|   |   |-- private_by_serial
|   |   `-- reqs_by_serial
|   |-- safessl-easyrsa.cnf
|   |-- serial
|   `-- serial.old
|-- vars
`-- x509-types
    |-- ca
    |-- client
    |-- code-signing
    |-- COMMON
    |-- email
    |-- kdc
    |-- server
    `-- serverClient

6) 小结

1、创建vars文件(伪装ca机构),创建ca证书 build-ca
2、创建server证书和私钥
gen-req server nopass
sign server server
3、创建client证书和私钥
gen-req client nopass
sign client client
4、dh.pem 文件

3.3 服务端配置文件

#配置文件中 各种路径默认相对于 /etc/openvpn
[root@openvpn-server ~]# tree -F /etc/openvpn/
/etc/openvpn/
|-- client/
`-- server/

2 directories, 0 files

#服务端配置文件
[root@openvpn-server ~]# vim /etc/opnvpn/server/server.conf
[root@openvpn-server server]# cat server.conf
port 1194                               #端口
proto udp                               #协议
dev tun                                 #采用路由隧道模式tun
ca ca.crt                               #ca证书文件位置   /etc/openvpn   /etc/opnevpn/server
cert server/server.crt                  #服务端公钥名称 /etc/openvpn
key server/server.key                   #服务端私钥名称 /etc/openvpn
dh server/dh.pem                        #加密算法文件, 交换证书 校验算法 /etc/openvpn
server 192.168.1.0 255.255.255.0        #给客户端分配地址池(ip地址范围),注意:不能和VPN服务器内网网段有相同
push "route 10.100.240.0 255.255.255.0" #客户端连接后,推送给客户端的路由规则
                                        #客户端想访问10.100.240.0/24网段联系openvpn服务端
#ifconfig-pool-persist ipp.txt          #地址池记录文件位置 未来让openvpn 客户端固定ip地址使用的.
keepalive 10 120                        #存活时间,10秒ping一次,120 如未收到响应则视为断线
max-clients 100                         #最多允许100个客户端连接
status /var/log/openvpn-status.log      #日志记录位置openvpn状态
log /var/log/openvpn.log                #openvpn日志记录位置
verb 3                                  #verbose 日志输出级别   数字越大越详细最多11(debug)
client-to-client                        #客户端与客户端之间支持通信
persist-key                             #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys 对私钥进行缓存.
persist-tun                             #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup
duplicate-cn                            #客户端密钥(证书和私钥)是否可以重复



#复制证书及密钥
[root@openvpn-server server]# sudo vim server.conf
[root@openvpn-server server]# cd /opt/easy-rsa/pki/
[root@openvpn-server pki]# cp ca.crt /etc/openvpn/
[root@openvpn-server pki]# cp dh.pem   /etc/openvpn/server/
[root@openvpn-server pki]# cp issued/server.crt private/server.key /etc/openvpn/server/

#修改systemctl 配置,因为新建的文件夹通过systemctl启动openvpn时找不到路径
[root@openvpn-server server]# cat /usr/lib/systemd/system/openvpn@.service
[Unit]
Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
After=network.target

[Service]
Type=notify
PrivateTmp=true
ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/ --config %i/%i.conf   #增加%i即可,只修改这一行
#%i/%i  就是运行systemctl start openvpn@server时,会把@后面的server传给%i,就会读到server/server.conf

[Install]
WantedBy=multi-user.target

#重新加载
[root@openvpn-server server]# systemctl daemon-reload

#启动和加入开机自启
[root@openvpn-server server]# systemctl enable openvpn@server
[root@openvpn-server server]# systemctl start openvpn@server

#检查进程与端口
[root@openvpn-server openvpn]# ss -lntup |grep 1194
udp    UNCONN     0      0         *:1194                  *:*                  users:(("openvpn",pid=31362,fd=5))

[root@openvpn-server openvpn]#  ps -ef |grep openvpn
root       960     1  0 Feb02 ?        00:00:00 /sbin/dhclient -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H openvpn-server eth0
root     31362     1  0 03:05 ?        00:00:00 /usr/sbin/openvpn --cd /etc/openvpn/ --config server/server.conf
root     31912 10767  0 03:07 pts/1    00:00:00 grep --color=auto openvpn

[root@openvpn-server openvpn]# ip a s tun0
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 192.168.1.1 peer 192.168.1.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::6813:2c79:d971:d16e/64 scope link flags 800
       valid_lft forever preferred_lft forever

3.4 客户端配置文件

1) windows

#openvpn客户端下载:https://swupdate.openvpn.org/community/releases/OpenVPN-2.6.8-I001-amd64.msi

#把需要的证书先放到client,方便下载
[root@openvpn-server openvpn]# cp /opt/easy-rsa/pki/private/client.key /opt/easy-rsa/pki/issued/client.crt /etc/openvpn/client/

#创建客户端配置文件
[root@openvpn-server openvpn]# cat /etc/openvpn/client/clinet.ovpn
client                  #指定当前VPN是客户端
dev tun                 #使用tun隧道传输协议
proto udp               #使用udp协议传输数据
remote 100.100.1.1 1194 #openvpn服务器IP地址(公网)、端口号
resolv-retry infinite   #断线自动重新连接,在网络不稳定的情况下非常有用
nobind                  #不绑定本地特定的端口号
ca ca.crt               #指定CA证书的文件路径
cert client.crt         #指定当前客户端的证书文件路径
key client.key          #指定当前客户端的私钥文件路径
verb 3                  #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
persist-key             #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys

#安装完客户端
在C:Program FilesOpenVPNconfigzxc.com
ca.crt           #ca证书
client.crt       #客户端证书
client.key       #客户端私钥
client.ovpn      #客户端配置文件 类似于client.conf

有多个VPN,可以新建configzxc1.com目录

2) OpenVPN客户端配置(linux端)

root@openvpn-client ~]# cat /etc/openvpn/client/clinet.conf
client                  #指定当前VPN是客户端
dev tun                 #使用tun隧道传输协议
proto udp               #使用udp协议传输数据
remote 100.100.1.1 1194 #openvpn服务器IP地址(公网)、端口号
resolv-retry infinite   #断线自动重新连接,在网络不稳定的情况下非常有用
nobind                  #不绑定本地特定的端口号
ca ca.crt               #指定CA证书的文件路径
cert client/client.crt  #指定当前客户端的证书文件路径
key client/client.key   #指定当前客户端的私钥文件路径
verb 3                  #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细


#修改systemctl 配置
[root@openvpn-client ~]# cat /usr/lib/systemd/system/openvpn@.serv
[Unit]
Description=OpenVPN Robust And Highly Flexible
Tunneling Application On %I
After=network.target

[Service]
Type=notify
PrivateTmp=true
ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/ --config %i/%i.conf   #增加%i即可,只修改这一行
#%i/%i  就是运行systemctl start openvpn@client时,会把@后面的client传给%i,就会读到client/client.conf

[Install]
WantedBy=multi-user.target

#重新加载
[root@openvpn-client ~]# systemctl daemon-reload

#启动和加入开机自启
[root@openvpn-client ~]# systemctl enable openvpn@client
[root@openvpn-client ~]# systemctl start openvpn@client

#检查进程与端口
[root@openvpn-client ~]# ss -lntup |grep openvpn
udp   UNCONN     0      0         *:53781               *:*                   users:(("openvpn",pid=12553,fd=3))

[root@openvpn-client ~]# ip a
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 192.168.1.6 peer 192.168.1.5/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::b198:27bb:5967:356b/64 scope link flags 800 
       valid_lft forever preferred_lft forever
 

3)效果

20240916012340954

20240916012341296

4、OpenVPN加密/认证

考虑到万一证书被泄露或者丢失,外人直接就可以连接到内网,所以再加上 用户/密码 验证

4.1 先配置服务端支持密码认证

[root@openvpn-server ~]#  cat /etc/openvpn/server/server.conf
port 1194                               #端口
proto udp                               #协议
dev tun                                 #采用路由隧道模式tun
ca ca.crt                               #ca证书文件位置   /etc/openvpn   /etc/opnevpn/server
cert server/server.crt                  #服务端公钥名称 /etc/openvpn
key server/server.key                   #服务端私钥名称 /etc/openvpn
dh server/dh.pem                        #加密算法文件, 交换证书 校验算法 /etc/openvpn
server 192.168.1.0 255.255.255.0        #给客户端分配地址池(ip地址范围),注意:不能和VPN服务器内网网段有相同
push "route 10.100.240.0 255.255.255.0" #客户端连接后,推送给客户端的路由规则  #客户端想访问10.100.240.0/24网段联系openvpn服务端
#ifconfig-pool-persist ipp.txt          #地址池记录文件位置 未来让openvpn 客户端固定ip地址使用的.
keepalive 10 120                        #存活时间,10秒ping一次,120 如未收到响应则视为断线
max-clients 100                         #最多允许100个客户端连接
status /var/log/openvpn-status.log      #日志记录位置openvpn状态
log /var/log/openvpn.log                #openvpn日志记录位置
verb 3                                  #verbose 日志输出级别   数字越大越详细最多11(debug)
client-to-client                        #客户端与客户端之间支持通信
persist-key                             #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys 对私钥进行缓存.
persist-tun                             #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup
duplicate-cn                            #客户端密钥(证书和私钥)是否可以重复

#下面是要用户认证时才配置
script-security 3                       #允许使用自定义脚本
auth-user-pass-verify /etc/openvpn/check.sh via-env  #指定认证脚本
username-as-common-name                 #用户密码登陆方式验证

4.2 编写用户验证 check.sh 脚本

[root@openvpn-server ~]# cat /etc/openvpn/check.sh
#!/bin/bash
PASSFILE="/etc/openvpn/openvpnfile"   #密码文件 用户名 密码明文
LOG_FILE="/var/log/openvpn-password.log"  #用户登录情况的日志
TIME_STAMP=`date "+%Y-%m-%d %T"`
if [ ! -r "${PASSFILE}" ]; then
    echo "${TIME_STAMP}: Could not open password file "${PASSFILE}" for reading." >> ${LOG_FILE}
    exit 1
fi
CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}'    ${PASSFILE}`
if [ "${CORRECT_PASSWORD}" = "" ]; then
    echo "${TIME_STAMP}: User does not exist: username="${username}",password="${password}"." >> ${LOG_FILE}
    exit 1
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
    echo "${TIME_STAMP}: Successful authentication: username="${username}"." >> ${LOG_FILE}
    exit 0
fi
echo "${TIME_STAMP}: Incorrect password: username="${username}", password="${password}"." >> ${LOG_FILE}
exit 1

4.3 脚本授权

[root@openvpn-server ~]# chmod 700 /etc/openvpn/check.sh

4.4 添加用户

[root@openvpn-server ~]# cat /etc/openvpn/openvpnfile
zxc 123456

4.5 重启openvpn服务

[root@openvpn-server ~]# systemctl restart openvpn@server

4.6 客户端只需要在配置文件加个参数

在client.ovpn或者client.conf文件最后一行添加
auth-user-pass

4.7 最终效果

20240916012342744

5、OpenVPN连接内网其它服务器

#先在openvpn服务端开启内核转发。
[root@openvpn-server ~]# echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf
[root@openvpn-server ~]# sysctl -p
net.ipv4.ip_forward = 1



#客户端尝试ping其他内网服务器,会显示请求超时。
[c:~]$ ping 10.100.240.14 -t
正在 Ping 10.100.240.14 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。
请求超时。
请求超时。

#服务端抓包,发现只有请求的包,没有响应的包。
[root@openvpn-server ~]# tcpdump -i eth0 host 10.100.240.14
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:15:48.527017 IP 192.168.1.6 > 10.100.240.14: ICMP echo request, id 1, seq 738, length 40
16:15:53.087817 IP 192.168.1.6 > 10.100.240.14: ICMP echo request, id 1, seq 739, length 40
16:15:58.101622 IP 192.168.1.6 > 10.100.240.14: ICMP echo request, id 1, seq 740, length 40
16:16:03.083202 IP 192.168.1.6 > 10.100.240.14: ICMP echo request, id 1, seq 741, length 40

#一般都是10.100.240.14上没有192.168.1.0的路由,在10.100.240.14上添加路由
[root@localhost ~]# route add  -net   192.168.1.0/24   gw 10.100.240.3

#在重新连vpn,再ping 10.100.240.14 会通
[c:~]$ ping 10.100.240.14 -t
正在 Ping 10.100.240.14 具有 32 字节的数据:
来自 10.100.240.14 的回复: 字节=32 时间=1ms TTL=64
来自 10.100.240.14 的回复: 字节=32 时间<1ms TTL=64
来自 10.100.240.14 的回复: 字节=32 时间=1ms TTL=64
来自 10.100.240.14 的回复: 字节=32 时间<1ms TTL=64

以上就是手把手教你搭建OpenVPN(保姆级教程)!

 

阅读剩余
THE END