Os fabricantes de SmartTV estão adicionando muita comodidade às suas TVs. Dos quais eu uso televisão, televisão IP, visualizando o conteúdo do meu servidor DNLA, youtube e skype.Em troca, os fabricantes (escritos no próximo contrato após a próxima atualização de firmware e software, é impossível recusar) querem saber o que e quando visualizo, o que inicio etc. Gosto especialmente da capacidade de conectar remotamente à TV para obter ajuda - isso é certamente útil, mas ainda assim ...Se possível, tentei distorcer essas estatísticas bloqueando pacotes da TV para os domínios correspondentes.Como um gateway Mikrotik, abaixo do corte há um script que restringe o acesso pelo nome do DNS da lista.A lista de domínios bloqueados não está completa, foi compilada a partir da Internet.O script também pode ser usado para bloquear outros domínios.Parâmetros de script:- A lista de domínios a serem bloqueados é especificada no corpo do script.
Você pode bloquear o domínio, especificando-o na forma exata
"msecnd.net";
ou todos os domínios de nível superior indicando *
"*.adform.net";
- NameAddressList - nome do AddressList para uso posterior nas regras de firewall
O script é executado dentro do cronograma - eu tenho 1 vez por minuto.No firewall, você precisa adicionar uma regra que bloqueie o acesso do SmartTV a domínios da lista (especificada no script, parâmetro NameAddressList) do formuláriochain=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 - o endereço da TV.Como funciona:- após o primeiro acesso ao domínio - o endereço IP correspondente cai no cache do Mikrotik
- o script verifica o cache e, se corresponder, o endereço IP correspondente será bloqueado com TTL para não obstruir a lista. Se TTL = 0, TTL = 59 segundos.
- a regra correspondente no firewall bloqueia pacotes para esse endereço IP.
Acontece que dentro de 1 minuto (no meu caso) após a resolução do domínio - o endereço IP será bloqueado.Um minuto depois de ligar a TV - cerca de duas dúzias de endereços IP bloqueados. Isso acontece mais.A observação de domínios bloqueados por meia hora mostrou:- eles são acessados mesmo que o canal e o volume não mudem
- chamadas suficientes para se preocupar
A carga criada no roteador - no nível do erro - não notou um aumento.Script em si: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 ;
}
}
}
}
Atualização 2017.06.13Após o lançamento da versão do RouterOS 6.36 - tornou-se possível bloquear pelo nome do DNS e não pelo endereço IP. O script foi refeito.O estado atual dogithub.com/ErshovSergey/Mikrotik_update_AddressList_ip