Les fabricants de SmartTV ajoutent beaucoup de confort à leurs téléviseurs. Dont j'utilise la télévision, la télévision IP, la visualisation du contenu de mon serveur DNLA, youtube et skype.En échange, les fabricants (c'est écrit dans le prochain accord après la prochaine mise à jour du firmware et du logiciel, c'est impossible à refuser) veulent savoir à quoi et quand je regarde, ce que je lance, etc. J'aime particulièrement la possibilité de se connecter à distance au téléviseur pour obtenir de l'aide - c'est certainement utile, mais quand même ...Si possible, j'ai essayé de déformer ces statistiques en bloquant les paquets du téléviseur vers les domaines correspondants.En tant que passerelle Mikrotik, sous la coupe se trouve un script qui restreint l'accès par nom DNS à partir de la liste.La liste des domaines bloqués n'est pas complète, elle a été compilée à partir d'Internet.Le script peut également être utilisé pour bloquer d'autres domaines.Paramètres de script:- La liste des domaines à bloquer est spécifiée dans le corps du script.
Vous pouvez bloquer le domaine en le spécifiant sous la forme exacte
"msecnd.net";
ou tous les domaines d'un niveau supérieur indiquant *
"*.adform.net";
- NameAddressList - nom de AddressList pour une utilisation ultérieure dans les règles de pare-feu
Le script s'exécute comme prévu - j'ai 1 fois par minute.Dans le pare-feu, vous devez ajouter une règle qui bloque l'accès pour SmartTV aux domaines de la liste (spécifiée dans le script, paramètre NameAddressList) du formulairechain=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 - l'adresse du téléviseur.Comment ça marche:- après le premier accès au domaine - l'adresse IP correspondante tombe dans le cache Mikrotik
- le script vérifie le cache et s'il correspond, l'adresse IP correspondante est bloquée avec TTL afin de ne pas obstruer la liste. Si TTL = 0, alors TTL = 59 secondes.
- la règle correspondante dans le pare-feu bloque les paquets vers cette adresse IP.
Il s'avère que dans la minute (dans mon cas) après la résolution du domaine - l'adresse IP sera bloquée.Une minute après avoir allumé le téléviseur - environ deux douzaines d'adresses IP bloquées. Cela arrive plus.L'observation des domaines bloqués pendant une demi-heure a montré:- ils sont accessibles même si le canal et le volume ne changent pas
- assez d'appels pour s'inquiéter
La charge créée sur le routeur - au niveau d'erreur - n'a pas remarqué d'augmentation.Script lui-même: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 ;
}
}
}
}
Mise à jour 2017.06.13Après la sortie de la version RouterOS 6.36 - il est devenu possible de bloquer par nom DNS, et non par adresse IP. Le script a été refait.L'état actuel degithub.com/ErshovSergey/Mikrotik_update_AddressList_ip