Ник | Пост | Дата |
---|---|---|
ValdikSS | Вечером 27 апреля 2020 года в Лебапской и Марыйской областях Туркменистана прошел сильный ураган с ливнем, поваливший деревья, снесший крыши домов и затопивший различные постройки. За прошедшую неделю власти Туркменистана умалчивали инцидент, не сообщая о нём в официальных СМИ. Сайт hronikatm.com сообщает следующее:
Мне довелось получить интернет-канал с доступом извне Туркменистана, и протестировать доступность в условиях интернет-шатдауна в г. Мары. Провайдер — КЭ “Туркментелеком” (TMTelecom), домашнее проводное подключение через ADSL. Кратко: техническая IP-связность с другими странами сохраняется, но доступ до фактически всех интернет-сайтов и сервисов заблокирован с помощью системы DPI. Сайты не открываются, приложения не работают. DNSРабота DNS, по сравнению с обычной ситуацией в Туркменистане, не изменилась: популярные сторонние публичные DNS-резолверы частично недоступны, из-за блокировки диапазонов крупных хостинг-провайдеров в интернет-компаний по IP-диапазонам (типичная ситуация для Туркменистана, а не особенность этой недели). Не работают: 1.1.1.1, 8.8.8.8, 9.9.9.9 Запросы IP-адресов некоторых доменов подвергаются DNS-спуфингу, причем на любом IP-адресе и UDP-порту.
Аналогичная ситуация происходит при попытке запроса этого домена через порт 1253 — малоизвестный недокументированный порт, на котором работает Яндекс.DNS 77.88.8.8 HTTP и HTTPSВ условиях интернет-шатдауна сайт может быть более-менее доступен по HTTP, но не по HTTPS, и наоборот (!). Не работают (могут периодически хоть как-то отвечать, в частности, по нешифрованному HTTP, но до конца точно никогда не открываются):
Работают:
Пример неработающего сайта gismeteo. Запрос по HTTP принимается, но соединение разрывается:
По HTTPS:
И так до бесконечности, пакеты перестают ходить. Пример соединения с yandex. Соединение по HTTP принимается, но ответа не поступает, и соединение «зависает». Я подделал заголовки на браузерные, чтобы исключить фильтрацию curl:
Попытка открыть mail.yandex.ru по HTTPS:
Аналогично, последующих ответов от сервера не поступает. Другие протоколыСитуация с другими протоколами в целом аналогична HTTP/HTTPS. Хост может хоть как-то быть доступен по HTTP (TCP port 80), но по SSH к нему подключиться не получится: произойдет либо разрыв соединения, либо «зависание».
UDP позволяет передавать трафик от 7 до 10 секунд, после чего пакеты перестают отправляться в обе стороны на этой связке клиентского и серверного UDP-портов. За 10 секунд можно успеть передать около 200 КБ данных. Предположительно, блокировка сделана именно так, чтобы оставить работоспособными DNS, NTP и другой важный UDP-трафик. ICMP-пакеты заблокированы в целом для хостов вне страны, доставляется только (условно) первый запрос и ответ (любого ICMP-типа), вероятно, чтобы не применяли ICMP-туннели. Из-за этого ICMP Echo Request/Echo Reply (более известен как ping) удается получить максимум один в несколько десятков секунд (когда система «забудет» о первом отправленном пакете). Сайт провайдера при этом «пингуется» нормально. По TCP в общем чаще всего соединение устанавливается нормально, но передаётся или принимается только первый килобайт трафика после установки соединения, после чего пакеты перестают ходить в обе стороны (что и вызывает «зависание» соединения на разных протоколах). Проблема не вызывана MTU: я уменьшал TCP MSS до низких значений, и удостоверивался, что даже маленькие пакеты (<400 байт) перестают передаваться. Способы получения интернета в условиях его отключенияНесмотря на отключения интернета правительством и неработоспособность сайтов, в регионе всё ещё технически сохраняется IP-связность с внешним интернетом. Есть, по меньшей мере, два рабочих способа получения интернета на предоставленном мне канале:
ВыводыВ условиях интернет-шатдауна, вызванного действиями внутри страны, а не неисправностями транзитных каналов, всё равно можно найти способы получения доступа в интернет, но для этого нужно обладать глубокими знаниями в сетевых технологиях, набором программ и пониманием принципов их работы, а также заранее заготовленным сервером вне страны. Самым надёжным резервным способом связи с зарубежным сервером остаётся, по моему мнению, DNS-туннель — работоспособность DNS, с большой вероятностью, будет поддерживаться провайдерами дольше всего, а значит, можно воспользоваться заранее настроенным DNS-туннелем для дальнейшей настройки зарубежного сервера в условиях отсутствия полноценной сетевой связности. | 2020-05-05T21:02:20.652Z |
tango | @ValdikSS’s post was too long for the forum’s auto-translation. Here is the text translated using DeepL Translate: The world's most accurate translator. Internet blackout in Mary, Turkmenistan, April-May 2020In the evening of April 27, 2020, a strong hurricane with heavy downpours took place in Lebap and Mary regions of Turkmenistan, which fell trees, demolished roofs of houses and flooded various buildings. Over the past week, the authorities of Turkmenistan kept silent about the incident without reporting it to the official media. The website hronikatm.com reports the following:
I had the opportunity to get an Internet channel with access from outside Turkmenistan, and to test availability in the conditions of an Internet shutdown in Mary. The provider is TMTelecom, a home wired connection via ADSL. Briefly: technical IP connection with other countries is preserved, but access to virtually all Internet sites and services is blocked using DPI system. Sites are not opened, applications do not work. DNSThe operation of DNS, compared to the usual situation in Turkmenistan, has not changed: popular third-party public DNS resellers are partially unavailable due to blocking the ranges of large hosting providers to Internet companies over IP ranges (a typical situation for Turkmenistan, not a feature of this week). Not working: 1.1.1.1, 8.8.8.8, 9.9.9. Requests for IP addresses for some domains are subject to DNS spoofing, at any IP address and UDP port.
A similar situation occurs when attempting to query this domain on port 1253, a little-known undocumented port on which Yandex.DNS 77.88.8.8 is running. HTTP and HTTPSIn Internet Shutdown conditions the site can be more or less accessible via HTTP, but not via HTTPS, and vice versa (!). These do not work (they may occasionally respond in some way, particularly with unencrypted HTTP, but they never open until the end):
These work:
An example of a gismeteo site not working. An HTTP request is accepted, but the connection is broken:
Over HTTPS:
And so to infinity, the packets stop moving. Example of a yandex connection. An HTTP connection is accepted, but no response is received, and the connection “hangs”. I forged the headers on the browser to exclude curl filtering:
Attempt to open mail.yandex.ru via HTTPS:
Similarly, no further responses are received from the server. Other protocolsThe situation with other protocols is generally similar to HTTP/HTTPS. The host can somehow be accessed via HTTP (TCP port 80), but it will not be possible to connect to it via SSH: either the connection will be broken or “hanging”.
UDP allows traffic from 7 to 10 seconds, after which the packets are no longer sent both ways on this bundle of client and server UDP ports. About 200 KB of data can be transmitted in 10 seconds. Presumably, the blocking is designed to leave DNS, NTP and other important UDP traffic running. ICMP packets are generally blocked for hosts outside the country, only the (conditionally) first request and response (of any ICMP type) is delivered, probably to avoid ICMP tunnels. Because of this, ICMP Echo Request/Echo Reply (better known as ping) manages to get a maximum of one in a few tens of seconds (when the system “forgets” the first packet sent). The provider’s site is normally “pinged” in this case. On TCP in general most often connection is established normally, but only the first kilobyte of the traffic after connection establishment is transferred or accepted, then packets stop to go in both parties (that causes “hanging” of connection on different protocols). The problem is not caused by MTU: I reduced TCP MSS to low values and made sure that even small packets (<400 bytes) stop transmitting. How to get the Internet when it’s turned offDespite the government’s disconnection of the Internet and the inoperability of sites, the region still technically maintains IP connectivity to the external Internet. There are at least two working ways to get the Internet on the channel provided to me:
ConclusionsIn conditions of the Internet shutdown caused by actions inside the country, instead of malfunctions of transit channels, it is still possible to find ways of access to the Internet, but for this purpose it is necessary to possess profound knowledge in network technologies, a set of programs and understanding of principles of their work, and also in advance prepared server out of the country. The most reliable backup method of communication with a foreign server is, in my opinion, the DNS-tunnel - the performance of DNS, with a high probability, will be supported by providers for the longest time, and therefore, you can use a pre-configured DNS-tunnel for further configuration of the foreign server in the absence of full network connectivity. | 2020-05-05T21:44:06.966Z |
tango |
https://www.bamsoftware.com/software/dnstt/ Recently I published this new DNS tunnel. It has not had much testing yet, but I believe it can have better performance than iodine. I wrote the tunnel to take advantage of the possibilities of DNS over HTTP and DNS over TLS, but it can also run in plaintext UDP mode. (Obviously it is in principle easily detectable in UDP mode.) Unfortunately it’s still a new project and you have to be somewhat technical to use it. It doesn’t provide a TUN interface like iodine does, nor even SOCKS; you have to run your own SOCKS proxy on the server if you want the tunnel to work as a proxy. The code is public domain so you are free to adapt it according to requirements, and I’m open to suggestions and willing to help. | 2020-05-05T22:00:10.634Z |
ValdikSS | By the readme, I assume dnstt could use only DoH, DoT or direct UDP mode, and not a regular DNS? If this is the case, it won’t work in Turkmenistan shutdown conditions because UDP traffic is also blocked after several seconds. It would probably work only for several seconds and then hang, requiring to reconnect/change client’s UDP port. | 2020-05-05T22:25:30.486Z |
tango | I don’t know what you mean by regular DNS. dnstt uses normal DNS messages and ordinary public DNS recursive resolvers. The recursive resolver can be DoH, DoT, or classical UDP DNS. There’s also a mode where the tunnel client communicates directly with the tunnel server, but that mode is only for debugging and performance comparisons. If all UDP associations are blocked after a few seconds, then it seems iodine would not work either, because it relies on repeated UDP packets to the same resolver address as well. For some resolvers you may have to reduce the DNS response size on the server with | 2020-05-05T22:37:24.411Z |
ValdikSS |
I see, that wasn’t clear from the readme. I assumed that it works only over DoH, DoT and using custom protocol over UDP with direct connection to the server (without using DNS at all). It would, but not in direct mode. Iodine has two modes of operation: DNS requests/replies over any available DNS resolver, and direct mode with direct UDP connection to the server. I assume only the former would work in this conditions. | 2020-05-05T22:46:17.279Z |
tango |
I see. Thank you for the comment. I will look at the documentation and perhaps make some changes. I wanted to de-emphasize the UDP DNS support because it’s not covert like DoH and DoT are; classical DNS tunnels are easy to detect and block (including iodine). But I mention it in this case because the situation sounds extreme and there may be some short-term usefulness even in the UDP mode. Anyway I apologize, I did not mean to hijack the topic. | 2020-05-05T23:18:45.794Z |
thebadgateway | Спасибо за статью, очень познавательно, особенно когда дал на днях знакомому в Туркменистане свой сервер V2ray и ему хватило им пользоваться пару минут в лучшем случае. | 2020-05-06T03:24:39.777Z |
ValdikSS | Протестировал dnstt от @tango в Туркменистане — работает стабильно и быстро при прямом UDP-соединении с сервером. UDP-соединение не «зависает» — видимо, блокировки DPI не применяются для DNS-трафика. | 2020-05-06T15:13:43.664Z |
thebadgateway | Глянул мельком на страницу про dnstt. Я так понимаю клиент там только один и под смартфоны не кто не писал его? | 2020-05-07T02:28:28.411Z |
ValdikSS | Забыл написать, что доступ к www.google.com перестал работать через несколько часов после публикации первого сообщения, хотя до этого работал двое суток без перебоев. Когда начал анализировать ситуацию, вспомнил, что при соединении к www.google.com используется TLS v1.3, в котором шифруется серверный сертификат, поэтому DPI не мог анализировать именно сертификат в ответе сервера. Почему и как это работало раньше — непонятно, вероятно, в DPI были сделаны какие-то исключения для определенных размеров ответных пакетов (?). | 2020-05-07T10:46:00.096Z |
bolvan | Не пробовал нестандартные IP протоколы ? | 2020-05-09T18:52:44.980Z |
ValdikSS | Пробовал отправлять пустые пакеты со всеми возможными идентификаторами протоколов — ничего не доходило (но это могло быть из-за NAT роутера и из-за Virtualbox, но в Virtualbox был bridge). | 2020-05-09T19:03:59.229Z |
0ka(0ka) | Кажется, блокировки стали менее жесткими в этом году? | 2021-05-26T07:38:14.538Z |
VasilyGrigoriev378(Василий Григорьев) | Как обойти блокировки в Туркменистане просто все впн сдохли не пашут блочат их. Типа Goodbye DPI есть такой же инструмент для Туркменов? | 2021-06-10T19:19:31.492Z |
0ka(0ka) | Да заглохли щас блоки, глянь https://4pda.to/forum/index.php?showtopic=1009120&view=findpost&p=106794738 | 2021-06-11T00:47:28.562Z |