Перейти к содержанию

▍Установка MikroTik RouterOS на VDS

Введение

Чтобы нам развернуть CHR подойдёт любая VDS с уже предустановленной OS, для нас это не особо важно, т.к. по итогу образ затрёт старую систему. В данном примере будет использоваться свежая установленная CentOS 9 и образ CHR 7.13.2, т.к. на новых версиях сталкивался с ошибкой XZ-compressed data is corrupt после перезагрузки. По итогу остановился на установке этой версии, а далее уже через WinBox обновился до последней актуальной версии CHR.

XZ-compressed data is corrupt

Установка образа RouterOS поверх CentOS 9

Тут всё просто если это чистый базовый образ ОС, то устанавливаем следующие пакеты:

root@vds:~# yum install wget unzip

Теперь можно выполнить весь этот скрипт в консоли сервера, не забудьте изменить значения в переменных "name" и "password" на те значения логина и пароль, с которыми вы далее будете подключаться через WinBox к роутеру:

wget https://download.mikrotik.com/routeros/7.13.2/chr-7.13.2.img.zip -O chr.img.zip  && \
gunzip -c chr.img.zip > chr.img  && \
mount -o loop,offset=33571840 chr.img /mnt && \
ADDRESS=`ip addr show ens3 | grep global | cut -d' ' -f 6 | head -n 1` && \
GATEWAY=`ip route list | grep default | cut -d' ' -f 3` && \
echo "/ip address add address=$ADDRESS interface=[/interface ethernet find where name=ether1]
/ip route add gateway=$GATEWAY
/ip service disable telnet
/user set 0 name=USERNAME password=PASSWORD
 " > /mnt/rw/autorun.scr && \
umount /mnt && \
echo u > /proc/sysrq-trigger && \
dd if=chr.img bs=1024 of=/dev/vda && \
echo "sync disk" && \
echo s > /proc/sysrq-trigger && \
echo "Sleep 5 seconds" && \
sleep 5 && \
echo "Ok, reboot" && \
echo b > /proc/sysrq-trigger

Примечание: Также, возможно, потребуется поменять имя интерфейса в "ip addr show ens3", актуальное имя можно узнать командой ip a:

Interface

В зависимости от версии chr-7..img число в **offset=33571840* может меняться, чтобы его узнать потребуется выполнить следующие действия:

root@vds:~# fdisk -l chr.img
Disk chr.img: 128 MiB, 134217728 bytes, 262144 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start    End Sectors Size Id Type
chr.img1   *       34  65569   65536  32M 83 Linux
chr.img2        65570 258047  192478  94M 83 Linux

Видим что второй раздел начинается с 65570 (столбец Start), теперь умножим данное число на 512 (количество байт сектора) получим - 33571840, которое будет нужным нам значением в смещении (offset).

После последней команды "echo b > /proc/sysrq-trigger" сервер должен перезагрузиться и если смотреть в консоль VNC в панели хостера, то должна будет появиться форма авторизации:

CHR Mikrotik Login

Если вы видите что-то похожее, то вы великолепны! Запускаем утилиту WinBox, вводим указанные ранее логин, пароль и IP сервера.

WinBox connect

Базовая настройка

Пример базового роутера с поддержкой Wireguard

/interface ethernet
set [ find default-name=ether1 ] disable-running-check=no
/interface wireguard
add listen-port=45678 mtu=1420 name=wireguard private-key=\
    "BeoTmy5w9mx2kID0O/giswibs4hev7ZQFZBqZmH6qRQ="
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/port
set 0 name=serial0
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface list member
add interface=ether1 list=WAN
/interface wireguard peers
add allowed-address=10.8.8.2/32,192.168.0.0/24 interface=wireguard name=\
    "home mikrotik" persistent-keepalive=10s public-key=\
    "UOy9bquzdwGHhY4rCKVamaV/n9wIZTkBfOXEOwCIgno="
/ip address
add address=$ADDRESS interface=ether1 network=$ADDRESS
add address=10.8.8.1/24 interface=wireguard network=10.8.8.0
/ip dhcp-client
add interface=ether1
/ip dns
set servers=8.8.8.8,8.8.4.4
/ip firewall address-list
add address=192.168.0.0/24 comment="Home Local" disabled=yes list=allow-ip
add address=Ваш_домашний_ip comment=Home list=allow-ip
/ip firewall filter
add action=accept chain=input comment=\
    "defconf: accept established,related,untracked" connection-state=\
    established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
    invalid
add action=accept chain=input comment="Allow IGMP" in-interface=ether1 \
    protocol=igmp
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment="Accept WireGuard" dst-port=45678 \
    in-interface=ether1 log=yes log-prefix=WG: protocol=udp
add action=accept chain=input comment="Accept Winbox connection from Home" \
    dst-port=8291 protocol=tcp src-address-list=allow-ip
add action=drop chain=input comment="defconf: drop all not coming from LAN"
add action=accept chain=forward comment="defconf: accept in ipsec policy" \
    ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" \
    ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
    connection-state=established,related disabled=yes hw-offload=yes
add action=accept chain=forward comment=\
    "defconf: accept established,related, untracked" connection-state=\
    established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \
    connection-state=invalid
add action=drop chain=forward comment=\
    "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
    connection-state=new in-interface-list=WAN
add action=log chain=output disabled=yes log=yes log-prefix=dns_flood \
    out-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat ipsec-policy=out,none out-interface-list=\
    WAN
/ip route
add
add gateway=$GATEWAY
add disabled=no distance=1 dst-address=192.168.0.0/24 gateway=wireguard routing-table=main scope=30 suppress-hw-offload=no target-scope=10
/ip service
set telnet disabled=yes
set ftp disabled=yes
set www disabled=yes
set ssh disabled=yes
set api disabled=yes
set api-ssl disabled=yes
/system note
set show-at-login=no
/tool bandwidth-server
set authenticate=no enabled=no
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN
/tool mac-server ping
set enabled=no

Все команды выше нужно скопировать (не забудьте поменять переменные $ADDRESS, $GATEWAY, address=Ваш_домашний_ip и ключи от wireguard) и вставить в терминал роутера:

WinBox connect

Генерация приватного и публичного ключа от wireguard

$ wg genkey | tee privatekey | wg pubkey > publickey

$ cat privatekey
ABYLZKUjdN3Nw7OXZCX/nAKep9D/uyPtKt6T35mx2nU=

$ cat publickey
xgIkg+pEeuzZHHjECeVmJ0cKBOxy7IBHz8tX2tS6pWc=

Полезные ссылки:

К началу