Grzegorz Barański

🇵🇱 🇬🇧

Research :

Cenzura internetowa wschodnich stron w Polsce

Uniwersytet w Moskwie

Jakiś czas temu, chcąc sprawdzić oferty studiów na Moscow State University znalałem w Google odnośnik do strony msu.ru, zdziwiłem się, bo nie dało się na nią wejść.

Inne strony które nie działają

Okazuje się, że cenzura nie dotyczy tylko i wyłącznie strony moskiewskiego uniwersytetu.

Nie działa nawet strona yandex.com - miedzynarodowa firma technologiczna z Rosji.

Kto blokuje? Rosja czy dostawca?

Wystarczyło wysłać zapytanie DNS do dostawcy internetu(adres IP 178.19.179.238), żeby się dowiedzieć, że blokada leży po jego stronie.

$ dig @178.19.179.238 yandex.com

; <<>> DiG 9.10.6 <<>> @178.19.179.238 yandex.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 41930
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;yandex.com.			IN	A

;; Query time: 57 msec
;; SERVER: 178.19.179.238#53(178.19.179.238)
;; WHEN: Tue Sep 10 21:57:42 CEST 2024
;; MSG SIZE  rcvd: 28
$ dig @178.19.179.238 msu.ru

; <<>> DiG 9.10.6 <<>> @178.19.179.238 msu.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 56866
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;msu.ru.				IN	A

;; Query time: 4285 msec
;; SERVER: 178.19.179.238#53(178.19.179.238)
;; WHEN: Tue Sep 10 22:01:55 CEST 2024
;; MSG SIZE  rcvd: 24

Okazuje się, że zapytania o stronę yandex.com i msu.ru zwracają puste odpowiedzi.

Jak powinna wyglądać zatem odpowiedź? Przykładowo zapytanie o stronę gbaranski.com:

$ dig @178.19.179.238 gbaranski.com

; <<>> DiG 9.10.6 <<>> @178.19.179.238 gbaranski.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12683
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;gbaranski.com.			IN	A

;; ANSWER SECTION:
gbaranski.com.		300	IN	A	172.67.223.248
gbaranski.com.		300	IN	A	104.21.25.77

;; Query time: 196 msec
;; SERVER: 178.19.179.238#53(178.19.179.238)
;; WHEN: Tue Sep 10 22:00:31 CEST 2024
;; MSG SIZE  rcvd: 63

I to nie jest kwestia yandex.com czy msu.ru. Co jeśli te same zapytania wyślemy do normalnego DNS’a jak np. Cloudflare DNS(adres IP 8.8.8.8)?

$ dig @8.8.8.8 yandex.com

; <<>> DiG 9.10.6 <<>> @8.8.8.8 yandex.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51301
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;yandex.com.			IN	A

;; ANSWER SECTION:
yandex.com.		79	IN	A	77.88.55.88
yandex.com.		79	IN	A	5.255.255.77
yandex.com.		79	IN	A	77.88.44.55

;; Query time: 22 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Sep 10 22:03:19 CEST 2024
;; MSG SIZE  rcvd: 87
$ dig @8.8.8.8 msu.ru

; <<>> DiG 9.10.6 <<>> @8.8.8.8 msu.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21401
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;msu.ru.				IN	A

;; ANSWER SECTION:
msu.ru.			600	IN	A	84.201.185.178

;; Query time: 56 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Sep 10 22:03:57 CEST 2024
;; MSG SIZE  rcvd: 51

Cenzura z poziomu DNS jest całkiem łatwa do rozwiązania, wystarczy w ustawieniach sieciowych zmienić serwer DNS na jakiś inny, np. 8.8.8.8 czy 1.1.1.1.

Problem w tym przypadku jest taki, że blokada występuje też na poziomie adresów IP.

Weźmy adres IP domeny msu.ru który zwrócił nam DNS od Cloudflare, i sprawdźmy czy można na niego cokolwiek wysłać.

$ ping 84.201.185.178
PING 84.201.185.178 (84.201.185.178): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5

Timeout przy wysyłaniu pinga, a co mówi traceroute, który jest w stanie prześledzić, gdzie pakiet jest zatrzymywany/zablokowany?

$ traceroute 84.201.185.178
traceroute to 84.201.185.178 (84.201.185.178), 64 hops max, 40 byte packets
 1  192.168.1.1 (192.168.1.1)  3.668 ms  3.908 ms  2.730 ms
 2  10.30.115.1 (10.30.115.1)  4.586 ms  3.955 ms  3.856 ms
 3  172.20.200.73 (172.20.200.73)  5.473 ms  4.359 ms  4.511 ms
 4  172.20.200.250 (172.20.200.250)  6.389 ms  5.996 ms  5.291 ms
 5  172.20.201.69 (172.20.201.69)  39.417 ms  8.213 ms  6.177 ms
 6  172.20.201.150 (172.20.201.150)  12.905 ms  14.488 ms  12.341 ms
 7  waw.lim.bgp02.tbtelecom.pl (178.19.179.13)  11.765 ms *  17.996 ms
 8  * ae78-501.edge4.warsaw1.level3.net (213.242.118.45)  32.197 ms  38.618 ms
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *

Adres moskiewskiego uniwersytetu jest blokowany po adresie ae78-501.edge4.warsaw1.level3.net. Po wyszukiwaniu tego w internecie, cieżko powiedzieć, co to dokładnie jest i kto za to odpowiada.

Możemy jeszcze sprawdzić, czy da się wysłać pakiety na yandex.com łącząc się przez serwer w Niemczech.

$ ssh <adres mojego serwera w DE>
$ ping yandex.com

PING yandex.com(yandex.ru (2a02:6b8🅰️:a)) 56 data bytes
64 bytes from yandex.ru (2a02:6b8🅰️:a): icmp_seq=1 ttl=53 time=51.1 ms
64 bytes from yandex.ru (2a02:6b8🅰️:a): icmp_seq=2 ttl=53 time=50.2 ms
64 bytes from yandex.ru (2a02:6b8🅰️:a): icmp_seq=3 ttl=53 time=50.3 ms
64 bytes from yandex.ru (2a02:6b8🅰️:a): icmp_seq=4 ttl=53 time=50.2 ms

Bezproblemowo. To samo tyczy się domeny msu.ru.

Podsumowanie

Jedyny sposób na korzystanie z serwisu yandex.com czy innych stron rosyjskich jest przez VPN. Troche jest to hipokryzja, patrząc na to, że na każdym kroku krytykuje się cenzurę w Rosji, a samemu się blokuje niewinne domeny.