mirror of
https://github.com/fatedier/frp.git
synced 2026-05-15 08:05:49 -06:00
[GH-ISSUE #1795] xtcp模式成功的条件 #1420
Labels
No labels
In Progress
WIP
WaitingForInfo
bug
doc
duplicate
easy
enhancement
future
help wanted
invalid
lifecycle/stale
need-issue-template
need-usage-help
no plan
proposal
pull-request
question
todo
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/frp#1420
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @EsCool on GitHub (May 8, 2020).
Original GitHub issue: https://github.com/fatedier/frp/issues/1795
我最近在使用xtcp模式,发现有时候可以成功有时候不会成功。所以想请教下xtcp能够成功的条件是怎样的。
我已知的有:
无公网IP的路由器内的节点(手机),访问有公网的路由器的节点 成功
手机4G,访问有公网的路由器的节点 成功
有公网IP的路由器内的节点(手机),访问有公网的路由器的节点/访问无公网路由器的节点 成功
无公网IP的路由器节点,访问无公网IP的路由器节点 失败
手机4G,访问无公网IP的路由器节点 失败
看起来xtcp能够成功的条件是 需要两端至少一方有公网IP
使用frp的版本是0.32
@QQ2017 commented on GitHub (May 9, 2020):
这涉及到网络类型,一般来讲至少一方为“Full Cone NAT”则成功穿透几率较高。
具体什么原理百度相关关键字了解吧。
@rvier commented on GitHub (May 18, 2020):
不需要公网ip 我这里一边Full Clone 一边 Symmetric(Visitor) 打洞成功
一边Full Clone 一边Port Restricted Cone(Visitor) 型NAT 经测试目前无效
若想正常连接 查看两边的NAT类型把
@rvier commented on GitHub (May 18, 2020):
@QQ2017
请问一下Port Restricted Cone 型NAT 有成功的么?
上述配置只要把一边换成Port Restricted Cone型 就肯定打不通
@MindFollowing commented on GitHub (May 26, 2020):
公司A机器(对称型Symmetric Nat)
家里B机器(端口限制圆锥形 Port restrict NAT)路由器开放了DMZ 指定了电脑的IP
两边互相向服务器S 建立连接后
A访问B正常
B无法访问A
目前Symmetric NAT 是非常难建立P2P,目前查阅的文献、Google都表明,此类型的NAT正常情况下无法建立P2P连接,只有通过端口预测如下:
A向B的所有port(0-65535)发包,让路由器知道来自B的所有端口都转发到A
B向A的所有port(0-65535)发包,让路由器知道来自A的所有端口都转发到B
端口预测代价极高,因此许多放弃了此类型的p2p连接。
其余是有概率,完全圆锥形NAT>限制性圆锥形NAT>端口限制性圆锥形NAT
@lunfangyu commented on GitHub (Sep 17, 2020):
公司A机器
家里B机器
家里和公司的网络都是(端口限制圆锥形 Port restrict NAT);xtcp穿透一直不成功,都是报超时:get sid from client error: read udp i/o timeout;看到你的回复,试着把路由器开放了DMZ 指定了电脑的IP;然后就穿透成功了!很高兴;但却不知道什么原理。
猜测是不是和路由器防火墙或者端口转发有关呢;又试着关闭DMZ和关闭防火墙;但还是失败。
接着我注意到,UDP握手端口在50000-65535之间;
因此我继续尝试,在路由设置里面关闭DMZ;然后设置端口转发,把端口范围50000:65535转发到指定的电脑的IP;结果是打洞成功,成功进行xtcp穿透。 在此记录。
以上都是A访问B;B访问A还没时间测试;后面测试补充