Closed mrzhu666 closed 1 year ago
之前因为这篇文章被腾讯封了域名,然后屏蔽了文章,写了保证书才解开了,既然有人想看,那我就放在这里好了
友情提醒:按照本教程安装后 不能实现 访问外网(即科学上网、翻墙),仅用于多台电脑组局域网!
MySQL
、Redis
等服务,这些服务可以设置密码,然后开放端口Nacos
、Elasticsearch
、zipkin
等服务,这些服务无法设置密码、或者不方便设置密码,但是又想正常访问此时可以搭建VPN
通道,使本地机器和云服务器组成局域网,云服务器的控制面板上只需要开放一个VPN
的端口即可。
yum install -y gcc-c++ openssl openssl-devel net-tools lzo lzo-devel pam pam-devel
openvpn-2.5.3.tar.gz
或者
# 直接执行脚本下载到服务器
wget https://swupdate.openvpn.org/community/releases/openvpn-2.5.3.tar.gz
# 解压
tar -zxf openvpn-2.5.3.tar.gz
# 进入该目录
cd openvpn-2.5.3/
# 配置
./configure --prefix=/usr/local/openvpn/
# 编译
make
# 安装
make install
添加环境变量
编辑环境变量文件
vim /etc/profile
PATH
添加:/usr/local/openvpn/sbin
,例如:
export PATH=$PATH:/usr/local/openvpn/sbin
立即生效
source /etc/profile
查看是否成功
openvpn --version
退出当前目录
cd ..
easy-rsa
工具或者
# 直接执行脚本下载到服务器
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
# 解压
tar -zxf EasyRSA-3.0.8.tgz
# 进入该目录
cd EasyRSA-3.0.8/
./easyrsa init-pki
./easyrsa build-ca nopass
nopass
表示不加密服务器IP
或者域名
或者不输入
,然后直接回车ca
文件在/root/EasyRSA-3.0.8/pki/ca.crt
./easyrsa gen-req server nopass
server
即创建后的证书文件名,可自定义nopass
表示不加密./easyrsa sign server server
server
代表签为服务端server
为服务端证书文件名yes
并回车./easyrsa gen-req client nopass
nopass
表示不加密client
即创建后的文件名,可自定义./easyrsa sign client client
client
代表签为客户端client
为客户端证书文件名yes
并回车复制服务端秘钥至安装目录
# PS:当前命令还在上文的 /root/EasyRSA-3.0.8 目录下
cp -p pki/ca.crt pki/private/server.key pki/issued/server.crt /usr/local/openvpn/
复制服务端配置文件至安装目录
# 退出当前文件夹并进入openvpn源码文件夹
cd ../openvpn-2.5.3/
# 复制配置文件示例
cp ./sample/sample-config-files/server.conf /usr/local/openvpn/
进入到安装目录
cd /usr/local/openvpn/
生成pem
文件
openssl dhparam -out dh2048.pem 2048
生成key
文件
openvpn --genkey tls-auth ta.key
编辑配置文件
vim server.conf
修改如下配置
# 监听端口:默认1194,可自定义修改
port 1194
# 使用TCP协议
proto tcp
;proto udp
# 使用tap模式
dev tap
;dev tun
# 证书文件
ca /usr/local/openvpn/ca.crt
cert /usr/local/openvpn/server.crt
key /usr/local/openvpn/server.key
# pem文件
dh /usr/local/openvpn/dh2048.pem
# 给客服端分配的IP网段,根据自己喜好修改,不能和服务器内网IP一个网段
server 10.8.0.0 255.255.255.0
# IP记录文件
ifconfig-pool-persist /usr/local/openvpn/ipp.txt
# 允许客户端访问服务器上的其他网络,10.0.4.0是服务器的内网IP网段,根据实际情况修改
push "route 10.0.4.0 255.255.255.0"
# 允许客户端之间互相访问,例如公司电脑和家里电脑想互相访问,则需要开启
client-to-client
# key文件
tls-auth /usr/local/openvpn/ta.key 0 # This file is secret
# 加密方式
cipher AES-256-GCM
# 状态文件
status /usr/local/openvpn/openvpn-status.log
# 日志文件
log /usr/local/openvpn/openvpn.log
# 明确的退出通知,TCP模式需要设置为0
explicit-exit-notify 0
修改完成后保存退出
firewalld
必须启用
firewalld
,否则无法完成网络转发(当然,如果你会iptables就当我没说)
启用firewalld
并设置开机自启
PS:如果服务器没有启用过firewalld
且ssh
端口不是默认的22,那么请使用云厂商的VNC
网页模式登录服务器并开启防火墙,然后再添加自定义的ssh
端口放行。XShell
等远程连接会在打开firewalld
之后被动断开,需要开放端口之后再重新连接
systemctl start firewalld.service
systemctl enable firewalld.service
开放openvpn
的端口以及打开masquerade
firewall-cmd --zone=public --permanent --add-port=1194/tcp
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
新建服务文件
vim /etc/systemd/system/openvpn.service
添加如下内容
[Unit]
Description=OpenVPN Server
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
ExecStart=/usr/local/openvpn/sbin/openvpn --config /usr/local/openvpn/server.conf
刷新系统服务、设置开机自启、启动服务、查看服务状态
systemctl daemon-reload
systemctl enable openvpn.service
systemctl start openvpn.service
systemctl status openvpn.service
根据上文配置文件中的端口和协议,在云服务器的控制面板中打开对应的端口和协议即可
Windows 64-bit MSI installer
后面的OpenVPN-2.5.3-I601-amd64.msi
进行下载或者
# 浏览器打开如下地址
https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.3-I601-amd64.msi
Customize
自定义安装
Launch on User Logon
:图形化界面的开机自启。根据自己需求进行选择OpenVPN Servcie
:后台服务模式(如果要开机自动连接VPN,则启用)Wintun
:tun
模式虚拟网卡。根据上文配置,关闭Install Now
Close
完成安装在服务器上导出客户端证书文件和ta.key
文件,列表如下:
导出后放在C:\Program Files\OpenVPN\config
目录下
复制一份C:\Program Files\OpenVPN\sample-config\client.ovpn
到C:\Program Files\OpenVPN\config
路径下,使用记事本等文本编辑工具编辑client.ovpn
文件。修改的内容如下
# 使用tap模式
dev tap
;dev tun
# 使用TCP
proto tcp
;proto udp
# 服务端地址与端口
remote x.x.x.x 1194
# 秘钥文件(默认即可)
ca ca.crt
cert client.crt
key client.key
# ta.key文件(默认即可)
tls-auth ta.key 1
# 加密方式
cipher AES-256-GCM
# 不缓存认证(添加在文件结尾)
auth-nocache
右击任务栏
带锁的小电脑图标,选择选项
菜单
C:\Program Files\OpenVPN\config
C:\Program Files\OpenVPN\log
OpenVPN GUI
图标启动图形界面(已启动则忽略)任务栏
带锁的小电脑图标cmd
,测试ping 10.8.0.1
PS:GUI打开自动连接:快捷方式 → 右击 → 属性 →
目标
后面添加--connect client.ovpn
(注意--前面有个空格) → 确定
安装时如果启用了OpenVPN Servcie
,则安装目录下有一个config-auto
文件夹
图形界面连接
保证连接正常可用config
目录下的配置文件都复制到config-auto
目录下cmd
,测试ping 10.8.0.1
PS: 可能会出现开机之后
ping
不通的情况,等2分钟后又可以连上去。 从日志分享,第一次连接的时候连不上,2分钟之后会重试,重试的时候就连上去了 目前还不知道为啥第一次连不上去
当服务端和客户端均正常启动后,就可以通过服务器的内网IP访问到上面的服务,多个客户端之间也可以互相访问
感谢,你这篇文章比较简洁、简单
CentOS - OpenVPN安装使用教程(Linux服务端+Windows客户端)