0%

frp实现内网穿透

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
2
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

chmod命令用法

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#[common]为必填项
[common]

#绑定端口为7000,客户端连接服务端时需填写相应的端口,阿里云ECS需要在安全组中开放这些端口才能使用
bind_port = 7000

#仪表盘配置[可以根据自己的需要来设置,可以不设置]
#分别为地址、端口、登陆账号和密码,可以查看当前的frp服务状态
#可以通过在浏览器,输入你的服务器IP + : +仪表盘端口号访问
#假设你的服务器IP为1.1.1.1,则访问地址为1.1.1.1:4000
#账号密码不设置默认为admin
dashboard_addr = 0.0.0.0
dashboard_port = 7001
dashboard_user = admin
dashboard_pwd = admin

#[连接口令/密码] 建议设置,这样别人就不能在没有口令的情况下使用你的服务器作为FRP服务器了
token = 123456789

实操如图:
image.png
DAMN IT!忘记保存了······再来
ATOM不会自动保存···菜啊

9.1 运行

1
./frps -c ./frps.ini

如图开启成功:
image.png
但是这种方法需要保持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
2
3
ps -ef|grep "frps"
# 获取进程号,最右边是执行的命令,最左边的数字是进程号,假设进程号是1234
kill 1234

image.png

配置受控端

受控端的frp下载方法和服务器的步骤一样,所以参照1到5就好了,权限的话,可以不用配置

10 修改配置文件

1
vim frpc.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[common]
#服务器IP地址,也可以是域名,甚至是IPv6地址,不过要再两侧添加方括号,假设我的服务器IP是1.1.1.1
server_addr = 1.1.1.1
#服务器设置的绑定端口
server_port = 7000
#服务器设置的密钥
token = 123456789

[tcp_port]
#因为SSH属于TCP的一种,所以类型选择TCP,还有HTTP, STCP, XTCP等可以根据自己的需要设置
type = tcp
#本地IP一般都是127.0.0.1 这个不用改
local_ip = 127.0.0.1
#待转发的端口号,SSH默认是22
local_port = 22
#远程端口号,使用[服务器IP:远程端口]将可以访问本地(受控端)的22号端口,在本示例中即1.1.1.1:15626
remote_port = 15626

image.png

11 运行

1
nohup ./frps -c ./frps.ini 2>&1 ./nohup.out &

至此服务和受控端都配置完成了!

XShell连接

在Windows10使用XShell,secureCRT,Putty之类的软件就可以对内网的Ubuntu进行远程连接了
connect.png

参考文章

[1]内网穿透神器搭建 萌新也看得懂的教程系列

欢迎关注我的其它发布渠道