一、什么是内网穿透
内网穿透是将内网外网通过软件将隧道打通,内网的数据让外网可以获取。比如内网部署一个项目,可以通过外网域名/ip进行访问
二、内网穿透可以做什么?
1.放在家中的电脑,可以通过内网穿透软件打通,远程管理家里电脑
2.数据如果放在公网服务器,由于缺少系统安全维护知识,会变得很危险.而用了内网穿透软件之后,将服务器放在本地,暴露给公网的也仅仅是应用层面的一个端口,其他系统上的漏洞/端口都被隐藏起来.从这个层面来说,提高了很多安全性.
3.云服务价格比较昂贵,可通过内外网穿透软件实现服务器的扩容
4.管理内网服务器,内网web进行演示
5.本地WEB外网访问、本地开发微信、TCP端口转发
三、内外网穿透工具
- Ngrok
- Natapp
- Sunny-Ngrok
- echosite
- Ssh、autossh
- Lanproxy
- Spike
- frp
- fcn
- 花生壳
四、必要条件
必须有公网ip,并且可以正常访问
域名,用来生成访问域名。
五、frp部署运行
文件准备
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
下载地址:https://github.com/fatedier/frp/releases
为什么使用 frp ?
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
frp代理ssh服:务样例演示通过 ssh 访问公司内网机器,代理多个域名服务
- 修改 frps.ini 文件,配置一个名为 ssh 的反向代理:
# frps.ini [common] bind_port = 8002 dashboard_port = 8001 token = ksrd@3XX dashboard_user = admin dashboard_pwd = ksrd@3XX# vhost_http_port = 8888 [web] type = http custom_domains = shinians.com [api28080] type = http custom_domains = shinians.com [wiki] type = http custom_domains = shinians.com
启动 frps:
./frps -c ./frps.ini
修改 frpc.ini 文件,设置 frps 所在服务器的 IP 为 x.x.x.x:
# frpc.ini [common] server_addr = 47.92.30.XXX server_port = 8002 token = ksrd@3XX [ssh] type = tcp local_ip = 192.168.31.216 local_port = 3389 remote_port = 8003 [web] type = http local_port = 7777 local_ip=192.168.31.112 custom_domains = api.shinians.com [api28080] type = http local_port = 28080 local_ip=192.168.31.112
启动 frpc:
./frpc -c ./frpc.in
问题汇总:
1.错误日志:名称被占用,修改通道名称
[ssh] start error: proxy name [ssh] is already in use
2.服务端配置token和端口后,客户端配置认证信息后,只需指定如下信息即可,服务端会自动监听该端口
[common]
server_addr = 47.92.30.XXX
server_port = 8002
token = ksrd@3XX
[ssh]
type = tcp
local_ip = 192.168.31.216
local_port = 3389
remote_port = 8003
后台守护进程运行frp服务
服务端: nohup ./frps -c ./frps.ini >/dev/null 2>& 1 &
客户端:nohup ./frpc -c ./frpc.ini >/dev/null 2>& 1 &
说明:>/dev/null 2>&1 &,表示丢弃。
后端管理页面
管理页面 http://47.104.247.XXX:8001/static/ admin /ksrdXXXX
代理多个域名服务注意事项
1.服务端,vhost_http_port端口指定时,注意不要和nginx 80端口重复,一般用nginx作为80主配置
2.服务端,配置二级域名清单
vhost_http_port = 8888
[web]
type = http
custom_domains = shinians.com
[api28080]
type = http
custom_domains = shinians.com
3.客户端,通道名称一一对应
4.客户端,配置子域名
[web]
type = http
local_port = 7777
local_ip=192.168.31.112
custom_domains = api.shinians.com
[api28080]
type = http
local_port = 28080
local_ip=192.168.31.112
5.启动后,访问地址为 子域名:vhost_http_port 如:api.shinians.com:8888 (重要)
6.可通过nginx配置去掉端口
server {
listen 80;
server_name wiki.shinians.com;
location / {
proxy_pass http://wiki.shinians.com:8888/;
root html;
index index.html index.htm;
}
}
六、视频&软件分享
公众号 架构师速成记 回复 "frp" 获取视频讲解和软件、配置样例、ppt等