浅谈frp内网穿透的基本配置

frp是一个apache2.0开源的内网穿透软件,对大部分操作系统的适配都非常好,github:https://github.com/fatedier/frp

基本配置

frp分为frps(服务端)和frpc(客户端)两个可执行文件。当我们访问我们想要的资源时,我们的请求由frps接收,并根据配置文件的规则转移给frpc。所以frps需要部署在有公网IP的服务器上,frpc部署在资源所在的服务器上。
我们选择对应的操作系统和CPU架构,下载并解压frp,需要注意的是,frps和frpc二者版本号必须相同。
windows系统需要在cmd中执行命令。
运行命令可以参考:https://enterdawn.top/%e5%86%85%e7%bd%91%e7%a9%bf%e9%80%8f%e5%ae%9e%e7%8e%b0%e5%a4%96%e7%bd%91%e8%ae%bf%e9%97%ae%e6%a0%a1%e5%9b%ad%e7%bd%91%e5%86%85%e7%bd%91/

支持的协议

协议 说明
tcp 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
udp 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
http 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。
https 针对 HTTPS 应用定制了一些额外的功能。
stcp 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
sudp 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
xtcp 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。
tcpmux 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。

配置文件

最基本的,frps.ini,指定一个服务端运行所在的端口,同时为了安全起见,最好设置一个验证字符串。

//使用时请删除注释
[common]
bind_port = 7000 //运行端口
token = token_value //验证字符串

frpc.ini中指定服务端IP和配置的服务类型。

//使用时请删除注释
[common]
server_addr = 123.123.123.123//服务端的IP
server_port = 7000 //服务端的端口号
token = token_value //验证字符串,和frps.ini相同
[ssh]//我们以TCP协议转发22端口(即转发SSH连接)为例,“ssh”这个名字只是便于识别,换个名字也行
type = tcp //连接协议
local_ip = 127.0.0.1 //映射到的内网服务IP,我们也可以通过这台机器连接到其他内网资源
local_port = 22//内网服务的端口
remote_port = 6000//用于远程连接的端口,记得在服务端放开这个端口

[ssh2]//另外一个连接
type = tcp //连接协议
local_ip = 192.168.1.100 //一个在frpc所在的局域网中的其他机器
local_port = 22
remote_port = 6001

我们分别运行服务端和客户端,如果没有错误,我们就可以通过 123.123.123.123:6000 对frpc所在的机器进行SSH连接,通过123.123.123.123:6001对frpc所在局域网的IP为192.168.1.100的机器进行连接。

映射http服务

首先我们在frps.ini中指定http访问端口

[common]
bind_port = 7000
vhost_http_port = 8080

然后在frpc.ini中指定访问的域名

[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com

[web2]
type = http
local_port = 8080
custom_domains = www.yourdomain2.com

记得在域名服务商那里添加解析。
通过浏览器访问 http://www.yourdomain.com:8080 即可访问到处于内网机器上 80 端口的服务,访问 http://www.yourdomain2.com:8080 则访问到内网机器上 8080 端口的服务。当然如果服务端上没有web服务,我们也可以直接把frps.ini中的vhost_http_port设为80,以免输入端口号。

搭建代理

在frpc.ini下面加入:

[http_proxy]
type = tcp
remote_port = 6000
plugin = socks5//代理的协议,用户名和密码
plugin_user = 123
plugin_passwd = 123

本文参考或复制了部分frp官方文档中的文字。

知识共享许可协议
Text is available under CC BY-NC-SA 4.0 unless otherwise stated.

除非特殊声明,本站所有内容均以 CC BY-NC-SA 4.0协议授权。
上一篇
下一篇