参考链接:
fatedier/frp
内网穿透工具-frp傻瓜式搭建教程
手把手教你用frp实现内网穿透,进行远程桌面和http访问
frp 下载链接:
https://github.com/fatedier/frp/releases
frp0.31.1linuxamd64.zip
frp0.31.1windowsamd64.zip
其中 windows_386 表示 windows 平台 32 位机器;
windows_amd64 表示 windows 平台 64 位机器;
linux_386 表示 Linux 平台 32 位机器;
linux_amd64 表示 Linux 平台 64 位机器 (Linux 平台一般使用这个)
arm 代表嵌入式;
别的代表别的平台,可能是手机等不同环境;
Linux 通过指令 arch 可以查看 CPU 体系结构,显示 x86_64 一般使用 amd64;
搭建环境:
- CentOS 服务器(阿里云)
- 二级域名 frp.rainsheep.top 解析至服务器
通过自定义域名访问
1. 将 Linux 的 frp 工具传至服务器
2. 配置服务器端 frps.ini 配置文件
bind_port 代表软件端口;
vhost_http_port 代表虚拟主机的端口,就是当通过域名访问内网主机中的 Web 项目时需要用到的端口。
3. 运行服务端
运行指令:./frps -c ./frps.ini
启动以后如下图所示:
此窗口不可以关闭,此处通过 screen 实现后台运行,参考Centos下screen命令
4. 配置客户端
-
解压客户端工具(我为 windows10)
-
配置 frpc.ini 文件
[common] server_addr = 39.105.149.231 server_port = 7000 [web] type = http local_ip = 127.0.0.1 local_port = 8080 custom_domains = frp.rainsheep.top
server_addr = 服务器 IP
server_port = 服务器配置文件中的 bind_port
local_port = 要访问的本地 Web 服务器端口
custom_domains = 自定义域名(前面已经解析至服务器)
4. 客户端启动 frp
打开 cmd→进入 frp 文件夹 →输入命令frpc.exe -c ./frpc.ini
5. 测试
本地访问:
远程访问:
通过 RDP 连接 Windows 桌面
1. 服务器端设置
服务器端的设置与上边设置相同,可以不更改,此项中服务器端的 vhost_http_port 不会用到,但可以设置以后放那不管。
2. 客户端配置
配置文件:
[common]
server_addr = 39.105.149.231
server_port = 7000
[RDP]
type = tcp
local_ip = 0.0.0.0
local_port = 3389
remote_port = 6000
remote_port 就是远程连接桌面的时候需要连接的窗口
允许远程桌面连接:
计算机 →属性 →远程设置 →勾选远程协助中允许远程协助连接这台计算机 →勾选远程桌面中允许远程连接到此计算机
远程连接需要账号密码,如果不知道账号密码,此电脑 →管理 →本地用户和组 →用户 →Administrator→设置密码
3. 远程连接
使用:服务器 IP:remote_port 即可
通过 SSH 连接内网 Linux
1. 服务器端配置
与上类似
2. 客户端配置
[common]
server_addr = 39.105.149.231
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
运行方式:
./frpc -c ./frpc.ini
3. 远程连接方式
ssh -oPort=6000 username@39.105.149.231
综上
本地文件可以配置为一个文件:
[common]
server_addr = 39.105.149.231
server_port = 7000
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
custom_domains = frp.rainsheep.top
[RDP]
type = tcp
local_ip = 0.0.0.0
local_port = 3389
remote_port = 6000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6001
ssh的remote_port改为6001为了防止远程端口冲突(与RDP冲突)