Поводом для написания данного скрипта послужила ситуация с игровыми серверами PSN.
Так, публичные DNS резолвери множество ответов по запросам от игровых приставок, часть которых была в спиках РКН. Приставка же, не понимала особенностей национального фаервола и брала первый IP из списка.
Данный скрипт обращается к роутеру микротик по средствам API, проверяя DNS кэш и внося статические записи после проверки вхождения резолвируемых IP в реестр РКН.
Пример:
Сервер провайдера:
nslookup elb001-mtc-ag21.mtc.usw2.np.cy.s0.playstation.net
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: elb001-mtc-ag21.mtc.usw2.np.cy.s0.playstation.net
Address: 52.24.34.174
Name: elb001-mtc-ag21.mtc.usw2.np.cy.s0.playstation.net
Address: 34.213.199.175
Name: elb001-mtc-ag21.mtc.usw2.np.cy.s0.playstation.net
Address: 35.163.190.236
Name: elb001-mtc-ag21.mtc.usw2.np.cy.s0.playstation.net
Address: 34.211.105.107
Наш DNS:
nslookup elb001-mtc-ag21.mtc.usw2.np.cy.s0.playstation.net 192.168.1.66
Server: 192.168.1.66
Address: 192.168.1.66#53
Non-authoritative answer:
Name: elb001-mtc-ag21.mtc.usw2.np.cy.s0.playstation.net
Address: 52.24.34.174
Установка и настройка:
- Понадобится микротик(можно использовать бесплатную версию микротиковской операционки, установив его на виртуалку) и виртуалка на которой будут крутиться скрипты с интерпритатором php.
- Настроить API миркотик, вписать свои данные в DNS.php заменив, соответственно ('192.168.1.66', 'exec00t', '123tests')
- Добавить в крон скрипт dns.php и make_ban.sh, настроив график выполнения по своему усмотрению.
Рекомендуется dns.php - раз в минуту make_ban.sh - раз в час
Примерно так:
*/1 * * * * Полный_путь_к_php Путь_к_скрипту/dns.php
* */1 * * * Путь_к_скрипту/make_ban.sh
На тестовом роутере у нас стоит более частое выполнение dns.php скриптом.