-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A report on Iran's GFW #253
Comments
UPDATE: It seems it is unblocked now. |
I'm reading all this, thanks. |
In Iran, the protocol doesn't matter. 90% of all VPS IPs are blocked or have 10x jitter/latency (50~80% packet loss)... |
This is simply not true, if you use a good protocol like REALITY and properly configure it your proxy server will be unblocked much longer than if you use other more detectable protocols like direct Shadowsocks. If you are on MCI, if your server gets detected its IP will be blocked. If you are on MTN maybe you are right the protocol doesn't matter that much as it will not get blocked. Some MTN users may experience a protocol filter and in that case typical shadowsocks won't even connect and then you need to use TLS/http based protocols.
Even though I don't have any numbers or data for amount of the blocked IPs, based on my experience there are way more unblocked IPs than just 10% and the blocking is usually high with popular hostings because many Iranians run weak and detectable protocols on their servers and the servers will get blocked. When I'm trying to find a hosting with IPs that have a low chance of being blocked I simply run RealiTLScanner on the hostings' IP range and if the hosting has a high number of blocked IPs I can see many of results from RealiTLScanner have a domain name with .ir in them and also the domain names are usually a dead give away that they are used for VPN and proxies for example: randomvpnshop.ir, akbarv2ray.xyz or mamadvmess.top (these are names that I came up with but its definitely possible to know if a domain name is used for VPN or not)
I have only seen this kind of packet loss on MTN networks but not on MCI networks which may suggest that your experience has been with MTN and not MCI and in case of MTN you are right. |
By The REALITY is still in the testing phase. many many people reported that after using it for 1 week (even with one device!) their server IP address is blocked. (I think it's normal as the nature of REALITY could just expose the server ip which is stealing TLS) . This just hardens the finding for the nonblocked/clean IP addresses from hosting services...
Yes, exactly. many people ran SS or weaker protocols that lead to blocking the majority of IPs from famous hosting services. recently I found out MTN and MCI just block the whole range of IP by detecting ASN Numbers. For example, AS24940 for Hetzner is almost blocked in all ISPs. this is just odd and madness at the same time! (by blocked I mean the 50% packet loss for MTN and
Yeah. MTN does this. recently Zi-Tel started to do this (just increasing the latency by 5x-10x) with some very famous hostings like Hetzner. Overall I tested ISPs: Asiatech & Zi-Tel: The least amount of blockings. (even Wireguard and OpenVPN connect on Zi-Tel 😄 -but for now-)
|
For MCI networks I recommend using REALITY with a whitelisted SNI if the IP itself is not blocked maybe you should give REALITY a try as sometimes only whitelisted SNI may be accepted on some hosting (this may apply for Shatel too as it seems to have a similar GFW)
In my testings with MCI using REALITY some IPs will connect but with very low upload speed, another times you get an IP from the same subnet but using REALITY you can get good upload speeds and some IPs you can even use vmess+http and you will get a really good upload speed but it will get blocked shortly after. |
Yep. Thanks. I experienced the low upload speed on a CDN config in which a blocked IP was behind Cloudflare's clean IP with I think the main problem right now is finding clean IP ranges/services. as for protocols like Do you have any suggestions/tools for scanning/finding clean IPs from ASN numbers and IP ranges? |
If possible, you guys may try a simple trick:
This forms a "proxy overlay". Unlike proxy relay, all actual tcp connections are transferred in one tunnel in this case. This trick may be useful because my tests show GFW is likely sensitive to TCP connection establishment. Most GFW measures, like protocol/SNI recognition, happen in protocol handshake stage. |
How the server IP can be detected behind CF servers? |
It won't. |
I'm using this method usually and it works well. |
Yeah. That's true. I confirm that on my behalf. |
@sambali9 Can you explain what you mean by "existing proxy protocol"? Are you implying there are now three layers, e.g. Shadowsocks over SSH dynamic port forwarding over Xray? |
@maerz22 Actually I wrote that piece and your understanding is correct. It is a 3-layer hierarchy: ss over ssh-tunnel over vmess/vless/or-whatever. This might not be easy for android/iphone users though. |
@sh4run Sorry for the misattribution. I can pass SSH through VLESS, but how do you pass Shadowsocks through SSH? VLESS server
VLESS client
SSH client through VLESS client
|
@maerz22 not "ssh -D", but "ssh -L". And you need an SS server installed on your remote vps. A reference can be found here. |
Thanks. The SSH command above worked as a 2-layer version (SSH over VLESS). With your change, this works as a 3-layer version (SS over SSH over VLESS). VLESS server The VLESS server accepts input on port Install Xray on the server using the script at https://github.com/XTLS/Xray-install:
Edit the
Insert contents as follows:
Restart the
VLESS client The VLESS client accepts input on port Install Xray on the client from https://github.com/XTLS/Xray-core/releases:
Edit the
Insert contents as follows:
Run the
Leave the client terminal window open with the Shadowsocks server The Shadowsocks server accepts input on port On the server, install
Edit the Shadowsocks server configuration file:
Insert contents as follows:
Restart the
Shadowsocks client The Shadowsocks client accepts input on port Open a second terminal window on the client. Install Shadowsocks on the client from https://github.com/shadowsocks/shadowsocks-rust/releases:
Edit the Shadowsocks client configuration file:
Insert contents as follows:
Set the Shadowsocks client running in this terminal window:
Shadowsocks over SSH over VLESS client Now open a third terminal window on the client. The command below says: "SSH into the server as user
Firefox Open Firefox settings. Configure Firefox to use the SOCKS5 proxy on localhost port
|
What's the idea behind not using 2 layer (e.g. ssh over vless) but 3 layer (e.g. ss over ssh over vless)? |
The 2-layer(ssh over vless) is actually a 3-layer (socks5 over ssh over vless). Only both socks5 and ssh are provided by a single program "ssh". The major difference is, whether the traffic between the end device and local machine(socks5) is encrypted/password-protected or not. If the local machine is in your home, likely socks5-over-ssh-over vless is enough. The difference at server side is minor and possibly doesn't matter in most use cases. |
Mind-blowing |
If I'm understanding you correctly, you considered local Socks5 proxy as additional layer, but we only count layers of proxies only out of the gates of local PC. So, it must be 2; not 3. When you start SS, then it's 3. |
You are right. It is my misunderstanding. |
Based on a report about Iran's internet situation most of accessible IPs are in a "Greylist" which throttles their upload bandwidth to up to 50% intentionally. My experience: Some SNIs such as www.speedtest.net are whitelisted and their upload won't be throttled if used with any accessible IP using REALITY. Some Cloudflare and most of Microsoft, Google, AWS and Akamai IPs are whitelisted with no upload throttling. |
confirmed! we are experiencing the same thing. |
17 July 2023 In its new report, "Tehran Electronic Commerce Association" announced the "critical situation" of Iran's Internet quality and declared: "Among the 100 countries in the world with the highest gross national product, Iran has the second most disrupted Internet after Myanmar and the second after China." It is limited in the world and Iran's internet is one of the five slowest internets in the world. The Tehran Electronic Commerce Association, by examining 300 websites among 50 countries with the highest GDP, has come to the conclusion that Iran's Internet is at the top of the list of the most disturbed with 33% filtering and 18% disruption.The research of this association indicates that more than 33% of the world's top 100 websites are filtered in Iran, and Iran has the world's most restricted internet with 45% filtering. At the same time, according to this report, among the 100 countries of the world, only Iran, China and Turkmenistan have blocked all six widely used social networks.The information contained in the report of the Tehran Electronic Commerce Association shows that in terms of the slowness of the Internet speed, Iran ranks third among the top 100 countries in the world (ranked 97 out of 100 in terms of speed and ranked 96 out of 100 in terms of delay). Is). In terms of internet speed, only Cuba, Cameroon and Sudan are in a worse situation than Iran. |
Original report (Persian):
Sample page (page 7) from the censorship section: The PDF report cites OONI repeatedly: page 4, page 5, page 6, page 16, page 20, page 35, page 37. The formatting in the PDF prevents me from copying and pasting text for a translation. |
Why is Whatsapp and Telegram blocked in UAE? |
@operationairstrike they have strict rules to use a mobile phone only to make calls so they can charge you. Basically any apps that have a free phone call or video call been blocked in AUE |
Bruh |
Instagram and Facebook messenger can do. Also lots of other apps. They are not blocked. |
@free-the-internet Whatsapp As of my last update, Dubai and the United Arab Emirates (UAE) had restrictions on certain apps and online services, particularly those that may violate the country's cultural, religious, or legal norms. These restrictions can include, but are not limited to: VoIP (Voice over Internet Protocol) apps: Some VoIP apps, such as Skype, WhatsApp calling, FaceTime, and others, were restricted or had limited functionality to protect the interests of the local telecommunication companies. Messaging apps: Apps like Telegram and others might face restrictions or limitations in their usage. Social media platforms: Certain features of social media platforms, especially those that enable video calling or other forms of communication, may be restricted or have limited access. VPNs (Virtual Private Networks): While VPNs themselves are not illegal in the UAE, using a VPN for illegal activities is strictly prohibited. Some VPN websites or apps may be blocked or restricted. Dating apps and websites: Some dating apps and websites may be blocked due to cultural sensitivities. |
Skype is popular among businesses. Blocking of it is a bit strange. |
Recently, strange things happened again on the infrastructure of Iran's internet. Many users with |
I have an IP from that range that works perfectly fine, and IME it is generally not hard to get an IP from Hetzner that works in most ISPs. At the same time VMESS also works fine for me so I don't know if I am just lucky. Bandwidth is severely limited though. |
what is the site used in this screenshot? |
Update: MCI is actively blocking/limiting It's like Iran's GFW is upgrading or something. |
iran started blocking unencrypted HTTP+ws+vmess over cloudflare yesterday, according to reports of some users. however, traffic over that protocol continues to be high. SSL over cloudflare didn't work for a while already. very simple tcp+vmess on hetzner continues to work fine for me even with very high bandwidth usage. i believe there might be a connectivity difference between Hetzner Cloud IP pool and Hetzner Root Server IP pool. Cloud receives a lot more successful connections, but I have not heard of any problems with either. vless/reality was blocked for me last week already. shadowsocks was blocked for some users since the start, but very little change there, I think that protocol might not be in anybody's focus right now. |
Iran's GFW is indeed upgraded. it's now detecting actively blocking |
See also #277 |
Update: It appears that the previously affected Domain/Subdomains that were Filtered & Blocked are now up and running again, and they've been unblocked! We're a bit puzzled about the reasons behind these behavior, and We suspect that this might be in preparation for the anniversary of MAHSA AMINI and the people's uprising against the dictator regime from last year, but as of now, it's all speculation. It's possible that The Iranian regime are conducting tests on the new system for a wider rollout. While we can't definitively pinpoint the cause, this turn of events is undoubtedly positive. It would be greatly appreciated if someone could confirm these changes. |
I've come across a new and rather strange issue that I wanted to share with you all. Just in case anyone else is experiencing the same phenomenon or perhaps has a reasonable explanation for it. I've created a new VPS server using a Everything appeared to be in order until I conducted tests across various ISPs and in different cities to ensure that everything is functioning correctly as it should. The client app and software are identical and up-to-date with the latest version. Interestingly, the same configuration that was functioning flawlessly in cities like Tabriz, Isfahan, and Shiraz is no longer operational in Tehran, the capital city. This issue is observed across multiple ISPs in Tehran. I've attempted various whitelisted SNI options, but the outcome remains the same, BUT when I’ve changed the port number from 433 to any 4 or 5 digit number the same config with the same SNI working in Tehran as well as other cities with consistent and decent upload and download speeds. Has anyone else encountered a similar issue? |
As I mentioned in my previous comments |
reports right now indicate that for the past week-or-so, censorship has been very light. cloudflare IPs got largely unblocked. |
Hi everyone Here is the List of IR-Mobile-App-List.txt
"The only thing necessary for the triumph of evil is for good Men & Woman to do nothing.” Ps: It has already been shared with Bootmortis, XTLS/Xray-core, Loyalsoldier, v2fly/domain-list-community, and Chocolate4U. So, please do not share it with them again. Tnx |
And struggle continues Netblocks Confirmed: Live metrics show a significant disruption to internet connectivity in Zahedan, #Iran; the incident continues the weekly pattern of regional internet shutdowns targeting anti-government protests, and comes on the eve of the anniversary of Mahsa Amini's death |
This 3-layer configuration (SS over SSH over VLESS) allows for enhanced security, obfuscation, and circumvention capabilities, especially useful in environments with heavy internet restrictions. |
I'm hearing reports that it's not currently possible to connect with VMESS and SSH protocol in Iran. Wanted to check if others are experiencing a similar situation and or if @sambali9 you plan to review your report a year on? |
Background
In recent months, Iran has started to heavily censor the internet and block most of mainstream VPNs and it seems that the GFW is updating about every week with more restrictions to the point that many innocent websites and IPs have their upload bandwidth restricted to under 1Mbps. As I'm writing this I haven't seen a complete report from Iran about the GFW that lets the outsiders know what is going on with the Iranian GFW so I'm hoping this report helps the outsiders to maybe understand the situation in Iran.
Disclaimer
This report is purely based on my experience and testing but some parts of it may not apply to everyone in Iran but I hope this is still a helpful report for the outsiders.
In this report when I say X didn't work It means that:
Iran has different types of censorship on different ISPs
In Iran, there are 2 most popular ISPs: MCI Hamrah Aval and MTN Irancell. These two are the most popular mobile careers and most of Iran's internet traffic is going through these 2 ISPs. There are other ISPs but these 2 have the strictest blocking out of all other ISPs. The GFW is different on MCI and MTN, for example, most of the IPs which are blocked on MCI work on MTN and vice versa, and also the proxy protocols that work on each one are different. Right now the only protocol which works for both is Xray's REALITY but I couldn't find any single VPS IP with REALITY which works for both and if one IP works for MCI it doesn't work for MTN even though the IP is accessible with both (Guessing Microsoft's azure IPs may work for both but haven't tested). Most all other ISPs like home wifi providers have similar GFW like MCI (if an ip is blocked on MCI it is most likely blocked on others too) but the blocking is not as strict as MCI. Another mobile carrier called Rightel seems to have the same GFW as MTN as the IPs which work on MTN also work on Rightel.
1) How is MCI's GFW?
MCI's GFW has been continuously updated about every week since the beginning. Every Tuesday I see that my proxies get blocked: when I deploy a proxy It works for one or 2 weeks but every Tuesday I saw my proxy stopped working so I changed the IP and used a more resistant protocol and it got blocked again on another Tuesday. First few months I used VMESS-WS then it got blocked so I used VLESS-TLS then got blocked I used VLESS-WSS-Cloudflare for a while then got blocked now I'm using REALITY and every Tuesday I'm anxious to see if it gets blocked or not. Other than the blocking MCI has implemented some sort of upload throttling which I guess is using whitelisted SNIs and IPs to decide to throttle the upload speed or not. When throttled the download speed is fine but the upload speed is under 1Mbps which makes loading more than a website/resource/image at a time very slow.
1.1) Proxy through Cloudflare
MCI's GFW has different branches for example it works differently on Cloudflare IPs and almost all other IPs. If the IP is from Cloudflare (AS13335) the GFW won't block the IP but instead, the SNI will be blocked if it detects a proxy. In recent months many Iranians started to use Cloudflare IPs from another AS called Cloudflare London (AS209242) which worked very well. Although not all IPs from CF London worked there were a few like
45.85.118.0/23
and185.18.250.0/24
which worked well. By working well I mean they didn't get blocked (very rarely got blocked) and also the SNI would not get blocked if the IP got blocked and also the upload speeds were good. But for about the past month, these IPs have stopped working many got blocked and the unblocked ones have slow upload speeds. Right now some IPs still work but I have only seen IPs from AS13335 which would block the SNI if you run a proxy and it doesn't matter if it is GRPC or WS. My GRPC config that got blocked was pure Xray GRPC with no fake website or fallback and if you open it with a browser it would error 521 which I'm guessing is the reason why it got blocked or the GFW is detecting TLS in TLS. For WS I had a fake website and everything but still got blocked I'm guessing because of WS handshake.1.2) Proxy through a VPS
As I said only Xray's REALITY is working but it is not as easy. First when REALITY got published if you set the SNI to yahoo.com you would get good upload speed on pretty much every VPS IP I tested but now for the past 2 weeks this SNI wouldn't work (it works with throttled upload like other protocols) but I have seen some VPS IPs that still work with yahoo.com or other whitelisted SNIs and I have a theory that the GFW has whitelisted these IPs because they had a lot of traffic with REALITY (or they hosted a high traffic innocent website and no proxies were running on them) and didn't get blocked before the past 2 weeks when GFW got updated.
1.3) UDP throttling
So far the protocols that I mentioned and worked were all on TCP because, since the beginning of this heavy censorship, the UDP upload were heavily throttled so far so when I made a call on Discord I had a problem understanding the other person and their voice would get chopped and robotic but if the other person used a TCP based protocol that had good upload speed the voice would be fine. The receiving of UDP packets was fine so if someone from outside talked their voice was fine. There also was a strange thing where if I changed the discord voice server from the Netherlands to Singapore the voices were fine on both ends. Now from about past 2 weeks, it seems that UDP upload throttling is no longer a thing but if I use KCP with Xray it would have good upload speed but it gets blocked after a while. I need to mention that for the IPs that REALITY has a slow upload speed if I use KCP, I get a good upload speed but the IP gets blocked after a while. A strange thing is that after the UDP throttling changed some of my friends can use Cloudflare WARP with really high speeds and some can't.
2) How is MTN's GFW?
Most of my experience is with MCI but I have a little bit of experience with MTN too but not much so I don't know the GFW history for MTN as I know for MCI but I still can report the current situation. From my testing and experience MTN's GFW doesn't block IPs but instead, it throttles them with about 50% packet loss no matter the protocol. So if you find a good IP with low packet loss and run REALITY with a good SNI it seems to work without a problem. You can even run a proxy with a fake HTTP header and a whitelisted Host header and it works fine and won't get blocked (it seems) but the speeds on REALITY are much better. MTN seems to have a protocol whitelist meaning that it blackholes the TCP connection based on the first few packets if they don't match HTTP or TLS and if it is a TLS connection it has to be a whitelisted SNI or it breaks the connection no matter what the TCP port is. This protocol whitelist is not present on MCI.
2.1) Proxy through Cloudflare
Since the beginning MTN blocked the VLESS-WSS-Cloudflare (haven't tested GRPC) on AS13335 but the IPs I mentioned above from AS209242 that worked for MCI also worked for MTN and they never got blocked until about a month ago (even though the same IPs got blocked after a long time on MCI) which all IPs have stopped working or at least I haven't seen any good CF IPs for MTN. Now if some IP works it has a very low speed.
2.2) Proxy through a VPS
As I said I haven't seen any IP get blocked on MTN but they get throttled to 50% packet loss (keep in mind I have very low experience using MTN) so the only thing that works is that I find IPs that have very low packet loss (like Microsoft's azure IPs) and run a REALITY server on them or I can even run a VLESS-TLS with a whitelist SNI and allowInsecure and so far it had good speed and didn't get blocked. I also need to mention it seems that the yahoo.com SNI is not in MTN's whitelist but there are other whitelisted SNIs that I rather not say publicly.
2.3) UDP throttling
I hardly tested UDP on MTN but here is what I found in my limited tests. The UDP throttling is strange on MTN, going back to the discord example some of my friends with MTN had a good voice quality, and others with MTN had very bad voice quality like with MCI on the same server at the same time and when they used proxies their voices had much better quality. I have also heard some friends are using OpenVPN UDP on MTN which I'm not sure how but they seem to be telling the truth (I haven't tested the OpenVPN UDP myself). I ran some KCP proxies myself and the results were very bad with low speeds or sometimes they didn't even get connected.
Conclusion
I hope this report helps outsiders understand Iran's GFWs better and if they experienced something similar in their country they could find this report useful. I also encourage other Iranians to share their experience with details so that we can have a more complete picture of the current situation.
The text was updated successfully, but these errors were encountered: