CentOS 7 搭建OpenVPN服务器

释放双眼,带上耳机,听听看~!
鉴于春节假期,大家方便在家进行值守,所以临时整理了一份openvpn文档,分享给大家。文章主要介绍在CentOS 7 服务器上安装与配置OpenVPN服务器,以及如何编写客户端连接到新建立的OpenVPN服务器上所需的配置文件。
🤖 由 ChatGPT 生成的文章摘要

OpenVPN 设置账号密码登录


OpenVPN的工作原理

在Linux2.4版本以上,操作系统支持一个名为tun的设备,tun设备的驱动程序中包含两个部分,一部分是字符设备驱动,一部分是网卡驱动。网卡的驱动把从TCP/IP协议栈收到的数据包结构skb放于tun设备的读取队列,用户进程通过调用字符设备接口read获得完整的IP数据包,字符驱动read函数的功能是从设备的读取队列读取数据,将核心态的skb传递给用户;反过来字符驱动write函数给用户提供了把用户态的数据写入核心态的接口,write函数把用户数据写入核心空间并穿入TCP/IP协议栈。该设备既能以字符设备的方式被读写,作为系统的虚拟网卡,也具有和物理网卡相同的特点:能够配置IP地址和路由。对虚拟网卡的使用是OpenVPN实现其SSL VPN功能的关键。

OpenVPN服务器一般需要配置一个虚拟IP地址池和一个自用的静态虚拟IP地址(静态地址和地址池必须在同一个子网中),然后为每一个成功建立SSL连接的客户端动态分配一个虚拟IP地址池中未分配的地址。这样,物理网络中的客户端和OpenVPN服务器就连接成一个虚拟网络上的星型结构局域网,OpenVPN服务器成为每个客户端在虚拟网络上的网关。OpenVPN服务器同时提供对客户端虚拟网卡的路由管理。当客户端对OpenVPN服务器后端的应用服务器的任何访问时,数据包都会经过路由流经虚拟网卡,OpenVPN程序在虚拟网卡上截获数据IP报文,然后使用SSL协议将这些IP报文封装起来,再经过物理网卡发送出去。OpenVPN的服务器和客户端在虚拟网卡之上建立起一个虚拟的局域网络,这个虚拟的局域网对系统的用户来说是透明的。

OpenVPN的服务器和客户端支持tcp和udp两种连接方式,只需在服务端和客户端预先定义好使用的连接方式(tcp或udp)和端口号,客户端和服务端在这个连接的基础上进行SSL握手。连接过程包括SSL的握手以及虚拟网络上的管理信息,OpenVPN将虚拟网上的网段、地址、路由发送给客户端。连接成功后,客户端和服务端建立起SSL安全连接,客户端和服务端的数据都流入虚拟网卡做SSL的处理,再在tcp或udp的连接上从物理网卡发送出去

环境说明

192.168.0.10外网     10.4.82.10 内网

系统环境
[root@vpn ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
[root@vpn ~]# uname -r
3.10.0-1062.9.1.el7.x86_64

网卡为双网卡
[root@vpn ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.11  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::6b5a:9ab8:1bb:5f8d  prefixlen 64  scopeid 0x20
        ether 00:0c:29:32:b2:36  txqueuelen 1000  (Ethernet)
        RX packets 15104  bytes 16993218 (16.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8661  bytes 889872 (869.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.4.82.11  netmask 255.255.255.0  broadcast 10.4.82.255
        inet6 fe80::20c:29ff:fe32:b240  prefixlen 64  scopeid 0x20
        ether 00:0c:29:32:b2:40  txqueuelen 1000  (Ethernet)
        RX packets 202  bytes 18735 (18.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 656 (656.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

首先我们先使用easy-rsa制作openVPN证书

下载并解压easy-rsa软件包

mkdir /data/tools -p 
wget -P /data/tools http://down.i4t.com/easy-rsa.zip
unzip -d /usr/local /data/tools/easy-rsa.zip

在开始制作CA证书之前,我们还需要编辑vars文件,修改如下相关选项

cd /usr/local/easy-rsa-old-master/easy-rsa/2.0/

vim vars
export KEY_COUNTRY="cn"
export KEY_PROVINCE="BJ"
export KEY_CITY="BJ"
export KEY_ORG="abcdocker"
export KEY_EMAIL="cyh@i4t.com"
export KEY_CN=abc
export KEY_NAME=abc
export KEY_OU=abc

#行数大约67行开始,主要是修改默认的注册信息,比如注册公司、公司名称、部门、国家城市等

注意:以上内容,我们也可以使用系统默认的,也就是说不进行修改也是可以使用的

然后使用使环境变量生效

#初始化环境边看
source vars
./clean-all

#注意:执行clean-all命令会在当前目录下创建一个名词为keys的目录

接下来开始正式制作CA证书,命令如下

./build-ca

# 生成根证书ca.crt和根密钥ca.key
#因为在vars中填写了证书的基本信息,所以这里一路回车即可

这时我们可以查看keys目录,已经帮我们生成ca.crt和ca.key两个文件,其中ca.crt就是我们的证书文件

[root@abc01 2.0]# ls keys
ca.crt  ca.key  index.txt  serial

制作Server端证书

为服务端生成证书和密钥

#一直回车,2个Y

[root@abc01 2.0]# ./build-key-server server
....
An optional company name []:
Using configuration from /usr/local/easy-rsa-old-master/easy-rsa/2.0/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'cn'
stateOrProvinceName   :PRINTABLE:'BJ'
localityName          :PRINTABLE:'BJ'
organizationName      :PRINTABLE:'abcdocker'
organizationalUnitName:PRINTABLE:'abc'
commonName            :PRINTABLE:'abc'
name                  :PRINTABLE:'abc'
emailAddress          :IA5STRING:'cyh@i4t.com'
Certificate is to be certified until Jan 31 14:01:35 2030 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

#这里的server就是我们server端的证书 

查看新生成的证书

[root@abc01 2.0]# ls keys
01.pem   abc.key  index.txt       serial
server.crt  ca.crt   index.txt.attr  serial.old
server.csr  ca.key   index.txt.old

这里我们已经生成了server.crt、server.key、server.csr三个文件,其中server.crt和server.key两个文件是我们需要使用的


制作Client端证书

这里我们创建2个用户,分别为client1和client2

#每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
#为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key client1
./build-key client2

每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只可以一个客户端连接(可以修改配置文件)

现在为服务器生成加密交换时的Diffie-Hellman文件

./build-dh
# 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)

证书生成完毕

[root@abc01 2.0]# ll keys
total 84
-rw-r--r-- 1 root root 7997 Feb  3 09:01 01.pem
-rw-r--r-- 1 root root 7880 Feb  3 09:09 02.pem
-rw-r--r-- 1 root root 7997 Feb  3 09:01 abc.crt
-rw-r--r-- 1 root root 1765 Feb  3 09:01 abc.csr
-rw------- 1 root root 3272 Feb  3 09:01 abc.key
-rw-r--r-- 1 root root 2293 Feb  3 09:01 ca.crt
-rw------- 1 root root 3272 Feb  3 09:01 ca.key
-rw-r--r-- 1 root root  424 Feb  3 09:06 dh2048.pem
-rw-r--r-- 1 root root  211 Feb  3 09:09 index.txt
-rw-r--r-- 1 root root   21 Feb  3 09:09 index.txt.attr
-rw-r--r-- 1 root root   21 Feb  3 09:01 index.txt.attr.old
-rw-r--r-- 1 root root  105 Feb  3 09:01 index.txt.old
-rw-r--r-- 1 root root    3 Feb  3 09:09 serial
-rw-r--r-- 1 root root    3 Feb  3 09:01 serial.old
-rw-r--r-- 1 root root 7880 Feb  3 09:09 test.crt
-rw-r--r-- 1 root root 1765 Feb  3 09:09 test.csr
-rw------- 1 root root 3272 Feb  3 09:09 test.key

其中包含了一个test用户和abc用户的证书

其中只有.crt和.key文件是我们需要使用的


安装OpenVPN

安装vpn的方法有2种,一种是使用yum安装,另外一种是编译安装。这两个我们选择一个就可以

编译安装

#安装依赖包
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
yum install -y lzo lzo-devel openssl openssl-devel pam pam-devel net-tools git lz4-devel


#下载openVPN软件包
wget -P /data/tools http://down.i4t.com/openvpn-2.4.7.tar.gz
cd /data/tools

#安装openVPN
tar zxf openvpn-2.4.7.tar.gz
cd openvpn-2.4.7
./configure --prefix=/usr/local/openvpn-2.4.7
make
make install

# 创建软连接
ln -s /usr/local/openvpn-2.4.7 /usr/local/openvpn

yum安装

OpenVPN需要安装EPEL

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache

yum 安装openVPN

yum install -y openvpn

配置OpenVPN服务端

我们需要创建openVPN文件目录和证书目录

# openVPN配置文件目录,yum安装默认存在
mkdir /etc/openvpn

#openvpn证书目录
mkdir /etc/openvpn/keys

生成tls-auth key并将其拷贝到证书目录中(防DDos攻击、UDP淹没等恶意攻击)

#编译安装执行此句
/usr/local/openvpn/sbin/openvpn --genkey --secret ta.key

# yum安装执行此句
openvpn --genkey --secret ta.key

#将本地的ta.key移动到openVPN证书目录
mv ./ta.key /etc/openvpn/keys/

将我们上面生成的CA证书和服务端证书拷贝到证书目录中

$ cp /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/{server.crt,server.key,ca.crt,dh2048.pem} /etc/openvpn/keys/

[root@k8s-01 ~]# ll /etc/openvpn/keys/
total 24
-rw-r--r-- 1 root root 2342 Feb  3 12:48 ca.crt
-rw-r--r-- 1 root root  424 Feb  3 12:48 dh2048.pem
-rw-r--r-- 1 root root 8089 Feb  3 12:48 server.crt
-rw------- 1 root root 3272 Feb  3 12:48 server.key
-rw------- 1 root root  636 Feb  3 12:47 ta.key


#abc和test为我们client端用户的证书

拷贝OpenVPN配置文件

# 编译安装
cp /data/tools/openvpn-2.4.7/sample/sample-config-files/server.conf /etc/openvpn/

# yum安装
cp /usr/share/doc/openvpn-2.4.7/sample/sample-config-files/server.conf /etc/openvpn/

接下来我们来配置服务端的配置文件

$ cat /etc/openvpn/server.conf 
port 1194       #openVPN端口
proto tcp       #tcp连接
dev tun         #生成tun0虚拟网卡

ca keys/ca.crt      #相关证书配置路径(可以修改为全路径/etc/openvpn/keys)
cert keys/server.crt
key keys/server.key  # This file should be kept secret
dh keys/dh2048.pem

server 10.4.82.0 255.255.255.0   #默认虚拟局域网网段,不要和实际的局域网冲突就可以
ifconfig-pool-persist ipp.txt     

push "route 10.4.82.0 255.255.255.0"    #可以通过iptables进行路由的转发
client-to-client                 #如果客户端都是用一个证书和密钥连接VPN,需要打开这个选项
duplicate-cn
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
comp-lzo

persist-key
persist-tun

status openvpn-status.log   #状态日志路径
log-append  openvpn.log     #运行日志
verb 3                      #调试信息级别



#如果需要接入ldap,需要在server.conf下添加如下2行
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf cn=%u"
client-cert-not-required

#如何环境和我相同,可以直接cp我的配置文件

开启内核路由转发功能

echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
sysctl -p

如果有iptables可以开启iptables策略

iptables -P FORWARD ACCEPT
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.4.82.0/24 -j MASQUERADE

启动openvpn服务

$ cd /etc/openvpn/
$ /usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/server.conf

检查服务

$ netstat -lntup|grep 1194
tcp        0      0 0.0.0.0:1194            0.0.0.0:*               LISTEN      48091/openvpn       

设置开机启动

echo "/usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/server.conf > /dev/null 2>&1 &" >> /etc/rc.local

客户端连接测试

无论我们是在Windows还是Linux OS上Client端的配置,都需要将Client证书、CA证书以及Client配置文件下载下来

现在我们需要先配置一下client.conf

cp /data/tools/openvpn-2.4.7/sample/sample-config-files/client.conf /root/

#修改如下,并将client.conf修改为client.ovpn
$ cat /root/client.conf
client
dev tun
proto tcp
remote 192.168.0.10 1194    #openvpn服务器的外网IP和端口(可以写多个做到高可用)
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt         #用户的证书
key client1.key

tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo
verb 3


#比较重点的就是修改remote 地址,这里的地址为server
cert key,我们这里使用用户的证书,所以证书也应当修改为client1.crt和client1.key
tls-auth 因为使用加密协议,所以ta.key也需要下载下来

修改后缀并导出

[root@vpn ~]# mv client.conf client.ovpn
[root@vpn ~]# sz client.ovpn 

#同时还需要导出几个证书
mv client.conf client.ovpn
sz /root/client.ovpn
sz /etc/openvpn/keys/ca.crt 
sz /etc/openvpn/keys/ta.key 
sz /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/client1.crt 
sz /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/client1.key 

添加用户

以后我们如果想添加用户只需要到cd /usr/local/easy-rsa-old-master/easy-rsa/2.0目录下执行./build-key 用户名,在将keys目录下生成的用户名.crt和key导出,修改一下client.ovpn的用户key名称即可


Windows

客户端需要证书如下

CentOS 7 搭建OpenVPN服务器

Windows客户端下载

http://down.i4t.com/openvpn-install-2.4.7-I606-Win10.exe

http://down.i4t.com/openvpn-install-2.4.7-I606-Win7.exe

打开浏览器即可下载

安装步骤,直接C盘就可以了,文件很小~

CentOS 7 搭建OpenVPN服务器

疯狂下一步即可

CentOS 7 搭建OpenVPN服务器

安装完成后

CentOS 7 搭建OpenVPN服务器

接下来我们需要替换一下证书

点击桌面的logo,右击属性

CentOS 7 搭建OpenVPN服务器

点击打开文件位置

CentOS 7 搭建OpenVPN服务器

点击上方OpenVPN从新选择目录

CentOS 7 搭建OpenVPN服务器

选择config目录

CentOS 7 搭建OpenVPN服务器

将config目录下文件全部删除

CentOS 7 搭建OpenVPN服务器

然后将我们导出的5个证书复制过去

CentOS 7 搭建OpenVPN服务器

其中client1.*为client1用户的证书

现在我们进行启动openvpn客户端,进行连接

双击桌面OpenVPN

右击图标,选择连接

CentOS 7 搭建OpenVPN服务器

CentOS 7 搭建OpenVPN服务器

CentOS 7 搭建OpenVPN服务器

这里可以看到已经连接成功

CentOS 7 搭建OpenVPN服务器


Mac

复制链接到浏览器,下载软件包

http://down.i4t.com/Tunnelblick_3.8.1_build_5400.dmg

我们直接点开client.ovpn就可以自动链接

CentOS 7 搭建OpenVPN服务器

CentOS 7 搭建OpenVPN服务器

成功后会有下面的流量图

CentOS 7 搭建OpenVPN服务器

配置文件打开方式

CentOS 7 搭建OpenVPN服务器

这时候网络已经通了

CentOS 7 搭建OpenVPN服务器

给TA打赏
共{{data.count}}人
人已打赏
KubernetesLinux

2021 运维面试宝典

2019-10-27 23:06:26

Linux

OpenVPN 设置账号密码登录

2020-2-4 3:56:05

65 条回复 A文章作者 M管理员
  1. ZOR.

    启动openvpn服务 显示找不到/usr/local/openvpn/sbin/openvpn怎么回事?博主可以回答一下吗

  2. Think

    您好,按照您的教程,vpn服务器和客户端顺利搭建,客户端也显示连接成功,但始终不能ssh连上服务器,具体情况是:由于服务器只有单网卡,我就在服务器上启动了个虚拟网卡tap0用于vpn连接,IP地址是10.4.82.11,服务器的物理网卡ip是10.1.28.217,配置好vpn后,我在自己笔记本上启动vpn客户端,vpn显示连接成功,vpn网卡获取到地址是10.4.82.6,但是我始终连不上服务器,也不能ping通10.4.82.11。我在本地笔记本也添加过路由条目,可还是一直连不上,能帮我看看问题出在哪个地方吗,谢谢

    • Think

      也是怀疑路由没有配置好,尝试了在笔记本上添加了路由,但都不好使,一直是ping不通,请问下有什么解决办法或是请指导下路由该如何配置,谢谢!

    • Think

      这是笔记本上路由

    • 新闻联播老司机

      openvpn双网卡,一个内网 一个当工网,在添加一个内网ip的nginx。 这样你电脑拨号可以访问NGINX就算正常。 你记得把VMware的网卡配置好

  3. Www

    [root@openvpn openvpn-2.4.7]# ./configure –prefix=/usr/local/openvpn-2.4.7
    checking for a BSD-compatible install… /usr/bin/install -c
    checking whether build environment is sane… yes
    checking for a thread-safe mkdir -p… /usr/bin/mkdir -p
    checking for gawk… gawk
    checking whether make sets $(MAKE)… yes
    checking whether make supports nested variables… yes
    checking build system type… x86_64-pc-linux-gnu
    checking host system type… x86_64-pc-linux-gnu
    checking whether make supports the include directive… yes (GNU style)
    checking for gcc… no
    checking for cc… no
    checking for cl.exe… no
    configure: error: in `/data/tools/openvpn-2.4.7′:
    configure: error: no acceptable C compiler found in $PATH
    See `config.log’ for more details

    您好,编译安装的时候报这个错咋整?

  4. Www

    我执行yum -y install gcc后编译安装没有报错

  5. Www

    Sat May 23 21:39:48 2020 OpenVPN 2.4.9 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Apr 16 2020
    Sat May 23 21:39:48 2020 Windows version 6.2 (Windows 8 or greater) 64bit
    Sat May 23 21:39:48 2020 library versions: OpenSSL 1.1.1f 31 Mar 2020, LZO 2.10
    Sat May 23 21:39:48 2020 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
    Sat May 23 21:39:48 2020 Need hold release from management interface, waiting…
    Sat May 23 21:39:48 2020 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
    Sat May 23 21:39:48 2020 MANAGEMENT: CMD ‘state on’
    Sat May 23 21:39:48 2020 MANAGEMENT: CMD ‘log all on’
    Sat May 23 21:39:48 2020 MANAGEMENT: CMD ‘echo all on’
    Sat May 23 21:39:48 2020 MANAGEMENT: CMD ‘bytecount 5’
    Sat May 23 21:39:48 2020 MANAGEMENT: CMD ‘hold off’
    Sat May 23 21:39:48 2020 MANAGEMENT: CMD ‘hold release’
    Sat May 23 21:39:48 2020 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
    Sat May 23 21:39:48 2020 WARNING: Your certificate is not yet valid!
    Sat May 23 21:39:48 2020 Outgoing Control Channel Authentication: Using 160 bit message hash ‘SHA1’ for HMAC authentication
    Sat May 23 21:39:48 2020 Incoming Control Channel Authentication: Using 160 bit message hash ‘SHA1’ for HMAC authentication
    Sat May 23 21:39:48 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]192.168.0.108:1194
    Sat May 23 21:39:48 2020 Socket Buffers: R=[65536->65536] S=[65536->65536]
    Sat May 23 21:39:48 2020 UDP link local: (not bound)
    Sat May 23 21:39:48 2020 UDP link remote: [AF_INET]192.168.0.108:1194
    Sat May 23 21:39:48 2020 MANAGEMENT: >STATE:1590241188,WAIT,,,,,,
    不好装啊,服务端1194没问题,客户端连接不上。。。

  6. Www

    我用了个一键安装脚本好用了
    wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

  7. 01turing

    请问下如果服务器没有公网ip可以搭建 OpenVPN 么

    • 新闻联播老司机

      没有公网IP你搭建可以,但是同样只可以内网访问。 测试的话虚拟机双网卡就可以,如果夸公网了肯定还需要公网IP

  8. Qr

    楼主,能否给一个安卓版本的apk包。

  9. Qr

    你好,请问安卓端的试过吗,能正常连接到服务器吗。 apk能给一个吗。

  10. Qr

    服务器端,可以装在阿里云ecs上吗。

  11. Qr

    怎么评论了,就删除了。呢。

  12. 吶a给ㄋ誰

    我遇到这个问题,就是,当openVPN服务端启动后,内网机器之间就么办法ping通了,停止服务后又恢复正常,楼主这是什么原因呢,

    • 新闻联播老司机

      先看看日志有报错吗,其次我感觉是不是你设置的网段问题。 最好不好和内网冲突了,后面可以加路由。vpn的网段最好和内网网段分开

    • 吶a给ㄋ誰

      对的,我的vpn地址和内网地址是在同一个网段的, 那个添加路由的方法,方便说下嘛,

    • 新闻联播老司机

      主要参数
      push “route 10.4.82.0 255.255.255.0” #可以通过iptables进行路由的转发
      server 10.4.82.0 255.255.255.0 #默认虚拟局域网网段,不要和实际的局域网冲突就可以
      上面写了

  13. 昨天有雨

    这是我看到的最完整的openVPN搭建文档了,谢谢楼主分享.我这边的情况和楼主的使用场景不太一样,我这边是有一台在阿里云上的服务器设置了安全组只有内网的环境可以访问到这台服务器外网的ip访问不到,openVPN怎么配置才能让外网也能访问到这台机器呢?

    按照楼主的教程在阿里云的服务器上搭建了openServer,内网环境下本地可以连通vpn.但是外网环境连不上vpn,我觉得是阿里云安全组设置的问题(外网的ip不在白名单里),但外网的ip是不固定的 总不能用一次加一个白名单,那样就不用搭建vpn了呀.

    对于我这种情况,楼主有啥好的解决办法吗?

    • 新闻联播老司机

      运营商IP不固定确实是不好搞,还有一个方法就是写网段了。观察一下ip变化的情况,应该只有后面2位数变化,前面的几乎不变化比如111.111.x.x 如果每次都变化后面2位只能说授权一个网段了,把风险控制到最小。 还有一种就是frp协议了,你可以参考我首页下面的文章。 但是frp性能这块,企业使用没有固定带宽,速度会更慢

    • 昨天有雨

      已经找到一种解决方案了,我在另外一台没有设置安全组的机器B上运行vpn server,然后设置了安全组的机器A上运行vpn客户端去连接B机器上的server,最后我外网环境的本地也通过vpn客户端去连接B机器上的vpn server.这样我的本地外网环境和设置了安全组的A机器在vpn的虚拟网络中在一个网段下,通过访问A机器的虚拟ip就可以正常访问到A机器的服务了.

      这个问题感觉有个不好的地方就是,正常访问A机器上的服务时 A机器的外网ip+端口,外网环境通过vpn访问的时候是 A机器的虚拟ip+端口.需要改下ip,楼主有没有不改ip的方法呢?

    • 新闻联播老司机

      有一点没太明白,ip不都是固定住了吗? 但是这个架构确实是复杂了好多~ 那你为啥不直接连接B的vpn server,这样不就是一个网段了吗? 在去通信。 区分内外网可以自建一个dns解决

    • 昨天有雨

      是连的B机器vpn server,然后和A 在虚拟网络下是一个网段了.但是我正常访问 A上的web服务 是 A外网ip+web端口号,现在在vpn虚拟网络下访问A机器是 Avpn虚拟ip+web端口号.我是想问下有没有就算是在vpn虚拟网络下,我不用 虚拟ip+端口号 访问 还是用原来的 A机器外网ip+端口号 去访问呢?

    • 新闻联播老司机

      走了vpn肯定就是内网的IP+端口号了,不然你用vpn用处不大。 你用vpn不就是为了访问内网的服务吗。 如果可以用外网IP+端口访问,那你建设vpn的作用是啥?

    • 昨天有雨

      不是哦楼主,我前面有提到 我要访问的机器是在阿里云上的机器它是有外网ip的.但是为了安全考虑设置了阿里云安全组把外网ip访问给屏蔽掉了,我现在通过 openVPN使用 client-to-client的方式可以访问到机器上的服务了但是用的是vpn虚拟环境ip.

      是想请教下楼主有没有什么办法可以 我连上vpn后 还是使用外网ip+端口 的形式访问那个机器上的服务呢?

    • 去买东西

      有一个办法,就是申请API,然后直接使用aliyuncli添加到安全组。需要自己写一个检测IP变化的脚本,比如5分钟检测一次,如果变了自动添加。我就是这么干的。

  14. 钟情

    楼主您好,关于openvpn的问题请教。http://123.57.11.151:8080/top.jpg 网络连接情况。
    在阿里云上搭建了 openvpn.办公网络 client 那台能访问阿里云内网,其他节点连上vpn后可以访问阿里云内网和办公网络内网。但是阿里云服务端那台机器不能访问办公那台client。能麻烦指导一下嘛

  15. 放牛娃

    照着你的文章 几乎原样操作 系统 也一样,搞了一天 没搞起,报这个错,。求指点啊

    Sat Jan 16 20:00:30 2021 us=492539 MULTI: multi_create_instance called
    Sat Jan 16 20:00:30 2021 us=492605 Re-using SSL/TLS context
    Sat Jan 16 20:00:30 2021 us=492617 LZO compression initializing
    Sat Jan 16 20:00:30 2021 us=492666 Control Channel MTU parms [ L:1624 D:1182 EF:68 EB:0 ET:0 EL:3 ]
    Sat Jan 16 20:00:30 2021 us=492679 Data Channel MTU parms [ L:1624 D:1450 EF:124 EB:406 ET:0 EL:3 ]
    Sat Jan 16 20:00:30 2021 us=492703 Local Options String (VER=V4): ‘V4,dev-type tun,link-mtu 1560,tun-mtu 1500,proto TCPv4_SERVER,comp-lzo,keydir 0,cipher AES-256-CBC,auth SHA1,keysize 256,tls-auth,key-method 2,tls-server’
    Sat Jan 16 20:00:30 2021 us=492710 Expected Remote Options String (VER=V4): ‘V4,dev-type tun,link-mtu 1560,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,keydir 1,cipher AES-256-CBC,auth SHA1,keysize 256,tls-auth,key-method 2,tls-client’
    Sat Jan 16 20:00:30 2021 us=492727 TCP connection established with [AF_INET]125.82.184.246:29985
    Sat Jan 16 20:00:30 2021 us=492734 TCPv4_SERVER link local: (not bound)
    Sat Jan 16 20:00:30 2021 us=492739 TCPv4_SERVER link remote: [AF_INET]125.82.184.246:29985
    Sat Jan 16 20:00:31 2021 us=460775 125.82.184.246:29985 TLS: Initial packet from [AF_INET]125.82.184.246:29985, sid=d4801341 7b0f09af
    Sat Jan 16 20:00:31 2021 us=670841 125.82.184.246:29985 VERIFY OK: depth=1, C=CN, ST=CA, L=haxiba, O=Fort-Funston, OU=czy, CN=aaa, name=tang, emailAddress=mail@host.domain
    Sat Jan 16 20:00:31 2021 us=671036 125.82.184.246:29985 VERIFY OK: depth=0, C=CN, ST=CA, L=haxiba, O=Fort-Funston, OU=czy, CN=client1, name=tang, emailAddress=mail@host.domain
    Sat Jan 16 20:00:31 2021 us=791414 125.82.184.246:29985 peer info: IV_VER=2.4.7
    Sat Jan 16 20:00:31 2021 us=791459 125.82.184.246:29985 peer info: IV_PLAT=win
    Sat Jan 16 20:00:31 2021 us=791465 125.82.184.246:29985 peer info: IV_PROTO=2
    Sat Jan 16 20:00:31 2021 us=791470 125.82.184.246:29985 peer info: IV_NCP=2
    Sat Jan 16 20:00:31 2021 us=791475 125.82.184.246:29985 peer info: IV_LZ4=1
    Sat Jan 16 20:00:31 2021 us=791480 125.82.184.246:29985 peer info: IV_LZ4v2=1
    Sat Jan 16 20:00:31 2021 us=791486 125.82.184.246:29985 peer info: IV_LZO=1
    Sat Jan 16 20:00:31 2021 us=791490 125.82.184.246:29985 peer info: IV_COMP_STUB=1
    Sat Jan 16 20:00:31 2021 us=791495 125.82.184.246:29985 peer info: IV_COMP_STUBv2=1
    Sat Jan 16 20:00:31 2021 us=791500 125.82.184.246:29985 peer info: IV_TCPNL=1
    Sat Jan 16 20:00:31 2021 us=791505 125.82.184.246:29985 peer info: IV_GUI_VER=OpenVPN_GUI_11
    Sat Jan 16 20:00:31 2021 us=828701 125.82.184.246:29985 Connection reset, restarting [-1]
    Sat Jan 16 20:00:31 2021 us=828729 125.82.184.246:29985 SIGUSR1[soft,connection-reset] received, client-instance restarting

    • 记号笔

      请教一下师兄,你说的被哪个墙了?自己在vm上搭建的,怎么会被墙了呢?具体你这边是怎么设置和解决了的呢?能否把解决的方法帮忙发出来一下呢。多谢

  16. 番茄

    这是我客户端连接的日志!不知道怎么的就是个不成功,求博主解答下!感谢?

  17. ran

    大佬 我想问下 这个地方cert.key tls-auth 后面的中文是不需要的吧 原配置文件是没这两个的 这两个是必须要加的吗

  18. Layman

    麻烦问下博主,有办法ssh到server端同一网段的机器吗?

  19. 岛

    生成服务端的时候,截图里面好像没有server.key,我再执行./build-ca 的时候 报这个
    [root@sundsoft46 2.0]# ./build-ca
    pkitool: KEY_CONFIG (set by the ./vars script) is pointing to the wrong
    version of openssl.cnf: /usr/local/easy-rsa-old-master/easy-rsa/2.0/openssl.cnf
    The correct version should have a comment that says: easy-rsa version 2.x

  20. 岛

    再执行 source vars的时候 报这个
    /usr/local/easy-rsa-old-master/easy-rsa/2.0/openssl.cnf: 没有那个文件或目录

  21. user8117

    按照上面的能访问这台的内网10IP,但是不能访问192.168.IP,转发也开启了

    • 新闻联播老司机

      网络架构图有吗? 192.168 可以理解为公网IP,只要内网服务器能访问192.168就可以,10IP为内网IP,是vpn内部网络。

      大概意思就是192.168是需要可以访问vpn的网段连接,当访问192.168后,连接上vpn,就可以访问10网络。 那么你电脑应该是192.168网络,连接上vpn,就可以访问你虚拟机或者其它10网段的机器

    • user8117

      公司的内网全部是192.168网段,我在其中的一台服务器上面部署的openvpn,有两个网卡,一个192网段,一个是10网段,按照你上面的搭建的,然后将1194映射到外网1194 ,然后回家了,下载了客户端,能获取到10网段的IP,但是ping 192.168.网段的服务器ping不通,只能ssh 10网段,再在那个VPN上面再SSH192网段的服务器,为什么不能直接连192网段的服务器呢,

    • user8117

      我家里电脑是路由器总网关是192.168.1.1,但是我无线路由的分配的IP是192.178.0.1网段,ping 公司的192.168.网段走了家里的网关了,是要配路由吗?可是我配了也还是走家里的网关192.168.1.1,调了优先级,也没用,??

    • 新闻联播老司机

      你不要这样搞,把你自己都绕进去了。

      先简单点搞一个,服务器是192.168.1.1 在搞一个服务器的服务是192.168.1.2. 然后vpn 对外访问的是10.1.1.1,首先你电脑可以连接到10.1.1.1,当你拨成功后,可以ping 通192.168.1.1和192.168.1.2就行。 你这样不同网段涉及了路由跳转

  22. […] […]

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索