Smart TV - mungkin tidak menonton. Tapi tetap saja ...

Pabrikan SmartTV menambahkan banyak kenyamanan ke TV mereka. Dari yang saya gunakan televisi, televisi IP, melihat konten server DNLA saya, youtube dan skype.

Sebagai gantinya, produsen (ini ditulis dalam perjanjian berikutnya setelah pembaruan firmware dan perangkat lunak berikutnya, tidak mungkin untuk menolak) ingin tahu apa dan kapan saya melihat, apa yang saya luncurkan, dll. Saya terutama "menyukai" kemampuan untuk terhubung ke TV dari jauh untuk mendapatkan bantuan - ini tentu berguna, tapi tetap saja ...

Jika mungkin, saya mencoba mengubah statistik ini dengan memblokir paket dari TV ke domain yang sesuai.

Sebagai gateway Mikrotik, di bawah cut adalah skrip yang membatasi akses dengan nama dns dari daftar.
Daftar domain yang diblokir tidak lengkap, itu dikompilasi dari Internet.

Skrip juga dapat digunakan untuk memblokir domain lain.

Parameter Skrip:
  • Daftar domain yang akan diblokir ditentukan di badan skrip.
    Anda dapat memblokir domain dengan menentukannya dalam bentuk yang tepat
    "msecnd.net";

    atau semua domain dari tingkat yang lebih tinggi yang menunjukkan *
    "*.adform.net";
  • NameAddressList - nama AddressList untuk digunakan nanti dalam aturan firewall


Script berjalan sesuai jadwal - saya punya 1 kali satu menit.

Di firewall, Anda perlu menambahkan aturan yang memblokir akses untuk SmartTV ke domain dari daftar (ditentukan dalam skrip, parameter NameAddressList) dari formulir
chain=forward action=reject reject-with=icmp-network-unreachable src-address=192.168.100.123 dst-address-list=BlockSpySmartTV log=no log-prefix="BlockSpySmartTV: " 

192.168.100.123 - alamat TV.

Cara kerjanya:
  • setelah akses pertama ke domain - alamat ip yang sesuai jatuh ke cache Mikrotik
  • skrip memeriksa cache dan jika cocok, alamat IP yang sesuai diblokir dengan TTL agar tidak menyumbat daftar. Jika TTL = 0, maka TTL = 59 detik.
  • aturan terkait di firewall memblokir paket ke alamat IP ini.

Ternyata dalam 1 menit (dalam kasus saya) setelah menyelesaikan domain - alamat IP akan diblokir.

Semenit setelah menyalakan TV - sekitar dua lusin alamat IP diblokir. Itu terjadi lebih banyak.

Pengamatan domain yang diblokir selama setengah jam menunjukkan:
  • mereka diakses bahkan jika saluran dan volume tidak berubah
  • cukup banyak panggilan untuk khawatir


Beban yang dibuat pada router - pada tingkat kesalahan - tidak melihat peningkatan.

Script itu sendiri
:local NameAddressList "BlockSpySmartTV"

#  
:local DNSDomains {
	"*.samsungelectronics.com";
	"*.samsungcloudsolution.com";
	"*.samsungcloudsolution.net";
	"*.samsungcloudsolution.com";
	"*.samsungrm.net";
	"*.samsungotn.net";
	"*.samsungosp.com";
	"*.internetat.tv";
	"*.samsungyosemite.com";
	"*.cloudfront.net";
	"*.google-analytics.com";
	"*.googletagservices.com";
	"*.googlesyndication.com";
	"*.amazonaws.com";
	"*.krxd.net";
	"*.cloudapp.net";
	"*.doubleclick.net";
	"*.xiti.com";
	"*.pavv.co.kr";
	"*.adform.net";
# youtube
#"*.ytimg.com";
#
	"msecnd.net";
}

#  
:local QuantDNSDomains [:len $DNSDomains]

:for iDNSDomain from=0 to=($QuantDNSDomains-1) do={ 

#  
	:local CurrentDNSDomain (:put ($DNSDomains->($iDNSDomain)))
	:log debug " CurrentDNSDomain:'$CurrentDNSDomain'"

	:local prfx [:pick $CurrentDNSDomain 0 1];
	:log debug " prfx:'$prfx'"
	:if ($prfx != "*") do={

#  dns     dns
		:foreach i in=[/ip dns cache all find where (name~$CurrentDNSDomain ) ] do={
#   dns   ip  
			:local cacheName [/ip dns cache get $i name] ;
			:local tmpAddress [:resolve $cacheName]
			:log debug " cacheName :'$cacheName' tmpAddress:'$tmpAddress'"

#prevent script from using all cpu time
			delay delay-time=10ms

#      
			:if ( [/ip firewall address-list find where address=$tmpAddress] = "") do={ 
				:local cacheName [/ip dns cache get $i name] ;
				:local cacheNameTTL [/ip dns cache get $i ttl] ;

#  ttl<1m,  ttl=1m
				:log debug " cacheNameTTL: $cacheNameTTL "
				:if ( $cacheNameTTL < "00:00:59" ) do={
					:set cacheNameTTL "00:00:59"
					:log debug " SET cacheNameTTL: $cacheNameTTL "
				}

				:log warning (" added entry: dns-name: $cacheName ip-addr:$tmpAddress ttl:$cacheNameTTL ");
				/ip firewall address-list add address=$tmpAddress list=$NameAddressList comment=$cacheName timeout=$cacheNameTTL ;
			}
		}
	} else {
#   - 
		:set CurrentDNSDomain [:pick $CurrentDNSDomain 1 [:len $CurrentDNSDomain] ];

#  dns     dns
		:foreach i in=[/ip dns cache all find where (name~$CurrentDNSDomain ) ] do={
#   dns   ip  
			:local cacheName [/ip dns cache get $i name] ;
			:local tmpAddress [:resolve $cacheName]
			:log debug " cacheName :'$cacheName' tmpAddress:'$tmpAddress'"

#prevent script from using all cpu time
			delay delay-time=10ms

#      
			:if ( [/ip firewall address-list find where address=$tmpAddress] = "") do={ 
# ttl     dns
				:local cacheNameTTL [/ip dns cache get $i ttl] ;

#  ttl<1m,  ttl=1m
				:log debug " cacheNameTTL: $cacheNameTTL "
				:if ( $cacheNameTTL < "00:00:59" ) do={
					:set cacheNameTTL "00:00:59"
					:log debug " SET cacheNameTTL: $cacheNameTTL "
				}

				:log debug (" CurrentDNSDomain: '$CurrentDNSDomain' added entry: dns-name: $cacheName ip-addr:$tmpAddress ttl:$cacheNameTTL ");
				/ip firewall address-list add address=$tmpAddress list=$NameAddressList comment=$cacheName timeout=$cacheNameTTL ;
			}
		}
	}
}



Pembaruan 2017.06.13
Setelah merilis versi RouterOS 6.36 - menjadi mungkin untuk memblokir dengan nama dns, dan bukan dengan alamat ip. Script telah diulang.
Keadaan saat ini dari
github.com/ErshovSergey/Mikrotik_update_AddressList_ip

Source: https://habr.com/ru/post/id389821/


All Articles