Replies: 3 comments 7 replies
-
I was told by a user on Telegram that in Iran, there is an entire economy around buying clean IPs, port-forwarding them to Cloudflare, then selling those IPs to VPN vendors who want to build Cloudflare configs but cannot find clean Cloudflare IPs. I think it is possible that some of these "IP vendors" simply scan the internet for IPs like this, and sells them as their own, to multiple VPN vendors. |
Beta Was this translation helpful? Give feedback.
-
alireza0/x-ui#1213 |
Beta Was this translation helpful? Give feedback.
-
I have a REALITY server for Iran with
dest=www.speedtest.net
. In theory this is not a greatdest
because there are many ways to distinguish my server from the real speedtest. Many people use it anyway because it is a whitelisted (=unthrottled) SNI, and this has worked great until recently.So I wanted to understand whether this specific
dest
is targeted by the GFW, so I patched xray to log all client IPs who reach the fallback dest.Then I set up two REALITY servers with this patch:
dest=www.speedtest.net
proxy_pass https://www.speedtest.net
. So the camouflaging is really bad (bad SSL cert), but in exchange I can look at HTTP headers.On both servers, besides the regular security scanning, I see very strange requests with SNIs that resolve to cloudflare, such as:
<randomstring>.pages.dev
<username>.pages.dev
, where<username>
is the name of a popular VPN config provider in Iran, and where I found configs from that VPN provider using the samepages.dev
domain.On the server where I am able to decrypt HTTP, the user agent is always
Go-http-client/1.1
, and the path is either/
or a randomly generated string (sometimes looks like base64, sometimes like hex, sometimes exactly like a UUID)The client IP is always from a popular ISP in Iran, and does not seem to vary a lot.
So I wondered, is this an active probe, specifically for REALITY servers where
dest
is behind cloudflare?I extended the nginx logging to also add
$http_upgrade
header and request/response body size, and a prefix of the request body.I found that those requests are not just normal HTTP requests, they are fully blown
vless+ws
connections, going through REALITY fallback! Based on response size, I think it's only urltest, not a long-lived connection.BTW, you can test this yourself:
www.speedtest.net
-- you do not need a full config, only the IPJust so that people don't get the wrong idea: REALITY is not broken. The REALITY server behaves correctly here, if it behaved differently from
www.speedtest.net
it could be used for active probing as well. In fact, in the above steps you can also insert the IP ofwww.speedtest.net
, and it will behave the same.Why are those requests being sent? I have no idea. Here is some speculation:
dest=www.speedtest.net
.In the end I have no idea why those requests are being sent, but regardless of intent and who sends them, there is a problem with CDN-based
dest
, and now we have proof it's not just a theoretical one in Iran.Because even if those requests are friendly, they still come from Iranian ISP, meaning that the ISP can see those weak protocols, and block my REALITY IP because somebody is talking
vless+ws
to it. And I have zero control over which protocols are being used, which security is being used, which ALPN, and whether this actor even enabled basic things like uTLS.What do you think?
Note:
www.speedtest.net
withspeedtest.net
, they do not have the same IP and are behind different CDN.speedtest.net
has similar issuesBeta Was this translation helpful? Give feedback.
All reactions