frp技术实现内网管道稳定穿透

实验环境
备注

内网机器可以访问公网机器,公网机器无法访问内网(局域网机器),通过frp 技术实现访问公网指定端口继而访问到内网(局域网)机器,从而实现内网穿透技术

主机主机用途
192.168.63.128公网机器
192.168.63.129内网机器
frp工作原理
服务端运行,监听一个主端口,等待客户端的连接;- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;- 服务端fork新的进程监听客户端指定的端口;- 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
公网机器上配置(192.168.63.128)
(1)下载frp库
https://github.com/fatedier/frp

(2)wget
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz 

网盘下载:(感谢大神分享)
链接:https://pan.baidu.com/s/1zeFAiqYWLnhvje8Z8AIw_w
提取码:xpa8

(3)解压frp压缩包
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64
vim frps.ini 
(4)将文件内容修改为如下:
[common]
# 访问客户端web http服务自定义的端口 
vhost_http_port = 7002
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = 52010  # 这个token之后在客户端会用到

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

(4)设置和启动frp服务
sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps
# 状态正常则表示启动成功
sudo systemctl status frps 

(5)防火墙开放端口(防火墙关闭则不用设置,忽略此步骤)
# 添加监听端口
sudo firewall-cmd --permanent --add-port=7000/tcp
# 添加管理后台端口
sudo firewall-cmd --permanent --add-port=7500/tcp
sudo firewall-cmd --reload

# 7000和7500两个端口分别对应frps.ini配置中的bind_port和dashboard_port

(6)验证服务端是否启动成功
访问:http://服务器IP:后台管理端口” ,输入用户名和密码可以查看连接状态 如:http://yourip:7500,用户名和密码分别对应frps.ini文件中的dashboard_user和dashboard_pwd 登录之后界面如下:

在这里插入图片描述如果上述步骤没有问题,则说明frp的服务端配置成功了

在这里插入图片描述

局域网机器上配置(192.168.63.129)
(1)下载frp库
https://github.com/fatedier/frp

(2)wget
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz 

(3)tar -zxvf frp_0.33.0_linux_amd64.tar.gz
(4)cd frp_0.33.0_linux_amd64/
(5)打开配置文件frpc.ini(客户端配置文件)
vim frpc.ini 
[common]
# 启用 TLS 加密
tls_enable = true
# frp服务端IP地址
server_addr = 192.168.63.128
# 与frps.ini的bind_port一致
server_port = 7000 
# 与frps.ini的token一致
token = 52010  

# 配置ssh服务
[ssh]
type = tcp
# 本地 SSH 服务地址
local_ip = 127.0.0.1
# 本地 SSH 服务端口
local_port = 22
# 自定义的远程端口,用于连接 SSH
remote_port = 6000 
 
# 配置http服务,可用于小程序开发、远程调试等,如果没有可以不写下面的
[web]
type = http
# 本地 HTTP 服务地址
local_ip = 127.0.0.1
# 本地 HTTP 服务端口
local_port = 8080
# 自定义的子域名,用于访问 Web 服务,没有域名直接用公网IP(frp服务端)作为域名
custom_domains = 192.168.63.128

注意:[ssh]这样的名称必须全局唯一,即就算有多个客户端,也只能使用一次,其他的可以用[ssh2][ssh3]等;意思就是说,如果你要配置多个客户端,必须将另外的客户端的[ssh]改为[ssh2][ssh3]等,并且remote_port也要变,比如6002,6003等

(6)防火墙开放端口(防火墙关闭则不用设置,忽略此步骤)
sudo firewall-cmd --permanent --add-port=6000/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

(7)客户端启动
在frp_0.33.0_darwin_amd64目录下执行
./frpc -c frpc.ini

在这里插入图片描述#### 服务端代理端口6000 也启动了
在这里插入图片描述

测试穿透是否配置成功
找另外一台不同网段的主机,在终端执行
ssh 用户名@服务端ip  -p 端口号

这里一定要注意,这里用的是服务端的ip和用户名,端口号用的frpc.ini文件中的remote_port

出现如下图即表示内网穿透成功。

在这里插入图片描述

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值