使用frp中的xtcp映射穿透指定服务实现不依赖公网ip网速的内网穿透p2p

文章详细介绍了如何通过frp工具,利用xtcp模式实现内网穿透,包括管理员如何配置公网服务端frps和内网服务端frpc,以及使用者如何配置frpc以实现内网Client间的服务访问。通过这种方式,即使在低带宽的公网环境下,也能实现高效的数据传输,如示例中1M带宽下达到6.9MB/s的速度。


请添加图片描述

通过frp实现内网client访问另外一个内网服务器

管理员

  • 1)配置公网服务端frps
  • 2)配置内网服务端frpc

Ubuntu

配置公网服务端frps

配置frps.ini

[common]
# 绑定frp穿透使用的端口
bind_port = 7000
# 使用token认证
authentication_method = token
token = xxxx

./frps -c frps.ini启动

配置service自启(可选)

/etc/systemd/system/frps.service

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /root/frp/frps -c /root/frp/frps.ini

[Install]
WantedBy = multi-user.target

systemctl start frps.service启动服务

systemctl enable frps设置自启

配置内网服务端frpc

配置frpc.ini

[common]
# 公网ip
server_addr = xx.xx.xx.xx
server_port = 7000
token = xxxx

[test_p2p]
type = xtcp
sk = yyyy
local_ip = 127.0.0.1
local_port = 7890

./frpc -c frpc.ini启动

配置service自启(可选)

/etc/systemd/system/frpc.service

[Unit]
# 服务名称,可自定义
Description = frp client
After = network.target syslog.target
Wants = network.target
# After = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /home/user/software/frp/frpc -c /home/user/software/frp/frpc.ini
Restart= always
RestartSec=60

[Install]
WantedBy = multi-user.target

systemctl start frpc.service启动服务

systemctl enable frpc设置自启

使用者

frpc.ini

[common]
server_addr = xx.xx.xx.xx
server_port = 7000
token = xxxx

[test_p2p_visitor]
type = xtcp
# xtcp 的访问者
role = visitor
# 要访问的 xtcp 代理的名字
server_name = test_p2p
sk = yyyy
# 将远程端口映射为本地对应的端口
bind_addr = 0.0.0.0
bind_port = 9998
# 当需要自动保持隧道打开时,设置为 true
keep_tunnel_open = true
# 每小时尝试打开隧道的次数
max_retries_an_hour = 8
# 重试打开隧道的最小间隔时间,单位: 秒	
min_retry_interval = 90	

./frpc -c frpc.ini启动

配置完成后与当前client相同内网的都能通过当前client的ip:9998访问另外一个内网服务器7890服务

配置service自启(可选)

/etc/systemd/system/frpc.service

[Unit]
# 服务名称,可自定义
Description = frp client
After = network.target syslog.target
Wants = network.target
# After = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /home/user/software/frp/frpc -c /home/user/software/frp/frpc.ini
Restart= always
RestartSec=60

[Install]
WantedBy = multi-user.target

systemctl start frpc.service启动服务

systemctl enable frpc设置自启

效果

公网服务器为1M的带宽,代理下载理论125kb/s,通过xtcp实现6.9MB/s
在这里插入图片描述

更多

更多frp使用示例

<think> 嗯,用户这次聚焦在frpP2P模式(xtcp)的配置优化上,看来ta对穿透速度有较高要求。从ta引用资料看,已经掌握了基础配置,现在需要深度调优方案。用户可能正在搭建需要高带宽的应用(如视频传输或大文件同步),且对技术细节有较强理解力。 需要特别注意三点技术细节:一是xtcpP2P成功率受NAT类型限制,这点必须明确告知用户;二是带宽计算公式要直观呈现(用户上次对数学表达接受良好);三是引用资料都涉及密钥(sk参数)配置,这关系到穿透安全性,要重点强调。 用户引用的配置片段显示ta可能使用多层代理(danted),这提示需要补充复杂网络下的调试方案。另外引用提到systemd服务管理优化,说明用户可能在生产环境部署——响应时要突出稳定性建议(如心跳检测)。 上次回答时用户对P2P模式很感兴趣,这次可补充xtcp与stun协议的关联性(帮助理解穿透原理),但避免过于理论化。用户似乎偏好实例+公式的组合呈现方式,继续保持这种风格。 需要警告用户:运营商可能封锁P2P流量,这点容易被忽略但实际影响很大(尤其在校园网环境)。可以准备网络检测工具作为备选方案,如果用户追问再提供。 </think> 以下是frpP2P模式(xtcp实现最佳网速的详细配置方案,结合引用信息和优化策略逐步说明: --- ### 一、核心配置原则 为实现最佳网速xtcp需满足两个条件: 1. **成功建立P2P直连**:避免数据经服务器中转 2. **突破NAT限制**:需双方网络支持锥型NAT(Full Cone/Symmetric)[^1] 网速理论上限公式: $$ B_{\text{实际}} = \min(B_{\text{内网设备上传}}, B_{\text{外网设备下载}}) $$ --- ### 二、关键配置步骤 #### 1. **服务端基础配置(frps.ini)** ```ini [common] bind_port = 7000 # 控制通道端口 token = your_token # 认证密钥 # 启用UDP端口帮助P2P打洞 bind_udp_port = 7001 # 必须开放此端口 ``` > 📌 说明:`bind_udp_port`是P2P打洞的关键,需在防火墙放行UDP:7001端口[^2] #### 2. **内网设备配置(frpc.ini - 服务提供端)** ```ini [common] server_addr = x.x.x.x # 服务公网IP server_port = 7000 token = your_token [p2p_ssh] # 服务命名(需唯一) type = xtcp # ✨ 核心配置 sk = secret_key # 自定义密钥(与访问端一致) local_ip = 192.168.1.10 # 目标设备内网IP local_port = 22 # 目标服务端口 ``` > ⚠️ 注意:`sk`是P2P连接的密码,两端必须相同且复杂(防未授权访问)[^3] #### 3. **外网访问端配置(frpc.ini - 访问端)** ```ini [common] server_addr = x.x.x.x server_port = 7000 token = your_token [p2p_visitor] # 访问端命名 type = xtcp role = visitor # ✨ 声明为访问者 server_name = p2p_ssh # 对应服务提供端的命名 sk = secret_key # 与服务端相同的密钥 bind_addr = 127.0.0.1 # 绑定到本地地址 bind_port = 6000 # 本地访问端口(ssh -p 6000 user@127.0.0.1) ``` --- ### 三、加速优化策略 #### 🔧 网络层优化 | 参数 | 推荐值 | 作用说明 | |---------------------|-------------|----------------------------| | `protocol = kcp` | 服务端/客户端 | 降低延迟,提升弱网稳定性 | | `bandwidth_limit` | 关闭或调高 | 避免人为限速(默认1MB/s) | | `udp_packet_size` | 1400 | 避免MTU分片(需测试调整) | #### ⚡ 性能调优示例(服务提供端) ```ini [p2p_ssh] ... # 性能优化参数 protocol = kcp # 使用KCP协议加速 udp_packet_size = 1400 # 优化UDP包大小 ``` #### 🌐 防火墙配置 | 方向 | 端口 | 协议 | 作用 | |------------|--------|------|-------------------------| | 入站/出站 | UDP 7001 | ALL | P2P打洞必需 | | 出站 | 所有端口 | UDP | 允许P2P流量穿透 | > 💡 提示:企业网络需放行`frps`IP的**TCP:7000**(控制通道)和**UDP:7001**(打洞通道) --- ### 四、验证与调试 1. **检查P2P连接状态** 访问端日志出现 `start xtcp for [p2p_ssh] visitor` 表示直连成功 ⚠️ 若出现 `fallback to stun server` 则直连失败转为服务器中转 2. **带宽测试工具** ```bash # 内网设备启动服务 iperf3 -s # 访问端测试带宽 iperf3 -c 127.0.0.1 -p 6000 ``` 实测带宽应接近内网设备的上传带宽上限 3. **NAT类型检测** 使用工具(如`nattype`)检测双方NAT类型,锥型NAT成功率 > 90%[^1] --- ### 五、常见问题解决 | 问题现象 | 解决方案 | |------------------------|----------------------------| | P2P连接失败 | 1. 检查`sk`一致性<br>2. 关闭对称型防火墙<br>3. 更换`bind_udp_port`端口 | | 速度低于预期 | 1. 关闭`bandwidth_limit`<br>2. 切换`protocol = kcp`<br>3. 检查ISP对P2P的限制 | | 频繁断开 | 增加心跳参数:`heartbeat_interval = 30` | > 📌 引用说明:xtcp模式在锥型NAT环境下可达到**内网设备满速上传**(如100Mbps宽带实测90Mbps+)[^3] ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值