使用frp将局域网IP暴露到公网,提供外网访问本地服务

  通常情况下连接同一路由器下的电脑之间是可以相互访问的,但是如果外网要通过本地IP访问就行不通了。

  此方法前提是需要有一台外网服务器。。。

  场景:

    一台百度云服务器:180.xxx.xxx.124

    idea启动的一个本地tomcat服务:127.0.0.1 端口:8888

1.下载frp客户端到本地:https://github.com/fatedier/frp/releases

 

 

  1.1解压文件,并且进入到文件夹:

 

 

   1.2 修改客户端配置文件 frpc.ini

[common]
server_addr = 180.xxx.xxx.124  #远程主机地址
server_port = 7000         #远程主机端口,应该是用来连接客户端和远程服务端的


[www.sprite.cn]            #自定义的域名,配置后可以在frp管理端看到注册信息
type = http             #我这里是http,貌似还有其他的
local_ip = 127.0.0.1
local_port = 8888          #服务端,会有一个端口与当前端口作映射,即外网访问本地环境的入口
custom_domains = www.sprite.cn   #自定义的
remotr_port = 6001         #服务端 与 本地客户端映射的端口(对应上述中的8888)

2.服务端下载对应包

 

 

   2.1 进入到文件夹目录,修改配置文件frps.ini ⚠️ 注意,与客户端不是同一个文件

 

 

   2.2修改配置文件

[common]
bind_port = 7000      #与客户端连接端口一致
vhost_http_port = 6001   #端口与客户端一致

dashboard_port = 7500  #这里是配置 frp 管理端的
dashboard_user = admin
dashboard_pwd = admin

 

3.配置完成后启动服务端、客户端

#进入到【服务端】的frp安装文件夹下执行该命令
nohup ./frps -c ./frps.ini & 

#进入到【客户端】的frp安装文件夹下执行该命令
./frpc -c frpc.ini

4.结果

  4.1服务端命令执行成功后,可以访问到frp的后管:http://180.xxx.xxx124:7500

  4.2客户端执行后,可以在后管上看到注册信息:

 

 

 

 

 

 

 

 

5.本地启动一个tomcat应用测试一下,端口为8888 【就是上述客户端配置的8888与6001做了映射】

  5.1 用手机访问一下:http://180.xxx.xxx.124:6001/api/basket/login/login

  5.2访问成功

                      .              

 

 

 

 配置过程中出现的问题

   1.因为客户端对服务端相关进行telnet,提示被拒绝 refused:

    解决办法:防火墙添加端口允许进行访问(我当前是CentOS,不同系统防火墙是不一样的~)

#检查允许访问的端口
firewall-cmd --list-ports

#开放指定端口(目前我把所有用到的端口都配了)
firewall-cmd --zone=public --add-port=7000/tcp --permanent
#需要重新加载
firewalld-cmd --reload

  2.防火墙是关闭的,但是端口依然无法访问

    解决办法:重启防火墙,如果防火墙重启超时失败,则重启Linux系统...之后再重启防火墙

#安全的重启
shutdow

#重启计算机
reboot -r

#重启防火墙
systemctl start firewalld.service
#查看防火墙状态
systemctl status firewalld

  

 

posted @ 2021-04-11 22:22  麋鹿森林h  阅读(965)  评论(0编辑  收藏  举报