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.