使用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