frp内网穿透实战

什么是frp

frp是一个使用非常简单的开源内网穿透软件,代码地址:https://github.com/fatedier/frp ,使用条前提你需要有一台公网服务器,大致原理是:公网服务器监听某个端口等待内网服务器连接,内网服务器连接成功后用户访问公网的某一个端口,访问的所有内容都会转发到内网服务器,也就是所有的请求都会经过公网服务器转发一次,还不是真正的完全内网穿透。

准备工作

frp内网穿透实战

配置&启动

公网服务器

tar -zxvf frp_0.43.0_linux_amd64.tar.gz mv frp_0.43.0_linux_amd64 frps cd frps # 删除客户端相关无用文件 rm -rf frpc* vim frps.ini 

frps.ini配置:

[common] # 等待内网服务器连接的端口 bind_port = 7000 # 最终用户访问的端口(http) vhost_http_port = 7080 # 最终用户访问的端口(https) vhost_https_port = 7081 # 密钥,最好设置,避免你的服务器被他人冒用 token = 123456 

启动:./frps -c ./frps.ini,不出意外的话就启动成功了:

frp内网穿透实战

内网服务器

也就是你本机,假设以Mac为例:

tar -zxvf frp_0.43.0_darwin_arm64.tar.gz mv frp_0.43.0_darwin_arm64 frpc cd frpc # 删除服务端相关文件 rm -rf frps* vim frpc.ini 

frpc.ini配置:

[common] # 你的公网IP server_addr = 112.*.*.* # 前面设置的连接端口 server_port = 7000 # 前面设置的密钥 token = 123456  # 这个名字可以随便取web1、web2等,但是需要保证所有客户端唯一 [web1] type = http # 需要转发的内网端口 local_port = 8080 # 自定义域名,如果没有域名直接填写公网服务器的IP custom_domains = 112.*.*.* 

然后启动:./frpc -c ./frpc.ini,不出意外的话已经内网穿透成功了:

frp内网穿透实战

访问 http://公网IP:7080 返回的应该是 http://127.0.0.1:8080 的内容。

进阶

自定义域名

直接使用IP最多只能允许一台内网服务器访问连接,自定义域名可以解决此问题。内网服务器将custom_domains修改为一个能指向公网服务器的域名,例如:

custom_domains = testfrp.haoji.me 

然后访问:http://testfrp.haoji.me:7080 即可看到 http://127.0.0.1:8080 的内容。

只使用一个端口

公网服务器的vhost_port其实可以和bind_port保持一致,这样可以更好理解:

[common] bind_port = 7000 vhost_http_port = 7000 vhost_https_port = 7000 token = 123456 

然后访问:http://testfrp.haoji.me:7000 即可看到 http://127.0.0.1:8080 的内容。

隐藏访问端口

用户访问的时候还需要带一个端口,访问不太方便,可以利用nginx再转发一层:

server {     listen       80;     server_name  testfrp.haoji.me;     location / {            proxy_pass http://testfrp.haoji.me:7000;     } } 

然后访问:http://testfrp.haoji.me 即可看到 http://127.0.0.1:8080 的内容,实现了最完美的内网穿透。

发表评论

评论已关闭。

相关文章