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查看完整的配置示例。
参考:
评论