PancrasL的博客

frp内网穿透工具使用指南(完善中)

2021-06-04

architecture

1. frp介绍

https://github.com/fatedier/frp

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

2. 安装

1
2
3
4
5
# linux
$ wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz

# windows
$ wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_windows_amd64.zip
1
2
# 解压
$ tar -xzf frp_0.37.0_linux_amd64.tar.gz

3. 使用

3.1 使用TCP暴露内网的服务

前期准备

  • 一台拥有公网ip的服务器:运行frps,进行流量转发
  • 一台能访问到服务器的内网机器:运行frpc,提供流量服务
  • 访问端:访问公网服务器,并由frps将流量转发到frpc端,实现访问内网机器的功能

服务器端配置(假设ip地址为x.x.x.x)

服务器开放7000端口监听来自客户端的连接

  • frps.ini
1
2
[common]
bind_port = 7000
  • 启动
1
$ ./frps -c frps.ini

内网机器配置

客户端连接到服务器的7000端口,然后将本地的4000端口的tcp服务映射到服务器的10010端口上,之后访问服务器ip:10010端口的流量都会被转发到客户端:4000端口上。

  • frpc.ini(将本地4000端口的tcp服务映射到远程服务器的10010端口上)
1
2
3
4
5
6
7
8
9
[common]
server_addr = x.x.x.x
server_port = 7000

[hexo]
type = tcp
local_ip = 127.0.0.1
local_port = 4000
remote_port = 10010
  • 启动
1
$ frpc.exe -c frps.ini

访问

  • 使用浏览器打开 x.x.x.x:10010 即可访问内网 4000 端口的服务。

3.2 使用frp搭建点到点内网穿透,来访问windows远程桌面

服务器起桥梁作用,帮助两台内网机器建立连接。

一旦建立链接,所有的流量只在两台内网机器之间传递(要求两台机器都运行frpc)

  • 具有公网ip的服务器
  • 内网机器1:被访问
  • 内网机器2:执行访问

服务器(桥梁)

  • frps.ini
1
2
3
[common]
bind_port = 7000
bind_udp_port = 7001
  • 启动
1
$ ./frps -c frps.ini

内网机器1(被访问)

  • frpc.ini
1
2
3
4
5
6
7
8
9
10
[common]
server_addr = xx.xx.xx.xx
server_port = 7000

[p2p_rdp]
type = xtcp
#SK跟访问者一致才能连通,可以自己随便设
sk = abcdefg
local_ip = 127.0.0.1
local_port = 3389
  • 启动
    1
    $ ./frpc.exe -c frpc.ini

内网机器2(访问)

  • frpc.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[p2p_rdp_visitor]
type = xtcp
role = visitor
#server_name同上面待其他设备访问的客户端中的配置[p2p_rdp]一致,待访问端和访问端中的p2p_rdp名字可以替换成自己想要的
server_name = p2p_rdp
#SK跟访问者一致才能连通,可以自己随便设
sk = abcdefg
bind_addr = 127.0.0.1
bind_port = 89

  • 启动
1
$ ./frpc.exe -c frpc.ini
  • 访问

访问127.0.0.1:89,然后127.0.0.1:89会将数据转发到远程服务器的3389端口建立rdp连接