0. 为什么内网穿透
从公网中访问自己的私有设备向来是一件难事儿。
自己的主力台式机、NAS等等设备,它们可能处于路由器后,或者运营商因为IP地址短缺不给你分配公网IP地址。如果我们想直接访问到这些设备(远程桌面,远程文件,SSH等等),一般来说要通过一些转发或者P2P组网软件的帮助。
1. 安装配置 frp
https://github.com/fatedier/frp/releases 下载最新的release
1.1服务端配置
1 | sudo cp systemd/frps.service /lib/systemd/system/ |
1.2 客户端
1 | sudo cp systemd/frpc.service /lib/systemd/system/ |
1.3 测试
主题frpc里面有ssh配置, 所以我们通过 ssh 访问内网机器:
1 | ssh -p 6000 root@49.234.15.70 |
2. 自定义域名访问内网的 web 服务
有时想要让其他人通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能,以下示例为 http 服务,https 服务配置方法相同, vhost_http_port 替换为 vhost_https_port, type 设置为 https 即可。
2.1 修改 frps.ini
设置 http 访问端口为 8080:
1 | # frps.ini |
2.2 启动 frps:
1 | sudo systemctl start frps |
2.3 修改frpc.ini
修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 web 服务对应的端口, 绑定自定义域名 www.yourdomain.com
:
1 | # frpc.ini |
2.4 启动 frpc:
1 | sudo systemctl start frpc |
2.5 绑定域名映射
将 www.yourdomain.com
的域名 A 记录解析到 IP x.x.x.x
,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。
通过浏览器访问 http://www.yourdomain.com:8080
即可访问到处于内网机器上的 web 服务。
3. frp 管理面板
服务端 frps 配置如下:
1 | [common] |
然后我们通过 ip:5000,即可以访问到 web 管理界面.
4. nginx 反向代理进行无端口访问
4.1 frp 相应配置
frps
1
2
3
4
5
6[common]
bind_port = 7000
dashboard_port = 5000
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 5001frpc
1
2
3
4[web]
type = http
local_port = 80
custom_domains = box.frp.liuvv.com
4.2 在服务端架设 nginx
1、 frp.liuvv.com 做A记录,解析至IP;
2、 *.frp.liuvv.com 做CNAME记录,解析至 frp.liuvv.com;
3、 配置nginx反向代理,将来自*.frp.liuvv.com的80端口请求,分发至frp服务器http请求的监听端口。
1 | server { |
5. 远程桌面连接局域网mac
mac去下载darwin_amd64, 然后启动客户端 frpc
5.1 开启屏幕共享
在系统设置->共享->开启屏幕共享
即开启了 vnc 服务
5.2 修改frpc配置
1 | [common] |
5.3 连接远程
在 finder, cmd+k, 进行连接
1 | vnc://49.234.15.70:35900 |