Үй маршрутизаторы (бұл жағдайда, 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 ОС.
Біз қарқынды ізделетін домендерді анықтаймыз. Бұл қарқындылық күніне сұраныстар саны, белсенділік күндерінің саны және олардың байқалған уақыты сияқты параметрлермен анықталады.
Тізімге барлық күдіктілер кірді.
Көп ізделетін домендер

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Біз iss.blackberry.com және iceberg.blackberry.com сайттарын бұғаттаймыз, өндіруші мұны қауіпсіздік мәселелерімен ақтайды. Нәтижесі: Wi-Fi желісіне қосылуға тырысқанда, ол кіру бетін көрсетеді және басқа ештеңеге қосылмайды. Оны бұғаттан шығарайық.
detectportal.firefox.com ұқсас механизм болып табылады, бірақ Firefox браузерінде жүзеге асырылады. Wi-Fi желісіне кірген кезде, алдымен кіру беті көрсетіледі. Неліктен мекенжайға жиі пинг жіберу керек екені толық түсініксіз, бірақ механизмді өндіруші анық сипаттаған.
Skype. Бұл бағдарлама құрт сияқты жұмыс істейді: ол жасырынып, тапсырмалар тақтасында оңай өліп қалмайды, көп желілік трафик тудырады және әр 10 минут сайын төрт доменге пинг жібереді. Бейне қоңырау кезінде ол интернет байланысын үнемі азайтады, тіпті одан да жақсы болуы мүмкін емес болса да. Ол әзірге қажет болғанша орнында қалады.
upload.fp.measure.office.com — Office 365-ке қатысты, мен лайықты сипаттама таба алмадым.
browser.pipe.aria.microsoft.com - Мен лайықты сипаттама таба алмадым.
Екеуін де блоктаймыз.
connect.facebook.net - Facebook чат қолданбасы. Ол әлі де осында.
mail.ru доменіне қойылған барлық сұраныстарды талдау нәтижесінде көптеген жарнамалық ресурстар мен статистика жинаушылардың бар екендігі анықталды, бұл күдік тудырады. mail.ru доменінің барлығы қара тізімге енгізілген.
google-analytics.com — құрылғының жұмысына әсер етпейді, сондықтан біз оны бұғаттаймыз.
doubleclick.net — жарнаманың басылу санын есептейді. Біз оларды бұғаттаймыз.
Көптеген сұраныстар googleapis.com сайтына келіп түсуде. Оны бұғаттау планшетімдегі қысқа хабарламаларды өшіріп тастады, бұл маған күлкілі болып көрінеді. Бірақ Play Store жұмысын тоқтатты, сондықтан біз оны бұғаттан шығарамыз.
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 DESCFirefox кіру беті үшін 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
