SmartTV-Hersteller bieten ihren Fernsehgeräten viel Komfort. Davon benutze ich Fernsehen, IP-Fernsehen, um den Inhalt meines DNLA-Servers, Youtube und Skype anzusehen.Im Gegenzug möchten Hersteller (dies steht in der nächsten Vereinbarung nach dem nächsten Firmware- und Software-Update, es ist unmöglich, dies abzulehnen) wissen, was und wann ich schaue, was ich starte usw. Ich mag besonders die Möglichkeit, eine Remote-Verbindung zum Fernseher herzustellen, um Hilfe zu erhalten - dies ist sicherlich nützlich, aber dennoch ...Wenn möglich, habe ich versucht, diese Statistiken zu verzerren, indem ich Pakete vom Fernseher zu den entsprechenden Domänen blockiert habe.Als Mikrotik-Gateway befindet sich unter dem Schnitt ein Skript, das den Zugriff durch den DNS-Namen aus der Liste einschränkt.Die Liste der blockierten Domains ist nicht vollständig und wurde aus dem Internet zusammengestellt.Das Skript kann auch zum Blockieren anderer Domänen verwendet werden.Skriptparameter:- Die Liste der zu blockierenden Domänen wird im Hauptteil des Skripts angegeben.
Sie können die Domain blockieren, indem Sie sie in der genauen Form angeben
"msecnd.net";
oder alle Domänen einer höheren Ebene, die * anzeigen
"*.adform.net";
- NameAddressList - Name der Adressliste zur späteren Verwendung in Firewall-Regeln
Das Skript läuft planmäßig - ich habe 1 Mal pro Minute.In der Firewall müssen Sie eine Regel hinzufügen, die den Zugriff von SmartTV auf Domänen aus der Liste (im Skript angegeben, Parameter NameAddressList) des Formulars blockiertchain=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 - die Adresse des Fernsehgeräts.Wie es funktioniert:- Nach dem ersten Zugriff auf die Domain fällt die entsprechende IP-Adresse in den Mikrotik-Cache
- Das Skript überprüft den Cache und wenn es übereinstimmt, wird die entsprechende IP-Adresse mit TTL blockiert, um die Liste nicht zu verstopfen. Wenn TTL = 0, dann ist TTL = 59 Sekunden.
- Die entsprechende Regel in der Firewall blockiert Pakete an diese IP-Adresse.
Es stellt sich heraus, dass innerhalb von 1 Minute (in meinem Fall) nach dem Auflösen der Domain die IP-Adresse blockiert wird.Eine Minute nach dem Einschalten des Fernsehgeräts - ungefähr zwei Dutzend blockierte IP-Adressen. Es passiert mehr.Die Beobachtung blockierter Domänen für eine halbe Stunde zeigte:- Sie werden auch dann aufgerufen, wenn sich Kanal und Lautstärke nicht ändern
- genug Anrufe, um sich Sorgen zu machen
Die auf dem Router erzeugte Last - auf der Fehlerstufe - bemerkte keinen Anstieg.Skript selbst: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 ;
}
}
}
}
Update 2017.06.13Nach der Veröffentlichung von RouterOS 6.36 wurde es möglich, nach DNS-Namen und nicht nach IP-Adresse zu blockieren. Das Skript wurde überarbeitet.Der aktuelle Status vongithub.com/ErshovSergey/Mikrotik_update_AddressList_ip