frp内网穿透方案,frp反向代理实现内网穿透,通过访问映射的外网域名端口,实现对内网服务器ssh、web、ftp等功能。
需求背景
之前活动办的单核2g的阿里云服务器性能有限,运行一个mysql加2个应用内存就快被打满了,所以就打算用自己的台式机作为家用服务器,本文记录了外网能够访问内网应用的实现过程。
网上查询了很多内网做服务器的实现方案:
- 具有公网ip,如果能获得公网ip的的话,直接访问ip即可
- 内网穿透,即通过第三方代理,访问代理服务器转到内网
由于家里是移动的宽带,获得公网ip没得可能,据说电信宽带可能有公网ip,电信网的童鞋可以试一试。所以想要内网做对外服务器,只能通过内网穿透来实现了。
方案选定
网上好多内网穿透的应用,如花生壳、nat123等等,可以将内网的端口穿透到外网,博主开始用花生壳实现了,但是免费版限流限量,操作繁琐,想绑定自己的域名也不好操作。所以抛弃此方案。
偶然间发现了frp内网穿透,可对外提供ssh、web端口,刚好满足我的需求,并且可免费使用(白嫖党首选,哈哈哈)。
环境准备
- 一台部署应用的内网机器(最好linux,windows开发ssh22端口比较麻烦,尝试失败后放弃;windows子系统linux同样的问题)
- 一台具有公网ip的云服务器(安装nginx进行域名转发)
- 一个备案好的域名(配置不同二级域名映射不同的web应用)
方案执行
下载安装frp
frp官方文档:https://gofrp.org/docs/
frp官方下载地址:https://github.com/fatedier/frp/releases
github下载速度贼慢的,可以通过加速网站下载,将下载链接贴入即可:https://toolwa.com/github/
内网电脑
将下载的frp压缩包解压:
1 | tar xzvf frp_0.33.0_linux_amd64.tar.gz |
将解压的文件夹移动重命名到/opt/frp下
1 | mv frp_0.33.0_linux_amd64 /opt/frp |
云服务器
和内网一样,解压并移动重命名,放到自己统一管理的位置,以便统一配置记录。正常来说应该移动到opt下,由于我所有的应用配置都放在etc/config下了,frp也放在这下面了。
1 | tar xzvf frp_0.33.0_linux_amd64.tar.gz |
配置frp
内网电脑
配置frcp.ini文件
1 | [common] |
云服务器
配置frps.ini
1 | [common] |
配置nginx
1 | server { |
配置阿里云安全组,开放6000、7000、7001、7002、8088端口
配置云服务器防火墙,开发上述端口:
1 | firewall-cmd --zone=public --add-port=6000/tcp --permanent |
启动frp
内网电脑
1 | cd /opt/frp |
云服务器
1 | cd /etc/config/frp |
关闭frp
1 | 查看进程 |
方案完成
自此配置完成,可通过公网的ip和对应的映射端口,进行ssh连接,和web应用的访问了,ssh连接时发现不能直接root用户连接,但是可以su root切换到root用户,所以不影响使用。
总结下来,除去配置服务器环境,frp的配置使用贼简单,是目前网上找到的符合当前需求的最完美解决方案,8核cpu,16g内存的服务器不要太爽,哈哈哈哈哈。