开源Nat穿透工具实战 - 让本地虚拟机提供对外服务能力
前言
很多朋友可能家里有NAS连的路由器,或者想把自己的电脑当作Web服务器或mysg或docker对外提供访问的需求
但免费的一些软件例如:花生壳、神卓互联、快解析、NETAPP、NAT123等都不可以自定义域名目免费数量有限
那么开源免费Frp技术你值得拥有
环境要求
公网云服务器1台域名
本地VMware虚拟机 或 个人PC 或 无公网的服务器
当前需求
本地虚拟机搭建多个网站提供对外服务
共使用 域名2个,虚拟机,1台,公网云服务器1台
配置教程
1.下载frp软件包,开源地址如下
官网下载地址:https://github.com/fatedier/frp/releases
2.选择合适的Server端和Clinet端的版本
Server端指的是上述提的内网机器,Clinet端指本地的虚拟机或其他
因为我这边的公网服务器是X86架构的Centos操作系统,本地虚拟机也是,所以下载的是下图中红框的软件包
3.分别上传到公网服务器和本地虚拟机
frps开头的是server端需要保留的,frpc开头的是client端需要保留的
server端保留以下文件即可
client端保留以下文件即可
4.开始配置相关服务
服务端编辑frps.ini,我这边相关配置如下
[common]
server_addr = 43.138.196.XX #服务端的地址,也就是公网的IP
bind_port = 7000 #frps服务的运行端口,可以按照个人喜好更改
vhost_http_port = 8000 #监听http协议的端口,可以修改
vhost_https_port = 8001 #监听htts协议的端口,可以按照个人喜好
dashboard_port = 7500 #服务端监控面板的端口
dashboard_user = admin #服务端监控面板的账号
dashboard_pwd = 123456 #服务端监控面板的密码
全面安全的配置:
[common]
bind_addr = 0.0.0.0 //绑定地址
bind_port = 8888 //TCP绑定端口
bind_udp_port = 8888 //UDP绑定端口
kcp_bind_port = 8888 //KCP绑定端口
vhost_http_port = 80 //HTTP代理端口
vhost_https_port = 443 //HTTPS代理端口
dashboard_addr = 0.0.0.0 //仪表盘地址
dashboard_port = 10000 //仪表盘端口
dashboard_user = admin //仪表盘用户名
dashboard_pwd = admin //仪表盘密码
token = 123456 //连接密码
subdomain_host = test.com //子域名使用的主机名
服务端编辑frpc.ini,我这边相关配置如下
本地虚拟机搭建web的方式是基于nginx的域名、端口、IP三种方式中的端口来搭建网站所以下面的配置文件中都需要指定每个网站本地的端口号
[common]
server_addr = 156.224.25.XXX
server_port = 7000
[web1]
type = http
custom_domains = web1.nuoyo.site
local_port = 8081
local_ip = 127.0.0.1
[web2]
type = http
custom_domains = web2.nuoyo.site
local_port = 8082
local_ip = 127.0.0.1
[common]
server_addr = 172.16.100.100 //服务器地址
server_port = 8888 //服务器绑定端口
token = 123456 //特权模式密码
tls_enable = true //加密传输
admin_addr = 127.0.0.1 //客户端Web地址
admin_port = 7400 //Web访问端口
admin_user = admin //Web访问账户
admin_pwd = admin //Web访问密码
user = your_name //用户名,设置后代理将显示为 <用户名.代理名>
[web] //服务名称(自定义)
local_ip = 127.0.0.1 //本机ip
type = http //链路类型
local_port = 80 //本机端口
subdomain = web //服务端为test.com,故此处子域名为web.test.com
custom_domains = demo.com //自定义访问域名,多个使用,分割
use_compression = true //使用压缩
use_encryption = true //使用加密
[ssh]
local_ip = 127.0.0.1
type = tcp
local_port = 22
remote_port = 9000
use_compression = true
use_encryption = true
5.启动
公网输入:nohup ./frps -c ./frps.ini >/dev/null 2>&1 &
本地输入:nohup ./frpc -c ./frpc.ini >/dev/null 2>&1 &
6.网站配置
将上述配置文件的monitor.nuoyo.cn和web2.nuoyo.site域名解析至公网服务器
6.1 公网服务器端配置
我这边的公网云服务器和本地服务器都安装了宝塔面板,公网服务器宝塔面板相关配置如下,添加monitor.nuoyo.cn和web2.nuoyo.site两个站点,不用搭建任何东西,只需要新建并且反向代理本地的 8000 端口,8000 端口就是我在公网服务器配置的HTTP协议的监听端口,如果是HTTPS就把8000改成8001
6.2 本地虚拟机配置
绑定本机的IP地址和端口,例如我的8081端口对应的域名是monitor.nuoyo.cn,8082端口对应的是web2.nuoyo.site
验证
每个网站的index.html我都修改成了对应的域名,验证结果如下: