Los fabricantes de SmartTV están agregando mucha comodidad a sus televisores. De los cuales utilizo televisión, televisión IP, visualizando el contenido de mi servidor DNLA, youtube y skype.A cambio, los fabricantes (esto está escrito en el próximo acuerdo después de la próxima actualización de firmware y software, es imposible rechazarlo) quieren saber qué y cuándo miro, qué lanzo, etc. Especialmente me gusta la capacidad de conectarme remotamente al televisor para obtener ayuda; esto es ciertamente útil, pero aún así ...Si es posible, traté de distorsionar estas estadísticas bloqueando los paquetes del televisor a los dominios correspondientes.Como una puerta de enlace Mikrotik, debajo del corte hay un script que restringe el acceso por nombre DNS desde la lista.La lista de dominios bloqueados no está completa; se compiló desde Internet.El script también se puede usar para bloquear otros dominios.Parámetros de script:- La lista de dominios a bloquear se especifica en el cuerpo del script.
Puede bloquear el dominio especificándolo en la forma exacta
"msecnd.net";
o todos los dominios de un nivel superior que indican *
"*.adform.net";
- NameAddressList: nombre de AddressList para su uso posterior en las reglas de firewall
El script se ejecuta según lo programado: tengo 1 vez por minuto.En el firewall, debe agregar una regla que bloquee el acceso de SmartTV a los dominios de la lista (especificada en el script, parámetro NameAddressList) del formulariochain=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: la dirección del televisor.Cómo funciona- después del primer acceso al dominio: la dirección IP correspondiente cae en el caché Mikrotik
- el script verifica el caché y si coincide, la dirección IP correspondiente se bloquea con TTL para no obstruir la lista. Si TTL = 0, entonces TTL = 59 segundos.
- la regla correspondiente en el firewall bloquea los paquetes a esta dirección IP.
Resulta que dentro de 1 minuto (en mi caso) después de resolver el dominio, la dirección IP se bloqueará.Un minuto después de encender el televisor, aproximadamente dos docenas de direcciones IP bloqueadas. Sucede más.La observación de dominios bloqueados durante media hora mostró:- se accede a ellos incluso si el canal y el volumen no cambian
- suficientes llamadas para preocuparse
La carga creada en el enrutador, en el nivel de error, no notó un aumento.Script en sí: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 ;
}
}
}
}
Actualización 2017.06.13Después del lanzamiento de la versión RouterOS 6.36, se hizo posible bloquear por nombre dns y no por dirección IP. El guión ha sido rehecho.El estado actual degithub.com/ErshovSergey/Mikrotik_update_AddressList_ip