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 formulirchain=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";
"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={
:foreach i in=[/ip dns cache all find where (name~$CurrentDNSDomain ) ] do={
:local cacheName [/ip dns cache get $i name] ;
:local tmpAddress [:resolve $cacheName]
:log debug " cacheName :'$cacheName' tmpAddress:'$tmpAddress'"
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] ;
: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] ];
:foreach i in=[/ip dns cache all find where (name~$CurrentDNSDomain ) ] do={
:local cacheName [/ip dns cache get $i name] ;
:local tmpAddress [:resolve $cacheName]
:log debug " cacheName :'$cacheName' tmpAddress:'$tmpAddress'"
delay delay-time=10ms
:if ( [/ip firewall address-list find where address=$tmpAddress] = "") do={
:local cacheNameTTL [/ip dns cache get $i ttl] ;
: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.13Setelah merilis versi RouterOS 6.36 - menjadi mungkin untuk memblokir dengan nama dns, dan bukan dengan alamat ip. Script telah diulang.Keadaan saat ini darigithub.com/ErshovSergey/Mikrotik_update_AddressList_ip