Үйдегі интернет және домендік атау серверінің статистикасы қалай жұмыс істейді?

Үй маршрутизаторы (бұл жағдайда FritzBox) көп нәрсені жаза алады: қанша трафик қашан жүреді, кім қандай жылдамдықпен қосылған және т.б. Жергілікті желідегі домендік атау сервері (DNS) маған белгісіз алушылардың артында не жасырылғанын білуге ​​көмектесті.

Жалпы, DNS үй желісіне оң әсер етті: ол жылдамдықты, тұрақтылықты және басқару мүмкіндігін қосты.

Төменде сұрақтар мен не болып жатқанын түсіну қажеттілігін тудыратын диаграмма берілген. Нәтижелер домендік атау серверлеріне белгілі және жұмыс істейтін сұрауларды әлдеқашан сүзеді.

Неліктен бәрі ұйықтап жатқанда күн сайын 60 түсініксіз домен сұралады?

Күн сайын белсенді сағаттарда 440 белгісіз домен сұралады. Олар кімдер және олар не істейді?

Тәулігіне сағат бойынша сұраныстардың орташа саны

Үйдегі интернет және домендік атау серверінің статистикасы қалай жұмыс істейді?

SQL есеп сұрауы

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT
  1 as 'Line: DNS Requests per Day for Hours',
  strftime('%H:00', datetime(EVENT_DT, 'unixepoch')) AS 'Day',
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS 'Requests per Day'
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
GROUP BY /* hour aggregate */
  strftime('%H:00', datetime(EVENT_DT, 'unixepoch'))
ORDER BY strftime('%H:00', datetime(EVENT_DT, 'unixepoch'))

Түнде сымсыз қосылу өшіріледі және құрылғының белсенділігі күтіледі, яғни. белгісіз домендер үшін сұрау жоқ. Бұл ең үлкен әрекет Android, iOS және Blackberry OS сияқты операциялық жүйелері бар құрылғылардан келетінін білдіреді.

Интенсивті сауалнама жүргізілетін домендерді тізіп көрейік. Қарқындылық тәулігіне сұраулар саны, белсенділік күндерінің саны және олардың тәуліктің қанша сағатында байқалғаны сияқты параметрлермен анықталады.

Барлық күтілетін күдіктілер тізімде болды.

Интенсивті сауалнама жүргізілген домендер

Үйдегі интернет және домендік атау серверінің статистикасы қалай жұмыс істейді?

SQL есеп сұрауы

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT 
  1 as 'Table: Havy DNS Requests',
  REQUEST_NK AS 'Request',
  DOMAIN AS 'Domain',
  REQ AS 'Requests per Day',
  DH AS 'Hours per Day',
  DAYS AS 'Active Days'
FROM (
SELECT
  REQUEST_NK, MAX(DOMAIN) AS DOMAIN,
  COUNT(DISTINCT REQUEST_NK) AS SUBD,
  COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))) AS DAYS,
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS REQ,
  ROUND(1.0*COUNT(DISTINCT strftime('%d.%m %H', datetime(EVENT_DT, 'unixepoch')))/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS DH
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
GROUP BY REQUEST_NK )
WHERE DAYS > 9 -- long period
ORDER BY 4 DESC, 5 DESC
LIMIT 20

Біз өндіруші қауіпсіздік мақсатында ақтайтын isс.blackberry.com және iceberg.blackberry.com сайттарын бұғаттаймыз. Нәтиже: WLAN желісіне қосылу әрекеті кезінде ол кіру бетін көрсетеді және ешқашан ешқайда қайта қосылмайды. Оны бұғаттаудан шығарайық.

detectportal.firefox.com бірдей механизм, тек Firefox шолғышында жүзеге асырылады. WLAN желісіне кіру қажет болса, ол алдымен кіру бетін көрсетеді. Неліктен мекенжайды жиі пингтеу керек екені анық емес, бірақ механизмді өндіруші нақты сипаттайды.

скайп. Бұл бағдарламаның әрекеттері құртқа ұқсас: ол жасырады және тапсырмалар тақтасында өзін өлтіруге мүмкіндік бермейді, желіде көп трафикті жасайды, әр 10 минут сайын 4 доменді пинг жасайды. Бейне қоңырау шалу кезінде Интернет байланысы жақсырақ болмаған кезде үнемі үзіледі. Әзірге бұл қажет, сондықтан ол қалады.

upload.fp.measure.office.com - Office 365 нұсқасына сілтеме жасайды, мен лайықты сипаттаманы таба алмадым.
browser.pipe.aria.microsoft.com - Мен лайықты сипаттаманы таба алмадым.
Біз екеуін де блоктаймыз.

connect.facebook.net - Facebook чат қолданбасы. Қалды.

mediator.mail.ru mail.ru доменіне арналған барлық сұрауларды талдау сенімсіздікті тудыратын көптеген жарнамалық ресурстар мен статистикалық коллекционерлердің бар екенін көрсетті. Mail.ru домені толығымен қара тізімге жіберіледі.

google-analytics.com - құрылғылардың функционалдығына әсер етпейді, сондықтан біз оны блоктаймыз.
doubleclick.net - жарнамалық шертулерді санайды. Біз блоктаймыз.

Көптеген сұраулар googleapis.com сайтына түседі. Блоктау маған ақымақ болып көрінетін планшеттегі қысқа хабарламалардың қуанышпен жабылуына әкелді. Бірақ playstore жұмысын тоқтатты, сондықтан оны бұғаттан шығарайық.

cloudflare.com - олар ашық дереккөзді жақсы көретінін жазады және жалпы өздері туралы көп жазады. Домендік сауалнаманың қарқындылығы толығымен анық емес, бұл көбінесе Интернеттегі нақты белсенділіктен әлдеқайда жоғары. Әзірге қалдырайық.

Осылайша, сұраныстардың қарқындылығы көбінесе құрылғылардың қажетті функционалдығымен байланысты. Бірақ оны белсенділікпен асырғандар да анықталды.

Ең бірінші

Сымсыз интернет қосулы кезде, бәрі әлі ұйықтап жатыр және желіге қандай сұраулар бірінші жіберілетінін көруге болады. Сонымен, сағат 6:50-де Интернет қосылып, алғашқы он минуттық кезеңде күн сайын 60 домен сұралады:

Үйдегі интернет және домендік атау серверінің статистикасы қалай жұмыс істейді?

SQL есеп сұрауы

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT
  1 as 'Table: First DNS Requests at 06:00',
  REQUEST_NK AS 'Request',
  DOMAIN AS 'Domain',
  REQ AS 'Requests',
  DAYS AS 'Active Days',
  strftime('%H:%M', datetime(MIN_DT, 'unixepoch')) AS 'First Ping',
  strftime('%H:%M', datetime(MAX_DT, 'unixepoch')) AS 'Last Ping'
FROM (
SELECT
  REQUEST_NK, MAX(DOMAIN) AS DOMAIN,
  MIN(EVENT_DT) AS MIN_DT,
  MAX(EVENT_DT) AS MAX_DT,
  COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))) AS DAYS,
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS REQ
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
  AND strftime('%H', datetime(EVENT_DT, 'unixepoch')) = strftime('%H', '2019-08-01 06:50:00')
GROUP BY REQUEST_NK
 )
WHERE DAYS > 3 -- at least 4 days activity
ORDER BY 5 DESC, 4 DESC

Firefox WLAN қосылымында кіру бетінің бар-жоғын тексереді.
Қолданба белсенді жұмыс істемесе де, Citrix серверіне пинг жасайды.
Symantec сертификаттарды тексереді.
Mozilla жаңартуларды тексереді, бірақ мен параметрлерде мұны жасамауды сұрадым.

mmo.de - бұл ойын қызметі. Сұраныс facebook чаты арқылы жасалған болуы мүмкін. Біз блоктаймыз.

Apple өзінің барлық қызметтерін қосады. api-glb-fra.smoot.apple.com - сипаттамаға сәйкес, әрбір түймені басу іздеу жүйесін оңтайландыру мақсатында осында жіберіледі. Өте күдікті, бірақ функционалдылыққа қатысты. Біз оны қалдырамыз.

Төменде microsoft.com сайтына сұраулардың ұзын тізімі берілген. Біз үшінші деңгейден бастап барлық домендерді блоктаймыз.

Ең бірінші қосалқы домендердің саны
Үйдегі интернет және домендік атау серверінің статистикасы қалай жұмыс істейді?

Сонымен, сымсыз Интернетті қосудың алғашқы 10 минуты.
iOS ең көп қосалқы домендерді сұрайды - 32. Одан кейін Android - 24, одан кейін Windows - 15 және ең соңында Blackberry - 9.
Бір ғана facebook қолданбасы 10 доменді, Skype 9 доменді сұрайды.

Ақпарат көзі

Талдау көзі келесі пішімді қамтитын bind9 жергілікті серверінің журнал файлы болды:

01-Aug-2019 20:03:30.996 client 192.168.0.2#40693 (api.aps.skype.com): query: api.aps.skype.com IN A + (192.168.0.102)

Файл sqlite дерекқорына импортталды және SQL сұраулары арқылы талданды.
Сервер кэш ретінде әрекет етеді; сұраулар маршрутизатордан келеді, сондықтан әрқашан бір сұраныс клиенті болады. Жеңілдетілген кесте құрылымы жеткілікті, яғни. Есеп сұраудың уақытын, сұраудың өзін және топтастыру үшін екінші деңгейлі доменді талап етеді.

DDL кестелері

CREATE TABLE STG_BIND9_LOG (
  LINE_NK       INTEGER NOT NULL DEFAULT 1,
  DATE_NK       TEXT NOT NULL DEFAULT 'n.a.',
  TIME_NK       TEXT NOT NULL DEFAULT 'n.a.',
  CLI           TEXT, -- client
  IP            TEXT,
  REQUEST_NK    TEXT NOT NULL DEFAULT 'n.a.', -- requested domain
  DOMAIN        TEXT NOT NULL DEFAULT 'n.a.', -- domain second level
  QUERY         TEXT,
  UNIQUE (LINE_NK, DATE_NK, TIME_NK, REQUEST_NK)
);

қорытынды

Осылайша, домендік атаулар серверінің журналын талдау нәтижесінде 50-ден астам жазба цензурадан өтіп, блоктау тізіміне орналастырылды.

Кейбір сұраулардың қажеттілігін бағдарламалық жасақтама өндірушілері жақсы сипаттайды және сенім ұялатады. Дегенмен, белсенділіктің көпшілігі негізсіз және күмәнді.

Ақпарат көзі: www.habr.com

пікір қалдыру