通过frp实现内网穿透功能
让我们从0开始搭建一个很酷的内网穿透功能.
作为一名程序员,谁不想拥有一个自己的云服务器呢. 但是当我们看了各大云服务器厂商的价格后, 不禁陷入了沉思:我好像对云服务器的诉求也没那么大!
等我们回家看到家里闲置的老旧电脑时,又会想,我为啥要用云服务器呢,家里的电脑改吧改吧, 不也就可以用了. 我们又不用做大流量的网站,
最多搞搞博客,跑跑爬虫啥的,只要能让我们可以随时在外面访问我家里的电脑,控制家里的电脑就行了.
好的,说干就干, 经过一番调研, 我们发现, 好像没自己想象的那么简单. 一个最直接的问题就是, 我们没有一个自己的ip,因为众所周知的ipv4资源耗尽的问题,
我们家里实际上网的ip其实不是固定的, 而是多家用户共享一个ip地址,也就是NAT(Network Address Translation)技术. 所以,从外网我们是无法直接访问家里的电脑的.
这个问题怎么解决呢? 就是我们今天要聊的话题, 内网穿透技术.
什么是内网穿透
内网穿透,也即NAT穿透,进行NAT穿透是为了使具有某一个特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机.
大致流程如图:
准备工作
- 一台云服务器, 最便宜的即可,我们主要用其来注册内网服务器, 转发请求
- frp工具
- 家用电脑,台式,笔记本都行,操作系统任意.
开始内网穿透
云服务器搭建frp服务
参考官方安装frp说明, 下载合适自己服务器的frp版本, 解压到自定义的frp服务目录.
因为是服务器部分, 我们直接启用frps 即可启动成功frp的服务部分.
1 |
|
配置部分参考官方配置样例. 我们demo样例只使用ssh基本服务, 就用了默认配置.
1 |
|
配置frps为系统服务(选做)
为了方便, 我们一般会将frps配置成系统重启自动加载. 这样我们就不用担心服务器系统重启导致内网穿透服务掉线了.
方法如下:
- 先确认系统支持
systemd
, 如果不支持请安装
1 |
|
- 配置frps.service服务
1 |
|
写入下面内容
1 |
|
- 开机自动启动
1 |
|
家用电脑安装frp客户端
我家里的电脑是windows10, 当然, Linux更好. 本次内网穿透的目的是可以通过远程ssh控制我的家用电脑.
win10的一些准备功能
windows系统作为家用本, 对网络权限限制的比较多, 需要我们额外做一些操作.
a. 安装windows的ssh服务端
win10默认是不支持ssh的服务端的, 需要我们安装相应的OpenSSH服务器.
操作步骤: 设置->应用-> 应用与功能 -> 可选功能 -> 添加OpenSSH服务器
最后开启ssh服务,以管理员身份打开cmd终端,执行如下命令
1 |
|
b. 防火墙可能会将frpc识别为危险文件, 记得去防火墙那里将工具恢复.
配置frp客户端
从官网下载下frpc客户端后,且成功从防火墙那里逃生, 就可以继续后面的操作了
首先同样先修改配置文件
1 |
|
然后打开cmd终端使用命令行的方式启动frpc工具
最后就可以在外网使用ssh命令访问你的系统了
1 |
|
frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口
修改window默认终端为powerShell(选做)
windows的默认终端为cmd, 很多命令不与linux兼容. 所以建议将windows的默认终端改为powerShell, 更方便.
1 |
|