Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

你好,博主请问你openvpn的那篇文章是删了吗?方便重新发布一次吗? #1

Closed
mrzhu666 opened this issue Sep 22, 2022 · 3 comments

Comments

@mrzhu666
Copy link

CentOS - OpenVPN安装使用教程(Linux服务端+Windows客户端)

@Max-Qiu
Copy link
Owner

Max-Qiu commented Sep 22, 2022

之前因为这篇文章被腾讯封了域名,然后屏蔽了文章,写了保证书才解开了,既然有人想看,那我就放在这里好了

@Max-Qiu
Copy link
Owner

Max-Qiu commented Sep 22, 2022

友情提醒:按照本教程安装后 不能实现 访问外网(即科学上网、翻墙),仅用于多台电脑组局域网!

情景说明

  1. 有一台或多台云服务器,且均在同一局域网内
  2. 服务器内有多个服务需要访问,例如:
    1. MySQLRedis等服务,这些服务可以设置密码,然后开放端口
    2. NacosElasticsearchzipkin等服务,这些服务无法设置密码、或者不方便设置密码,但是又想正常访问
  3. 公司电脑想访问家里电脑,但是家里电脑又没有公网IP

此时可以搭建VPN通道,使本地机器和云服务器组成局域网,云服务器的控制面板上只需要开放一个VPN的端口即可。

服务端(CentOS7环境):

安装依赖

yum install -y gcc-c++ openssl openssl-devel net-tools lzo lzo-devel pam pam-devel

安装OpenVPN

下载

  1. 打开OpenVPN官网下载地址:https://openvpn.net/community-downloads/
  2. 下载openvpn-2.5.3.tar.gz
  3. 下载完成上传到服务器

或者

# 直接执行脚本下载到服务器
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工具

  1. 打开GitHub地址https://github.com/OpenVPN/easy-rsa/releases
  2. 下载最新版easy-rsa的tgz包
  3. 下载完成上传到服务器

或者

# 直接执行脚本下载到服务器
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/

生成服务端与客户端证书

  1. 初始化
    ./easyrsa init-pki
  2. 生成根证书
    ./easyrsa build-ca nopass
    • nopass表示不加密
    • 提示输入通用名,可以输入服务器IP或者域名或者不输入,然后直接回车
    • 此时看到提示ca文件在/root/EasyRSA-3.0.8/pki/ca.crt
  3. 服务端:
    1. 创建服务端证书
      ./easyrsa gen-req server nopass
      • server即创建后的证书文件名,可自定义
      • nopass表示不加密
      • 提示输入通用名,直接回车
    2. 给服务端证书做签名
      ./easyrsa sign server server
      • 第一个server代表签为服务端
      • 第二个server服务端证书文件名
      • 提示一些确认信息,输入yes并回车
  4. 客户端:(如果需要多个客户端,每个客户端都需要一个唯一的证书。重复以下两步:client端文件名不相同即可,例如:client1 client2)
    1. 创建客户端证书
      ./easyrsa gen-req client nopass
      • nopass表示不加密
      • client即创建后的文件名,可自定义
      • 提示输入通用名,直接回车
    2. 给客户端证书做签名
      ./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:如果服务器没有启用过firewalldssh端口不是默认的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)

下载

  1. 打开官网https://openvpn.net/community-downloads/
  2. 点击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

安装

  1. 双击开始安装
  2. 选择Customize自定义安装
    1. Launch on User Logon:图形化界面的开机自启。根据自己需求进行选择
    2. OpenVPN Servcie:后台服务模式(如果要开机自动连接VPN,则启用)
    3. Wintuntun模式虚拟网卡。根据上文配置,关闭
  3. 自定义选项完成后,点击Install Now
  4. 安装完成后,选择Close完成安装

配置

证书文件

在服务器上导出客户端证书文件和ta.key文件,列表如下:

  • /root/EasyRSA-3.0.8/pki/ca.crt
  • /root/EasyRSA-3.0.8/pki/private/client.key
  • /root/EasyRSA-3.0.8/pki/issued/client.crt
  • /usr/local/openvpn/ta.key

导出后放在C:\Program Files\OpenVPN\config目录下

客户端配置文件

复制一份C:\Program Files\OpenVPN\sample-config\client.ovpnC:\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

客户端配置

右击任务栏带锁的小电脑图标,选择选项菜单

  1. 常规:
    1. 启动:此处也可以设置图形界面是否开机自启
    2. 静默连接:连接时不弹出窗口
    3. 显示通知:根据需求选择
  2. 高级:
    1. 配置文件:C:\Program Files\OpenVPN\config
    2. 日志文件:C:\Program Files\OpenVPN\log

启动

图形界面连接

  1. 双击桌面OpenVPN GUI图标启动图形界面(已启动则忽略)
  2. 双击任务栏带锁的小电脑图标
  3. 看到图标变绿色代表连接成功
  4. (可选)打开cmd,测试ping 10.8.0.1

PS:GUI打开自动连接:快捷方式 → 右击 → 属性 → 目标后面添加--connect client.ovpn(注意--前面有个空格) → 确定

开机自启服务连接

安装时如果启用了OpenVPN Servcie,则安装目录下有一个config-auto文件夹

  1. 使用图形界面连接保证连接正常可用
  2. config目录下的配置文件都复制到config-auto目录下
  3. 重启电脑,然后打开cmd,测试ping 10.8.0.1

PS:
可能会出现开机之后ping不通的情况,等2分钟后又可以连上去。
从日志分享,第一次连接的时候连不上,2分钟之后会重试,重试的时候就连上去了
目前还不知道为啥第一次连不上去

使用

当服务端和客户端均正常启动后,就可以通过服务器的内网IP访问到上面的服务,多个客户端之间也可以互相访问

@Max-Qiu Max-Qiu closed this as completed Sep 22, 2022
@mrzhu666
Copy link
Author

感谢,你这篇文章比较简洁、简单

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants