• 隐藏侧边栏
  • 展开分类目录
  • 关注微信公众号
  • 我的GitHub
  • QQ:1753970025
Chen Jiehua

frp:一个内网穿透神器 

目录

最近在折腾家里的NAS和树莓派,一切配置配置妥当后发现一个难以解决的问题:那就是小区的网络并没有提供公网ip。虽然可以打电话给运营商投诉申请,然而估计不会那么容易就搞到一个公网ip。于是便决定曲线救国,找找内网穿透的工具……

frp

经过一番搜寻,发现了一个神器 frp,它是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。

使用frp,需要准备一个具有公网ip的服务器,现在国内廉价的vps已经是白菜价了,随便从阿里云或腾讯云买一台最低配的就足够使用了(选择低价的同时,区域可以选择尽量靠近自己的数据中心,以减少网络延时)。

架构

借用官网的图片:

frp分为服务端 frps 和客户端 frpc 两部分,frps运行在具有公网ip的服务器上,frpc则运行在我们内网的机器上。根据我们实际的操作系统和架构,我们可以github release页面中直接下载最新版本的frp。

服务端frps

修改配置文件 frps.ini,无需太多自定义配置,我们只需要设置服务端监听端口即可:

[common]
bind_port = 7000

启动 frps:

./frps -c frps.ini

另外,在服务器上我们也可以使用 supervisor 来运行 frps:

[program:frp]
directory=/home/ubuntu/vhost/frp
command=/home/ubuntu/vhost/frp/frps -c frps.ini
autostart=true
autorestart=true
user=root
redirect_stderr=true
stdout_logfile=/home/ubuntu/log/frp/server.log

客户端frpc

修改配置文件 frpc.ini,填写我们服务器的公网ip:

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

然后配置需要转发的端口,比如 ssh 服务:

[ssh]
type = tcp
local_ip = 127.0.0.1    
local_port = 22
remote_port = 2222   

启动 frpc:

./frpc -c ./frpc.ini

这样子,我们的服务器就会开始监听 2222 端口,并将所有该端口请求流量通过 frp 转发到内网机器的 22 端口上。于是,我们在外网就可以间接地ssh到内网机器上:

ssh user@x.x.x.x -p 2222

其它

此外,frp还支持dns查询转发、unix套接字转发、加密、点对点穿透等功能,可以在github查看完整的配置示例。

参考:

码字很辛苦,转载请注明来自ChenJiehua《frp:一个内网穿透神器》

评论