wangshuo'blog

wangshuo'blog

Frp 简单使用 | 实现内网穿透

我是短小精悍的文章摘要(๑•̀ㅂ•́) ✧

1. 为什么要使用frp内网穿透

我有一台计算机位于一个很复杂的局域网中,ip地址不是公网的IP地址,是使用了NAT转换的内网的IP地址 ,目前来看其所处的网络环境很难通过简单的端口映射将其暴露在公网之中

我需要访问到在内网主机的服务。如 ssh 服务、http 服务等服务。

2. frp是什么

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https, stcp 协议。利用免费 frp 内网穿透服务实现处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口,支持 80 端口穿透。利用处于内网或防火墙后的机器,对外网环境提供 tcp/udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机,支持 kcp 协议和点对点穿透。

3. 准备

  1. 一台云服务器(拥有公网的IP地址,作为服务端)

  2. 下载frp的安装包,下载地址如下:

    1
    https://github.com/fatedier/frp/releases

4. 服务端配置

查看操作系统架构

查看操作系统架构,选择下载frp的架构

选择错架构,在使用时会发生报错

Linux 平台可使用 uname 或 arch 命令来查看服务器架构

1
uname -a

结果是

x86_64 x86_64 x86_64 GNU/Linux

下载和解压

1
2
3
4
5
6
7
cd /usr/local/
# X86架构 根据自己的架构下载
wget https://github.com/fatedier/frp/releases/download/v0.31.2/frp_0.31.2_linux_386.tar.gz
# 解压缩
tar -zxvf frp_0.31.2_linux_386.tar.gz
# 进入frp_0.31.2_linux_386
cd frp_0.31.2_linux_386

删除frpc、frpc.ini

修改frps.ini,配置如下

1
2
3
4
5
6
7
8
9
[common]
bind_port = 7000 # frp服务器端和客户端的建立连接的端口号
vhost_http_port = 50070 #外网访问的端口号,可以改成80 ,8080等
# 下面的都不是必要的内容
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443

运行

1
2
3
4
# 1.后台运行
nohup ./frps -c ./frps.ini >frps.log &
# 2. 直接运行,但是会话结束进程关闭
./frps -c ./frps.ini

注意:在购买的云服务器上进行配置,要记住配置对应的出方向和入方向(安全组)。

客户端配置

下载frp安装包,解压 同服务器端操作

删除frps、frps.ini

修改frpc.ini

配置如下: vim frpc.int

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[common]
server_addr = 118.178.195.62 # 云服务器ip
server_port = 7000 # frp服务器端和客户端的建立连接的端口号

# 配置 ssh 服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 #外网ssh访问的端口号

# 配置 web 服务
[web]
type = http
local_ip = 127.0.0.1
local_port = 50070 #服务器的web端口,可以改成80,8080
custom_domains = 云服务器ip 或者 域名

运行

1
2
3
4
# 1.后台运行
nohup ./frpc -c ./frpc.ini >frpc.log &
# 2. 直接运行,但是会话结束进程关闭
./frpc -c ./frpc.ini

测试

1
ssh -p 6000 user@ip