Конфиг для Mikrotik с помощью make config: відмінності між версіями
Перейти до навігації
Перейти до пошуку
Sv (обговорення | внесок) Немає опису редагування |
Sv (обговорення | внесок) |
||
(Не показано 7 проміжних версій цього користувача) | |||
Рядок 3: | Рядок 3: | ||
Модуль make_config периодически формирует конфиг и загружает его на Mikrotik с помощью ssh. Авторизация по сертификату. | Модуль make_config периодически формирует конфиг и загружает его на Mikrotik с помощью ssh. Авторизация по сертификату. | ||
===Создание сертификата=== | |||
На сервере NoDeny: | |||
<pre> | |||
mkdir /usr/local/nodeny/mikdhcp/ | |||
ssh-keygen -t dsa | |||
</pre> | |||
На вопрос "Enter file in which to save the key" отвечаем: | |||
<pre> | |||
/usr/local/nodeny/mikdhcp/id_dsa | |||
</pre> | |||
Загружаем сертификат на Mikrotik с ip=1.2.3.4: | |||
<pre> | |||
sftp admin@1.2.3.4 | |||
</pre> | |||
И далее в консоли sftp: | |||
<pre> | |||
put /usr/local/nodeny/mikdhcp/id_dsa.pub | |||
</pre> | |||
Импортируем сертификат. В консоли Mikrotik: | |||
<pre> | |||
/user ssh-keys import public-key-file=id_dsa.pub | |||
</pre> | |||
===Создание шаблона=== | |||
Шаблон /usr/local/nodeny/kernel/make_config/mikrotik.tmpl: | Шаблон /usr/local/nodeny/kernel/make_config/mikrotik.tmpl: | ||
<pre> | <pre> | ||
ssh -i /usr/local/nodeny/mikdhcp/id_dsa - | ssh -i /usr/local/nodeny/mikdhcp/id_dsa -p22 admin@1.2.3.4 << EOF | ||
/ip dhcp-server lease remove [find comment=nodeny] | /ip dhcp-server lease remove [find comment=nodeny] | ||
{% for user in users %} | {% for user in users %} | ||
Рядок 19: | Рядок 51: | ||
EOF | EOF | ||
</pre> | </pre> | ||
В Linux для ssh добавьте ключ "-T". | |||
<br> | |||
/usr/local/nodeny/kernel/make_config_mikrotik.cfg: | /usr/local/nodeny/kernel/make_config_mikrotik.cfg: | ||
Рядок 31: | Рядок 67: | ||
# системная команда, которая будет выполнена перед записью конфига, можно '' | # системная команда, которая будет выполнена перед записью конфига, можно '' | ||
cmd_before => ' | cmd_before => '', | ||
# системная команда, которая будет выполнена после записи конфига, можно '' | # системная команда, которая будет выполнена после записи конфига, можно '' | ||
cmd_after => '', | cmd_after => 'sh /tmp/mikdhcp.sh >/dev/null 2>/dev/null', | ||
# удалять пустые строки | # удалять пустые строки | ||
Рядок 57: | Рядок 93: | ||
Результат | Результат | ||
<pre> | <pre> | ||
ssh -i /usr/local/nodeny/mikdhcp/id_dsa - | ssh -i /usr/local/nodeny/mikdhcp/id_dsa -p22 admin@1.2.3.4 << EOF | ||
/ip dhcp-server lease remove [find comment=nodeny] | /ip dhcp-server lease remove [find comment=nodeny] | ||
/ip dhcp-server lease add address=10.0.0.26 mac-address=00:00:00:00:00:11 address-list=goodboys comment=nodeny | /ip dhcp-server lease add address=10.0.0.26 mac-address=00:00:00:00:00:11 address-list=goodboys comment=nodeny |
Поточна версія на 19:36, 25 листопада 2019
DHCP-сервер на Mikrotik без использования Radius
Модуль make_config периодически формирует конфиг и загружает его на Mikrotik с помощью ssh. Авторизация по сертификату.
Создание сертификата
На сервере NoDeny:
mkdir /usr/local/nodeny/mikdhcp/ ssh-keygen -t dsa
На вопрос "Enter file in which to save the key" отвечаем:
/usr/local/nodeny/mikdhcp/id_dsa
Загружаем сертификат на Mikrotik с ip=1.2.3.4:
sftp admin@1.2.3.4
И далее в консоли sftp:
put /usr/local/nodeny/mikdhcp/id_dsa.pub
Импортируем сертификат. В консоли Mikrotik:
/user ssh-keys import public-key-file=id_dsa.pub
Создание шаблона
Шаблон /usr/local/nodeny/kernel/make_config/mikrotik.tmpl:
ssh -i /usr/local/nodeny/mikdhcp/id_dsa -p22 admin@1.2.3.4 << EOF /ip dhcp-server lease remove [find comment=nodeny] {% for user in users %} {% eval i = 0 %} {% for ip in user.ips %} {% if user.mac.[i] %} /ip dhcp-server lease add address={{ip.ipa}} mac-address={{user.mac.[i]|pretty_mac}} address-list=goodboys comment=nodeny {% eval i = i + 1 %} {% endif %} {% endfor %} {% endfor %} EOF
В Linux для ssh добавьте ключ "-T".
/usr/local/nodeny/kernel/make_config_mikrotik.cfg:
run => 0, period => 60, template => { 'mikrotik.tmpl' => { # куда будет записан сформированный конфиг file => '/tmp/mikdhcp.sh', # системная команда, которая будет выполнена перед записью конфига, можно '' cmd_before => '', # системная команда, которая будет выполнена после записи конфига, можно '' cmd_after => 'sh /tmp/mikdhcp.sh >/dev/null 2>/dev/null', # удалять пустые строки pretty => 1, }, }, subs => { pretty_mac => sub { my $mac = shift; $mac =~ s/(..)/$1:/g; chop $mac; return $mac; }, },
Тестовый запуск:
perl nokernel.pl -v -m=make_config -g=make_config_mikrotik
Результат
ssh -i /usr/local/nodeny/mikdhcp/id_dsa -p22 admin@1.2.3.4 << EOF /ip dhcp-server lease remove [find comment=nodeny] /ip dhcp-server lease add address=10.0.0.26 mac-address=00:00:00:00:00:11 address-list=goodboys comment=nodeny /ip dhcp-server lease add address=10.0.0.20 mac-address=00:00:00:00:00:22 address-list=goodboys comment=nodeny EOF