frp 实现内网穿透 最简配置
内网环境现在可以说非常的普遍,如果连接控制的内网环境设备的话,就变得非常不方便,像端口映射,dmz 主机已经不能满足我们的要。不过好在现在实现内网穿透的工具也很多,在这里就记录下一这款配置简单,功能强大的内网穿透工具 FRP 的配置实战。
环境
公网服务器:Ubuntu 系统 16.04(阿里云 ECS,学生优惠你懂的,SSH 1M 带宽够用了)
内网受控设备:Ubuntu 系统 16.04
主动访问设备:Windows10
FRP 版本 0.28.0 因为 FRP 有中文文档,所以配置起来非常友好。
服务器配置
远程配置阿里云 ECS,全程用命令行就可以搞定。
查看架构 (仅适用于 linux):
1 | arch |
x86_64 对应的是 linux_amd64, 下载 frp 时选择
1、跳转到根目录
1 | cd /root |
2、从地址下载
从链接中我们可以看出版本号,获得更新的版本以此类推,修改连接中的两组数字就好了,可以从作者的 release 中获得
1 | wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.28.0/frp_0.28.0_linux_amd64.tar.gz |
3、解压文件夹
1 | tar -xzvf frp_0.28.0_linux_amd64.tar.gz |
tar 解压命令
必选且仅能一个的参数有
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
可选参数有:
-z:有 gzip 属性的
-j:有 bz2 属性的
-Z:有 compress 属性的
-v:显示所有过程
-O:将文件解开到标准输出
-f: 使用档案名字,最后一个参数且是必选
4、重命名减小名字长度
1 | mv frp_0.28.0_linux_amd64 frp |
mv 命令其实就是移动
第一个参数时要移动的文件或文件夹的路径,缩略不写则为当前路径。
第二个参数时目标路径,并以后者名字保存
cp 是复制命令
5、跳转到文件夹 frp
1 | cd frp |
6、 修改权限
为了保证我们要执行的程序 frps 拥有足够的权限所以执行
1 | chmod +x frps |
7、尝试启动
1 | ./frps --help |
1 | ./ |
表示的是当前路径
1 | ../ |
表示的是当前路径的上级目录
8、修改配置文件
1 | vim ./frps.ini |
* 如果显示 commond not found 的话,可以考虑 sudo apt-get install vim,安装一下
或者使用 vi ./frps.ini
frpc.ini 是客户端(client)的配置文件
frpc_full.ini 存放了所有客户端可以选择的配置选项
frps.ini 是服务端(service)的配置文件
frps_full.ini 存放了所以服务端可以选择的配置选项
而且官方还提供了完整的中文说明
* 对于 vim 常用指令在度娘上也有很多,简单易上手。
常用的有(注意区分大小写)
ESC 回到命令模式
i 插入模式
dd 删除当前行
保存退出的方法:ESC → 输入 wq
对于 Xshell 中 vim 小键盘输入会出现字母的情况可以更改 属性→终端→终端配置来解决
以下是我使用的配置
1 | #[common]为必填项 |
实操如图:
DAMN IT! 忘记保存了・・・・・・再来
ATOM 不会自动保存・・・菜啊
9.1 运行
1 | ./frps -c ./frps.ini |
如图开启成功:
但是这种方法需要保持 SSH 连接,才能正常运行
9.2 后台运行
1 | nohup ./frps -c ./frps.ini 2>&1 ./nohup.out & |
nohup: 程序不会挂起
2>&1 nohup.out: 将日志输出到当前目录下 nohup.out 文件中
最后一个 & :后台运行
这样就可以保证 frp 后台运行,即使关闭 SSH 连接也不受影响
9.3 结束运行
方法一:使用 pkill [程序名] 直接结束程序
1 | pkill frps |
方法二:使用 ps -ef|grep “frps” 查询进程号再用 kill [进程号结束]
1 | ps -ef|grep "frps" |
配置受控端
受控端的 frp 下载方法和服务器的步骤一样,所以参照 1 到 5 就好了,权限的话,可以不用配置
10 修改配置文件
1 | vim frpc.ini |
1 | [common] |
11 运行
1 | nohup ./frps -c ./frps.ini 2>&1 ./nohup.out & |
至此服务和受控端都配置完成了!
XShell 连接
在 Windows10 使用 XShell,secureCRT,Putty 之类的软件就可以对内网的 Ubuntu 进行远程连接了
v1.5.2