Linux 使用 frp 实现内网穿透

徐健鑫 · 2019年12月12日 · 最后由 徐健鑫 回复于 2019年12月18日 · 3609 次阅读

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 是朋友推荐用的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册