Linux 使用 frp 实现内网穿透

徐健鑫 · December 12, 2019 · Last by 徐健鑫 replied at December 18, 2019 · 1965 hits

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。

frp 的作用
利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机

配置服务器端:
方案一:使用命令下载
我下载的时候,frp的最新版本已经更新到了30,因此命令如下:
wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz

备注:
看清楚自己服务器的是什么样的系统,可通过以下命令

根据返回,下载对应版本的压缩包;

方案二:直接进入frp对应的github中去下载对应的压缩包
https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz

备注:需要同时放到内网和云服务器中

下载完成后,通过如下命令解压:
tar -xvf frp_0.30.0_linux_amd64.tar.gz

继续执行:
cd frp_0.30.0_linux_amd64
执行ll,可以看到下图的文件结构

vim frps.ini

更改完成后,启动frps
./frps -c ./frps.ini

如果提示 cannot execute binary file 说明下错版本了,需要重新下载处理器架构对应的程序包;

配置客户端:
同理,下载文件:
https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz

解压:
tar -xvf frp_0.30.0_linux_amd64.tar.gz

进入目录cd frp_0.30.0_linux_amd64

此时需要注意,客户端需要更改的文件为frpc.ini
vim frpc.ini

需要说明一下
server_addr 对应云服务器公网IP
server_port 对应frps.ini中填写的bind_port
auth_token 对应frps.ini中填写的auth_token(可不填,不知道为什么我配置的时候,不填没法访问)

type 根据实际需要更改,只做内网穿透的话填写tcp
local_ip 本地IP地址,不用动,用默认的127.0.0.1
local_port 本地的端口号,根据实际需要变动
remote_port 对外的端口号,自己随便填就好

配置完成后,启动frpc
./frpc -c ./frpc.ini

启动成功后,通过ssh访问内网机器,假设内网机器的frpc所在低的用户为root

ssh -p 6000(frpc中配置的remote_port) root@x.x.x.x

若弹出需要输入pwsswprd,就是成功的了;
若返回连接错误,需要检查一下阿里云服务器是否将配置的remote_port加入到了安全配置中,若没有,则需要在安全规则中配置一下

参考:
https://github.com/fatedier/frp/blob/master/README_zh.md#%E5%BC%80%E5%8F%91%E7%8A%B6%E6%80%81
https://www.timeblog.cn/article/144.html

共收到 4 条回复 时间 点赞

我在电脑上试了一下arch 命令, 得到 i386 。 然后uname -p ,得到 x86_64。我有点懵,其他的还没试。
这是在mac 上操作的。

对比之下,natapp很垃圾?

hellohell 回复

x86_64代表你的系统是64位的,下载对应安装包的时候要下载同样带有x86_64的

married577 回复

没有用过natapp,frp是朋友推荐用的

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up