搭建frp+OpenVPN实现公网服务器对内网服务器的访问

这篇具有很好参考价值的文章主要介绍了搭建frp+OpenVPN实现公网服务器对内网服务器的访问。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

搭建frp+OpenVPN实现公网服务器对内网服务器的访问

1.准备

1.1实验需求

本实验需求一台公网服务器,两台内网服务器

  • 公网服务器:作为frp服务端以及openvpn客户端
  • 第一台内网服务器:作为frp客户端以及openvpn服务端
  • 第二台内网服务器:需进行openvpn客户端配置(测试用)

1.2配置yum源

#配置阿里base源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#配置epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#清除策略
yum clean all
#重新加载
yum makecache

2.frp配置

2.1服务端配置(公网服务器)

下载并解压frp数据包

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
#进入解压目录
cd frp_0.33.0_linux_amd64/
# 编辑配置文件
vim frps.ini

配置文件内容如下:

[common]
#frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
#token授权码,可以改成更复杂的,之后在客户端会用到
token = abc5310

#frp管理后台端口,按自己需求更改
dashboard_port = 7500
#frp管理后台用户名和密码,可以自行更改
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

#frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

修改如下图显示

frp vpn,服务器,运维,网络,linux

将frp服务添加至服务列表,并且设置开机启动frp服务

sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps

ps:若不添加至服务列表可直接使用./frps -c frps.ini启动

开放防火墙端口

# 添加监听端口
sudo firewall-cmd --permanent --add-port=7000/tcp
# 添加管理后台端口
sudo firewall-cmd --permanent --add-port=7500/tcp
# 添加openvpn服务端口,后续会用到
sudo firewall-cmd --permanent --add-port=1194/tcp
# 刷新防火墙策略
sudo firewall-cmd --reload

验证是否成功启动,在浏览器输入http://服务器IP:后台管理端口,如http://174.1.1.56:7500,使用配置文件frps.ini中的dashboard_user和dashboard_pwd 登录,成功登录示例如下:

frp vpn,服务器,运维,网络,linux

2.2 客户端配置(内网服务器)

下载并解压frp数据包

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
#进入解压目录
cd frp_0.33.0_linux_amd64/
# 编辑配置文件
vim frpc.ini

配置文件内容如下:

[common]
#公网服务器ip
server_addr = 47.96.149.48
#与frps.ini的bind_port一致
server_port = 7000
#与frps.ini的token一致
token = abc5310

#配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
#客户端暴露的端口,与下方服务端暴露端口相映射
local_port = 22
#服务端端口,需先进行端口暴露
remote_port = 6541

#配置openvpn服务
[vpn]
type = udp
local_ip = 127.0.0.1
#同ssh服务的配置,1194为openvpn配置文件中服务使用端口
local_port = 1194
remote_port = 1194

修改如下图显示

frp vpn,服务器,运维,网络,linux

开放防火墙端口

sudo firewall-cmd --permanent --add-port=6000/tcp
sudo firewall-cmd --permanent --add-port=1194/tcp
sudo firewall-cmd --reload

启动客户端

# frp_0.33.0_darwin_amd64目录下执行
./frpc -c frpc.ini

2.3验证服务

使用服务端执行命令ssh 服务端ip -p 6541 ,并提示输入密码及配置成功。如:ssh 45.15.98.158 -p 6541

3.OpenVPN配置

3.1服务端配置(内网服务器)

3.1.1安装及配置证书软件easy-rsa
#下载easy-rsa
yum -y install easy-rsa
#创建并进入目录
mkdir /opt/easy-rsa
cd /opt/easy-rsa
#查看已安装的RPM包中名为 easy-rsa 的文件列表
rpm -ql easy-rsa

frp vpn,服务器,运维,网络,linux

#将 Easy-RSA 工具的默认安装及配置文件拷贝至当前目录
cp -a /usr/share/easy-rsa/3.0.8/* .
cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars

#清空并编辑配置文件vars

>vars
vim 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” #设置证书主题只包含CN字段
set_var EASYRSA_REQ_COUNTRY “CN” #设置请求国家字段为中国
set_var EASYRSA_REQ_PROVINCE “Jiangsu” #设置请求省份字段为江苏
set_var EASYRSA_REQ_CITY “Yancheng” #设置请求城市字段为盐城
set_var EASYRSA_REQ_ORG “metastone” #设置请求组织字段为metastone
set_var EASYRSA_REQ_EMAIL “888888@qq.comm” #设置请求请求电子邮件地址
set_var EASYRSA_NS_SUPPORT “yes” #启用 Easy-RSA 的命名服务支持

PS:上述内容也可随意填写,不影响功能

3.2.2创建证书
#初始化,在当前目录创建PKI目录
	./easyrsa init-pki
#创建根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他提示内容直接回车
	./easyrsa build-ca    
#创建server端证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车
	./easyrsa gen-req server nopass    
#给server端证书签名,提示内容需要输入yes和创建ca根证书时候的密码
	./easyrsa sign server server    
#创建Diffie-Hellman文件,密钥交换时的Diffie-Hellman算法
	./easyrsa gen-dh    
#创建client端的证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车
	./easyrsa gen-req client nopass   
#给client端证书前面,提示内容输入yes和创建ca根证书时候的密码
	./easyrsa sign client client  

#使用tree命令查看证书是否生成

.
├── easyrsa #管理命令
├── openssl-easyrsa.cnf
├── pki
│ ├── ca.crt #ca根证书,服务端与客户端都需要用
│ ├── certs_by_serial
│ │ ├── 2236CFD2F90E5FAF3102F2C518BF5C91.pem
│ │ └── 3825B71EFA4616F736BCCD834C3252BA.pem
│ ├── dh.pem #认证算法 服务端
│ ├── index.txt
│ ├── index.txt.attr
│ ├── index.txt.attr.old
│ ├── index.txt.old
│ ├── issued
│ │ ├── client.crt #客户端证书
│ │ └── server.crt #服务端证书
│ ├── openssl-easyrsa.cnf
│ ├── private
│ │ ├── ca.key
│ │ ├── client.key #客户端私钥
│ │ └── server.key #服务端私钥

…………………………

3.3.3安装OpenVPN并写入配置
#安装openvpn
yum -y install openvpn
#编辑配置文件
vim cat /etc/openvpn/server.conf

port 1194 #端口
proto udp #协议
dev tun #采用路由隧道模式
ca /opt/easy-rsa/pki/ca.crt #ca证书的位置
cert /opt/easy-rsa/pki/issued/server.crt #服务端公钥的位置
key /opt/easy-rsa/pki/private/server.key #服务端私钥的位置
dh /opt/easy-rsa/pki/dh.pem #证书校验算法
server 10.9.0.0 255.255.255.0 #给客户端分配的地址池(虚拟IP网段)
push “route 174.1.6.4 255.255.255.0” #允许客户端访问的内网网段(填写服务端本机IP地址)
ifconfig-pool-persist ipp.txt #地址池记录文件位置,未来让openvpn客户端固定ip地址使用的
keepalive 10 120 #存活时间,10秒ping一次,120秒如果未收到响应则视为短线
max-clients 100 #最多允许100个客户端连接
status openvpn-status.log #日志位置,记录openvpn状态
log /var/log/openvpn.log #openvpn日志记录位置
verb 3 #openvpn版本
client-to-client #允许客户端与客户端之间通信
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取
persist-tun #检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup
duplicate-cn #客户端密钥(证书和私钥)是否可以重复
comp-lzo #启动lzo数据压缩格式

3.3.4启动检查端口
#启动并设置开机自启
systemctl start openvpn@server
systemctl enable openvpn@server
systemctl status openvpn@server
#检查是否存在网段tun0
ip a s tun0

frp vpn,服务器,运维,网络,linux

#检查端口及pid
ss -lntup|grep 1194
ps -ef|grep openvpn

frp vpn,服务器,运维,网络,linux

3.2Linux客户端配置

3.2.1配置OpenVPN
#安装openvpn
yum -y install openvpn
#编写配置文件
vim /etc/openvpn/client.conf

client #连接到 OpenVPN 服务器
dev tun #指定使用 tun 设备
proto udp #指定使用 UDP 协议进行通信
remote 127.0.0.1 1194 #指定 OpenVPN 服务器地址和端口号,即服务端的IP地址和端口,因为已经使用frp实现了内网穿透,所以本机1194端口已经和服务端1194端口相互映射,故此填’127.0.0.1 1194‘
resolv-retry infinite #在 DNS 解析失败时无限重试
nobind #禁止绑定到特定的本地端口号。这通常用于客户端,以允许系统动态分配本地端口
ca ca.crt #指定了证书颁发机构 (CA) 的证书文件,用于验证服务器的身份
cert client.crt #指定了客户端的证书文件,用于身份验证
key client.key #指定了客户端的私钥文件,用于身份验证
verb 3 #设置日志级别为 3,这将记录详细的日志信息
persist-key #指示在重新连接时保持密钥不变
comp-lzo #启用 LZO 压缩,用于加快数据传输速度

3.2.2传递证书(在服务端操作)
#将服务端证书传递给客户端
scp /opt/easy-rsa/pki/private/client.key 174.1.15.2:/etc/openvpn/
scp /opt/easy-rsa/pki/issued/client.crt  174.1.15.2:/etc/openvpn/
scp /opt/easy-rsa/pki/ca.crt 174.1.15.2:/etc/openvpn/
3.2.3启动客户端OpenVPN
systemctl start openvpn@client
systemctl enable openvpn@client

在客户端使用ifconfig查看,发现出现了配置的虚拟网段

frp vpn,服务器,运维,网络,linux

并且可以通过虚拟IP去链接服务端

frp vpn,服务器,运维,网络,linux

PS:VM虚拟机由于性能问题在搭建成功后会自动断开xshell链接,并且无法通过虚拟IP做到互通

3.3 测试服务器配置

在第三台内网服务器上部署openvpn客户端,步骤同3.2,配置文件更改如下:

client #连接到 OpenVPN 服务器
dev tun #指定使用 tun 设备
proto udp #指定使用 UDP 协议进行通信
remote 174.1.15.1 1194 #指定 OpenVPN 服务器地址和端口号,即服务端的IP地址和端口
resolv-retry infinite #在 DNS 解析失败时无限重试
nobind #禁止绑定到特定的本地端口号。这通常用于客户端,以允许系统动态分配本地端口
ca ca.crt #指定了证书颁发机构 (CA) 的证书文件,用于验证服务器的身份
cert client.crt #指定了客户端的证书文件,用于身份验证
key client.key #指定了客户端的私钥文件,用于身份验证
verb 3 #设置日志级别为 3,这将记录详细的日志信息
persist-key #指示在重新连接时保持密钥不变
comp-lzo #启用 LZO 压缩,用于加快数据传输速度

3.3.1启动服务
systemctl start openvpn@client
systemctl enable openvpn@client

使用ip a s tun0查看是否存在tun0网络

frp vpn,服务器,运维,网络,linux

4.整体测试

上述步骤完成后即可通过公网服务器对测试端进行访问,上述可以知道测试机的虚拟网段为10.9.0.10,使用ssh root@10.9.0.10登录内网服务器,成功登录即配置成功。

frp vpn,服务器,运维,网络,linux文章来源地址https://www.toymoban.com/news/detail-756624.html

到了这里,关于搭建frp+OpenVPN实现公网服务器对内网服务器的访问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu 搭建OpenVPN服务器

    VPN直译译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。 OpenVPN通过使用公开密钥(非对称密钥,加密解密使用不同的Key,

    2024年02月05日
    浏览(42)
  • 阿里云服务器搭建FRP实现内网穿透-P2P

    在了解frp - p2p之前,请先了解阿里云服务器搭建FRP实现内网穿透-转发: 文章地址    frp(Fast Reverse Proxy)是一个开源的反向代理工具,它提供了多种功能,包括端口映射、流量转发和内网穿透等。在frp中,P2P(Peer-to-Peer)功能允许直接将数据从一个客户端传输到另一个客户

    2024年02月10日
    浏览(36)
  • ubuntu 22.04搭建OpenVPN服务器

    为了公司与分公司之前的内部服务器和办公电脑之间能够相互访问,打算使用VPN,对于VPN,以前用得多的是PPTP; 但是PPTP相对于openvpn来说,没有openvpn安全,而且PPTP在linux下命令行支持不是很好,稳定性也不如openvpn。所以最后就选择openvpn来搭建VPN. 如上图所示,红线为VPN访问效

    2024年02月14日
    浏览(40)
  • 本地电脑搭建SFTP服务器,并实现公网访问

    1.1 下载 freesshd 服务器软件 下载地址:freeSSHd and freeFTPd 选择freeFTPD.exe下载 下载后,点击安装 安装之后,它会提示是否启动后台服务,Yes 安装后,点击开始菜单– freeFTPd, 注意 :这里要点击鼠标右键, 以管理员权限 打开freeFTPd,如果以普通用户打开freeFTPd, 将无法保存配置

    2024年02月08日
    浏览(58)
  • 怎样通过本地电脑搭建SFTP服务器,并实现公网访问?

    1.1 下载 freesshd 服务器软件 下载地址:freeSSHd and freeFTPd 选择freeFTPD.exe下载 下载后,点击安装 安装之后,它会提示是否启动后台服务,Yes 安装后,点击开始菜单– freeFTPd, 注意 :这里要点击鼠标右键, 以管理员权限 打开freeFTPd,如果以普通用户打开freeFTPd, 将无法保存配置

    2024年02月12日
    浏览(65)
  • 一起搭建我的世界服务器来实现公网远程联机教程「不需要公网IP」

    转载自内网穿透工具的文章:Linux搭建我的世界MC服务器 - MCSM面板 【外网远程联机教程】 Linux使用MCSM面板搭建我的世界私服相对比windwos简单,也是目前比较流行的设置方式,在Linux中安装MCSManger也是非常容易,一键指令脚本即可安装。 下面介绍MCSManager搭建我的世界私服+cpolar内网

    2024年02月06日
    浏览(49)
  • 【服务器】零成本搭建网站并内网穿透实现公网访问

    在普通电脑用户看来,建立自己的网站总是一件高大上的事情,这个网站不仅可以成为展示自己的平台,还能成为商业的载体。在以往,建立一个像样的网站,不仅需要过硬的编程知识做基础,还需要有足够的资金租用服务器。但随着软件技术的快速发展,每个人都可以以很

    2024年02月16日
    浏览(49)
  • 【Windows】MCSM面板搭建Mycraft服务器,实现公网远程联机

    MCSManager是一个开源、分布式、轻量级、一键开服、支持大部分游戏服务端和控制台程序的管理工具,我们可以用它来一键部署搭建Minecraft我的世界服务器,跟小伙伴们联机。 现在一般家庭局域网宽带没有公网IP,不在同个局域网下的小伙伴没办法直接联机。所以我们在这个教

    2024年02月05日
    浏览(38)
  • 虚拟机服务器搭建+FRP内网穿透

    一、虚拟机安装         这里安装的是vmware workstation 17 pro和CentOS-7-x86_64-DVD-2009镜像文件  centos虚拟机服务器手把手搭建_虚拟机搭建服务器_无名之辈之码谷娃的博客-CSDN博客  这篇文章对虚拟机搭建讲的还是比较详细。 完成后,需要为用户添加sudo权限,不然你创建的用户是

    2024年01月20日
    浏览(45)
  • Linux环境搭建SVN服务器并实现公网访问 - cpolar端口映射

    转载自远程内网穿透的文章:Linux搭建SVN服务器,并内网穿透实现公网远程访问 由于文档资料越来越多,将所有资料都存放在自己的电脑上容易混淆,并且也不利于分享。这种情况下,考虑将资料上传SVN统一管理,这样一来其他人也能很方便的查略各种资料。 当SVN安装在局域

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包