MikroTik — Автоматически меняем MAC адрес на рандомный
Внимание! Данный пост был опубликован более года назад и, возможно, уже утратил свою былую актуальность. Но это не точно.

Очередной приступ паранойи застал врасплох. Мысль о том что MAC-адрес беспощадно палит привязку твоих сессий в логах провайдера не давала покоя и надо было с этим что то делать.

Позвонив товарищу, который поинтересовался у инженеров провайдера (одного из представителей “Большой тройки”) соображениями о том, просто ли получить информацию о сессиях абонента, имея на руках MAC-адрес. Ответ был очевиден - “Да как два пальца..”. Нет, часто меняя MAC-и, разумеется, полной анонимности не добьешься, но некоторые затруднения это всё-таки вызовет.

Было решено, надо каким-то образом менять MAC адрес WAN-порта на рандомный, да с заданным интервалом. Имея на руках всё тот же MikroTik, всё решается с помощью одного лишь скрипта.

Внутренние механизмы скриптинга до сих пор не имеют функции для генерации случайного числа и, уж тем более, случайного символа. Но мы же можем взять какие-либо значения из железки, которые не перманентны, например, текущую дату, аптайм и загруженность процессора. После получения “случайного” числа, получить символ в строке-заготовке по позиции этого числа, получив тем самым “случайный” символ. После чего сформировать “случайный” MAC-адрес и применить его к интерфейсу.

Переходим к делу. SystemScriptsAdd New:

  • Name: RandomMAC
  • Policy: [X] read, [X] write, [X] policy
  • Comment: Randomize MAC address

В переменную WanInterface укажи название твоего интерфейса соответственно.

Первые два символа у нас всегда 00 и это неспроста - наткнулся на противный баг в RouterOS, из-за которого маршрутизатор не хотел принимать вполне валидные MAC-адреса, а с ведущими нулями проблемы не возникало. На текущей прошивке версии 6.30.2 он ещё не исправлен. Надеюсь, в дальнейших версиях разработчики его пофиксят

Нажимаем Apply и после Run Script. Открываем лог и смотрим, чтоб там были записи, похожие на:

Change MAC to random (00:AA:BB:CC:DD:EE -> 00:11:22:33:44:55)
...
MAC address on "ether1-wan" changed successfully! New MAC is 00:11:22:33:44:55

Если так оно и есть - ништяк, добавляй задание в Scheduler:

  • Enabled: [X]
  • Name: RandomMAC
  • Interval: 2d 00:00:00
  • On Event: /system script run RandomMAC
  • Policy: [X] read, [X] write, [X] policy
  • Comment: Randomize MAC address

Теперь скрипт будет запускаться с интервалом в два дня и менять MAC-адрес WAN-порта на “почти” рандомный ;)