基于frp实现外网访问内网服务器

一、前言

当我们有一台内网服务器,又在这台内网服务器上部署了应用,又希望能使用外网访问这台内网服务器,并且还能访问服务器上部署的应用时。这种情况只能花钱购买内网穿透软件来满足访问的要求,那有不有免费且好用的方法呢?

下面为大家介绍一种内网穿透方法(免费哟)。那就是利用frp来反向代理应用,实现以外网服务为桥梁的方式去访问内网服务器。

二、准备工作
  • 外网服务器一台(最好是云服务器)

  • 内网服务器一台(需能访问网络)

  • frp包(linux_X86_64使用的是:frp_0.44.0_linux_386.tar.gz)

    下载地址 官网地址

    可在官网下载其他版本

    image-20220919224748544

image-20220919224812510

image-20220919224837249

三、外网服务器frp搭建

准备工作都做好了,下面我们开始搭建。

#1、将frp_0.44.0_linux_386.tar.gz 上传到服务器指定路径
#2、解压frp_0.44.0_linux_386.tar.gz
tar -zxvf frp_0.44.0_linux_386.tar.gz

image-20220919225334495

#3、进入frp_0.44.0_linux_386
cd frp_0.44.0_linux_386/

#外网服务器搭建的frp服务器,需要关注的是frps和frps.ini

#frps.ini配置文件内容:
[common]
bind_port = 7000 #bind_port为指定frp的端口号

image-20220919225513177

image-20220919225709082

我们需要在外网服务器启动frps

4、启动frp
./frps -c frps.ini

image-20220919230718535

image-20220919230828063

通常情况我们需要设置后台启动,这里介绍一种systemctl的方式来控制、设置后台frp启动。

vim /lib/systemd/system/frps.service

在frps.service加入以下内容

[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/zhouyx/frp_0.44.0_linux_386/frps -c /zhouyx/frp_0.44.0_linux_386/frps.ini

[Install]
WantedBy=multi-user.target

image-20220919231658884

#可使用下面的命令控制frps
#启动frps
systemctl start frps
#设置开机自启
systemctl enable frps
#重启应用
systemctl restart frps
#停止应用
systemctl stop frps
#查看应用的日志
systemctl status frps
四、内网服务器frp搭建
#1、将frp_0.44.0_linux_386.tar.gz 上传到服务器指定路径
#2、解压frp_0.44.0_linux_386.tar.gz
tar -zxvf frp_0.44.0_linux_386.tar.gz

image-20220919232251907

#3、进入frp_0.44.0_linux_386
cd frp_0.44.0_linux_386/

#内网服务器搭建的是frp客户端,需要关注的是frpc和frpc.ini

#frpc.ini配置文件服务器内容:
server_addr = XX:XX:XX:XX #frp服务器地址(外网服务器地址)
server_port = 7000 #frp服务器端口(外网服务器端口)

[ssh]
type = tcp
local_ip = 127.0.0.1 
local_port = 22 #需要代理的内网服务器端口
remote_port = 6022 #代理到外网服务器的端口号

image-20220919232533395

我们需要在内网服务器启动frpc

4、启动frp
./frpc -c frpc.ini

内网服务器也不例外,需要设置后台启动,使用systemctl的方式来控制、设置后台frp启动。

vim /lib/systemd/system/frpc.service

frpc.service的内容

[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frpc的实际安装目录)
ExecStart=/zhouyx/frp_0.44.0_linux_386/frpc -c /zhouyx/frp_0.44.0_linux_386/frpc.ini

[Install]
WantedBy=multi-user.target

image-20220919233611612

#可使用下面的命令控制frpc
#启动frpc
systemctl start frpc
#设置开机自启
systemctl enable frpc
#重启应用
systemctl restart frpc
#停止应用
systemctl stop frpc
#查看应用的日志
systemctl status frpc
#查看端口占用 
netstat -tunlp

启动内网服务器后,可以发现外网服务器的端口占用列表出现了内网服务器映射的端口,这样说明已经搭建好了。

image-20220919234248179

使用外网服务器IP加映射的端口访问内网服务器,成功的实现了内网穿透

image-20220919234649681

image-20220919234913621

五、实现内网服务器多端口映射

这里以映射本地nacos为例,添加端口映射信息

image-20220919235722524

#重启frpc
systemctl restart frpc

此时外网服务器(云服务)多了端口8848

image-20220920000027949

通过内网服务器IP+端口访问nacos

image-20220920000326184

通过外网服务器IP+端口访问nacos

image-20220920000616897

六、注意

在搭建frp的时候要注意端口的开放。如果防火墙打开,而没有开发端口,可能会导致搭建失败。

云服务器需在指定的云服务平台开放端口。

#1、开启防火墙 
systemctl start firewalld
#2、开放指定端口
firewall-cmd --zone=public --add-port=7000/tcp --permanent
#命令含义:
--zone #作用域
--add-port=7000/tcp  #添加端口,格式为:端口/通讯协议
--permanent  #永久生效,没有此参数重启后失效
#3、重启防火墙
firewall-cmd --reload

#4、查看端口号
netstat -ntlp   #查看当前所有tcp端口·
netstat -ntulp |grep 7000   #查看所有7000端口使用情况
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值