在外网的环境中无法访问到内网的服务器,为了实现内网穿透,需要使用有公网ip的云服务器实现端口映射的功能,从而使我们在外网的环境中访问到内网中的服务器
使用的工具为frp ,支持多种传输协议:tcp、udp、http等
设备
- 实验室的服务器: Ubuntu 22.04.4, 其作为frp的客户端
- 阿里云轻量级服务器: Ubuntu 20.04.6 其作为frp的服务端
服务端的配置
1.下载FRP
打开终端:
命令行输入:
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz
下载完成后,需要进行解压:
tar -zxvf frp_0.32.1_linux_amd64.tar.gz
解压后,目录下会出现文件夹frp_0.32.1_linux_amd64, 进入该文件夹后,文件如下所示: 其中以frps开头的文件是服务端需要的文件,frpc开头的文件则是一会我们需要再客户端进行配置。
2.配置frps.ini文件
我们使用vim工具修改frps.ini的内容,其中bind_port表示的是与后面客户端进行通信的端口。我们在这里设置为5000。
[common]
bind_port = 5000
在配置好ini文件后,我们需要再阿里云轻量级服务器的防火墙配置中,打开5000端口
我们首先打开防火墙模板标签页,创建一个防火墙的模板并在模板中开放5000端口。
然后应用于我们在阿里云上创建的服务器实例:
然后在公网服务器中配置防火墙
firewall-cmd –zone=public –add-port=5000/tcp –permanent
然后重新加载防火墙配置
firewall-cmd –reload
3.启动服务
最后我们在终端输入以下命令来启动服务:
./frps -c ./frps.ini
执行后如图如下所示:
客户端的配置
1.下载FRP
和服务端的步骤是一样的,下载后解压即可。
2.配置frpc.ini文件
同样使用vim来修改frpc.ini文件中的内容,客户端的修改要比服务端的稍微复杂一些。
客户端的配置如下,解释下文件中几个变量
[common]
server_addr = 121.40.115.216
server_port = 5000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
server_addr表示的是服务端的公网ip
server_port表示的是服务端的通信端口,与服务端bind_port一致
ssh下的type表示的是通信方式,保持tcp不变即可
local_ip表示的是内网服务器的ip地址,这里填写127.0.0.1表示本机
local_port表示的是ssh连接的默认端口号
remote_port表示的是自定义的访问内部的端口号
注:
这里要注意:如果我们的remote_port设置为5000,server_port设置为6000,则需要在阿里云防火墙模板中均开放5000和6000端口号
之前我们配置了5000端口号,同样地,然后在公网服务器中配置防火墙6000号端口
firewall-cmd –zone=public –add-port=6000/tcp –permanent
然后重新加载防火墙配置
firewall-cmd –reload
这是可以查看开放端口列表:
firewall-cmd –zone=public –list-ports
输出结果应为:
5000/tcp 6000/tcp
3.启动客户端
在终端输入以下命令来启动客户端的服务
./frpc -c ./frpc.ini
执行后客户端运行结果如下所示:
而服务端变成:
连接
我们可以服务端和客户端的指令运行在后台
可以使用tmux工具或者使用nohup ./frps -c frps.ini &指令运行在后台。
然后我们使用另外一台电脑在外网环境下连接我们的服务器
ssh -p 6000 username@xxx.xxx.xxx.xxx
注意:-p 后的端口号使用的是remote_port , username使用的是实验室服务器的用户名,后的ip地址填写阿里云公网服务器地址。
评论前必须登录!
注册