:::: MENU ::::

transfer dzierżaw dhcp pomiędzy Mikrotik`ami

środowisko: 2xRB1100AHx2 VRRP Linux

W przypadku gdy tworzymy pseudo HA wykorzystując protokół VRRP, a Mikrotik jest jednocześnie serwerem DHCP może zachodzić konieczność transferowania wpisów dotyczących dzierżaw adresów IP z routera master na backup (jakichkolwiek inne dane np. wpisy addresslist możemy przenosić analogicznie). Poniższy przykład dotyczy transferu wpisów serwera DHCP.

Tworzymy grupę/y oraz użytkownika/ów serwera FTP (od firmware ≥ 6.35 user musi należeć do grupy o polityce sensitive inaczej nie pobierze plików)


/user group add name=ftpusers policy=read,write,ftp,sensitive
/user add name=ftpdata password=12345 group=ftpusers

Na routerze MASTER ustawić automatyczny eksport dzierżaw w określonych interwałach czasowych (w przykładzie co jeden dzień)

/system scheduler add name=leasesexport start-time=03:00:00 interval=1d start-date=Jan/01/1970 on-event="/ip dhcp-server lease export file=auto
-leases

O określonej godzinie dokonywany jest transfer wyeksportowanych dzierżaw z routera MASTER na BACKUP, można do tego wykorzystać cron`a oraz poniższy skrypt gpleases (jednocześnie tworzy archiwum pobranych dzierżaw)

#!/bin/bash
 
#
# Vars
PDIR=`pwd`
WORKDIR=/tmp
# MASTER
MIKROTIK[0]='10.10.0.1'
USERNAME[0]='ftpdata'
PASSWORD[0]='12345'
FILENAME[0]='auto-leases.rsc'
DESTPATH[0]='/log/mikrotik-backups/leases'
# BACKUP
MIKROTIK[1]='10.10.0.2'
USERNAME[1]='ftpdata'
PASSWORD[1]='12345'
FILENAME[1]='auto-leases.rsc'
 
#
# Commands
exec 1> >(/usr/bin/logger -t $(basename $0)) 2>&1
cd $WORKDIR
TODAY=`date +%Y%m%d-%H$M`
echo "Get leases from ${MIKROTIK[0]} Mikrotik Router"
echo "
user ${USERNAME[0]} ${PASSWORD[0]}
passiv
binary
get ${FILENAME[0]}
bye"|$FTP -v -n ${MIKROTIK[0]}
echo "Put leases to ${MIKROTIK[1]} Mikrotik Router"
echo "
user ${USERNAME[1]} ${PASSWORD[1]}
passiv
binary
put ${FILENAME[1]}
bye"|$FTP -v -n ${MIKROTIK[1]}
echo "Move downloaded file and change it permissions"
$MV $WORKDIR/${FILENAME[0]} ${DESTPATH[0]}/$TODAY-${FILENAME[0]}
$CHMOD 600 ${DESTPATH[0]}/$TODAY-${FILENAME[0]}
echo "Done."
cd $PDIR

Dodanie wpisu cron`a

crontab -u root -e

01 03 * * * /root/gpleases

Na routerze BACKUP w scheduler`ze utworzony zostaje wpis który sprawdza czy upload`owano plik oraz czy któryś z interfejsów VRRP nie jest w trybie master a następnie usuwa statyczne dzierżawy i wykonuje utworzony wcześniej na routerze MASTER skrypt dodający nowe

/system scheduler add name=leasesimport start-time=03:02:00 interval=1d start-date=Jan/01/1970 on-event="\
if ([len [/file find name=auto-leases.rsc]] > 0) do={ \
  if ([/interface vrrp print count-only where running=yes] = 0) do={ \
    /ip dhcp-server lease remove [find where dynamic=no]; \
    /import file-name=auto-leases.rsc; \
    /file remove auto-leases.rsc; \
  } \
}"

gotowe.