diff --git a/docs/images/network/mikrotik-hnat_1.png b/docs/images/network/mikrotik-hnat_1.png new file mode 100644 index 0000000..9bcc9f7 Binary files /dev/null and b/docs/images/network/mikrotik-hnat_1.png differ diff --git a/docs/images/network/mikrotik-hnat_2.png b/docs/images/network/mikrotik-hnat_2.png new file mode 100644 index 0000000..6290e9c Binary files /dev/null and b/docs/images/network/mikrotik-hnat_2.png differ diff --git a/docs/images/network/mikrotik-hnat_3.png b/docs/images/network/mikrotik-hnat_3.png new file mode 100644 index 0000000..8b8129b Binary files /dev/null and b/docs/images/network/mikrotik-hnat_3.png differ diff --git a/docs/images/network/mikrotik-upnp_1.png b/docs/images/network/mikrotik-upnp_1.png new file mode 100644 index 0000000..f4b1276 Binary files /dev/null and b/docs/images/network/mikrotik-upnp_1.png differ diff --git a/docs/images/network/mikrotik-upnp_2.png b/docs/images/network/mikrotik-upnp_2.png new file mode 100644 index 0000000..395e86a Binary files /dev/null and b/docs/images/network/mikrotik-upnp_2.png differ diff --git a/docs/network/mikrotik/4g.md b/docs/network/mikrotik/4g.md new file mode 100644 index 0000000..f6d08d2 --- /dev/null +++ b/docs/network/mikrotik/4g.md @@ -0,0 +1,77 @@ +# Настройка работы с 4G модемом оператора + +Открыть окно терминала в **winbox** + +```plaintext +/system resource usb print +/system serial-terminal usb1 channel=1 +``` + +Соединяемся на COM-порт модема и вводим там команду. Она нужна для включения локального эха, чтобы вы видели что вы набираете в терминале. + +```plaintext +ATE1 +``` +Далее вводим команду, для того чтобы модем не сыпал в порт *RSSI (Received Signal Strength Indication)* и прочим. + +```plaintext +AT^CURC=0 +``` + +И наконец вводим команду смены композиции модема. ТЕ режим «без переключения». Т.е. в данном режиме первичная композиция модема (initial mode) отключена, т.е. задана как `FF - Dummy` (отсутствие переключения), а вторичная композиция (normal mode) задана как `10,12,16,A2`: +- 10 - модем +- 12 - PC UI +- 16 - RNDIS (у нас его нет) +- A2 - TF Card Reader. + +```plaintext +AT^SETPORT="FF;10,12,16,A2" +``` + +После чего вынимаем модем из Mikrotik и вставляем его по новой. Модем будет находиться уже в рабочей композиции, поэтому соединение `ppp-out1`, когда он зарегистрируется в сети оператора должно подняться у вас в Mikrotik автоматически + +Далее включаем 4G модем и отключаем режим CD-Rom: + +```plaintext +AT^SETPORT="A1;10,12,13"OK +``` + +После чего выходим, нажав `Ctrl-A` и `Q` +``` +Ctrl-A + +[Q - quit connection] [B - send break] [A - send Ctrl-A prefix] [R - autoconfigure rate] +``` + +Теперь можете активировать интерфейс и работать с ним + +## Настройка Mikrotik на 4G Megafon + +Подключаем ПК к третьему порту **Mikrotik**(вообще можно использовать любой, кроме первого), переворачиваем устройство и видим на наклейке со штрих-кодом диапазон mac адресов, последний относится к пятому порту, вводим его в окно подключения **winbox**, либо используем как аргумент mactelnet. Пользователь admin, пароль отсутствует. Так же можно подучиться через поиск neighbors в окне подключения **winbox** + +Появится предложение: сохранить базовую конфигурацию, либо обнулить устройство. Выбираем `Remove Configuration`. Устройство перезагрузится. + +Далее проверяем что версия routerboard последняя, для этого идем в system → routerboard. Скачать последнюю версию можно по ссылке: [https://mikrotik.com/download](https://mikrotik.com/download) + +Закачиваем последнюю версию на роутер, для этого открываем files и перетаскиваем сам файл прошивки + +Далее идем в system → routerboard, нажимаем upgrade. Соглашаемся с обновлением. идем в system-reboot + +После перезагрузки проверяем версию системы + +Теперь, заливаем [конфигурашку](https://cloud.thest1tch.ru/s/tXTqRCwnGP9trRZ). В окне files выделяем скопированный файл конфигурации и жмем restore. Вводим пароль от нашего роутера + +Готово + +--- + +Список используемых ресурсов: + +- список команд AT [https://3ginfo.ru/page53.html](https://3ginfo.ru/page53.html) и [http://4pda.ru/forum/lofiversion/index.php?t582284.html](https://4pda.ru/forum/lofiversion/index.php?t582284.html) +- перепрошивка модема [https://mr-allen.com/mikrotik/e3372s-lte-modem](https://mr-allen.com/mikrotik/e3372s-lte-modem) и [https://tugibaev.ru/2015/03/megafon-m150-2-mikrotik/](https://tugibaev.ru/2015/03/megafon-m150-2-mikrotik/) +- [https://buywifi.ru/blog/mikrotik/nastroyka-mikrotik-dlya-raboty-s-3g-lte-modemom/](https://buywifi.ru/blog/mikrotik/nastroyka-mikrotik-dlya-raboty-s-3g-lte-modemom/) +- [http://valec.ru/?p=316](http://valec.ru/?p=316) +- [https://dev.turn-guild.ru/?p=251](https://dev.turn-guild.ru/?p=251) +- [https://habr.com/ru/post/188424/](https://habr.com/ru/post/188424/) +- [https://trustoff.ru/page/45/vvodim-at-komandy-v-modem/](https://trustoff.ru/page/45/vvodim-at-komandy-v-modem/) +- [https://www.technotrade.com.ua/Articles/mikrotik\_3g-modem\_setup.php](https://www.technotrade.com.ua/Articles/mikrotik_3g-modem_setup.php) \ No newline at end of file diff --git a/docs/network/mikrotik/chr.md b/docs/network/mikrotik/chr.md new file mode 100644 index 0000000..3135cc8 --- /dev/null +++ b/docs/network/mikrotik/chr.md @@ -0,0 +1,14 @@ +# Cloud Hosted Router + +У MikroTik CHR статический IP + +```plaintext +/ip address add interface=ether1 address=10.103.0.111 netmask=255.255.255.0 +/ip route add gateway=10.103.0.254 dst-address=0.0.0.0/0 distance=1 +``` + +У MikroTik CHR автоматический IP(dhcp) + +```plaintext +/ip dhcp-client add disabled=no interface=ether1 +``` \ No newline at end of file diff --git a/docs/network/mikrotik/dhcp.md b/docs/network/mikrotik/dhcp.md new file mode 100644 index 0000000..14bc279 --- /dev/null +++ b/docs/network/mikrotik/dhcp.md @@ -0,0 +1,92 @@ +# DHCP + +## DHCP Option + +Это может понадобиться, когда необходимо, чтобы один из компьютеров в локальной сети получил нестандартный адрес DNS-Сервера, шлюза, NTP-Сервера и.т.д.. Или например, когда требуется для определенной сети установить нестандартную DHCP-опцию. + +[Список RFC DHCP Options](https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml) + +## Создадим DHCP опцию для DNS-Сервера. + +```plaintext +/ip dhcp-server option +add code=6 name=AD_DC value="'192.168.5.10'" +``` + +Выведем активные подключения + +```plaintext +/ip dhcp-server lease print +``` + +Установим dhcp опцию для конкретного хоста + +```plaintext +/ip dhcp-server lease +set numbers=0 dhcp-option=AD_DC +``` + +## Настройка DNS-суффикса + +Клиенты Windows поддерживают только доменное имя, в то время как Linux/Mac поддерживает только функцию поиска домена. + +Windows, установка dhcp-опции для конкретной сети + +```plaintext +/ip dhcp-server network print +/ip dhcp-server network +set 0 domain=local.net +``` + +Linux | Windows, установка dhcp-опции для конкретного хоста + +```plaintext +/ip dhcp-server option +add code=119 name=Domain_Search value="'local.net'" | Linux +add code=15 name=Domain_Name value="'local.net'" | Windows +/ip dhcp-server lease print +/ip dhcp-server lease +set numbers=0 dhcp-option=Domain_Search +``` + +## Настройка выдачи статических маршрутов + +[IP Address to HEX](https://ncalculators.com/digital-computation/ip-address-hex-decimal-binary.htm) + +[Конвертор чисел HEX/BIN/DEC](https://lin.in.ua/tools/numconv.html) + +DHCP Classless Route с Option 249 и Option 121. + +## Option 249 + +**Дано:** + +- MASK = 24 = 0x18 +- DEST = 192.168.5.0 = C0A80500 +- GW = 192.168.6.1 = C0A80601 + +**Пример:** + +- `0x[MASK][DEST][GW]` + +**Итог:** + +- `0x18C0A80500C0A80601` + +##  Option 121 + +( `0.0.0.0/0 [00] gw 192.168.6.1 [C0A80601]`) - необходимо добавить 00C0A80601 + +Должно получиться: + +  `0x18C0A80500C0A8060100C0A80601` + + CLI: + +```plaintext +/ip dhcp-server option add name=opt_249 code=249 value=0x18C0A80500C0A80601 +/ip dhcp-server option add name=opt_121 code=121 value=0x18C0A80500C0A8060100C0A80601 +/ip dhcp-server option sets add name=sets_249+121 options=opt_249,opt_121 +/ip dhcp-server network print +/ip dhcp-server network set dhcp-option-set=sets_249+121 numbers=0 +``` \ No newline at end of file diff --git a/docs/network/mikrotik/hairpin-nat.md b/docs/network/mikrotik/hairpin-nat.md new file mode 100644 index 0000000..8072580 --- /dev/null +++ b/docs/network/mikrotik/hairpin-nat.md @@ -0,0 +1,72 @@ +# Hairpin Nat + +Допустим нужно прокинуть 80 и 443 порт + +`192.168.100.0/24` - наша подсеть +`WAN_IP` - внешний IP-адрес +`192.168.100.5` - сервер, куда делаем проброс +``` +/ip firewall nat +add action=dst-nat chain=dstnat dst-address=WAN_IP dst-port=80 protocol=tcp to-addresses=192.168.100.5 +add action=masquerade chain=srcnat dst-address=192.168.100.5 dst-port=80 protocol=tcp src-address=192.168.100.0/24 +add action=dst-nat chain=dstnat dst-address=WAN_IP dst-port=443 protocol=tcp to-addresses=192.168.100.5 +add action=masquerade chain=srcnat dst-address=192.168.100.5 dst-port=443 protocol=tcp src-address=192.168.100.0/24 +``` + +## Подробности +Конфигурация нашей сети: + +- Вы имеете IP адрес `WAN_IP` на интерфейсе WAN вашего маршрутизатора +- Вы имеете IP адрес `192.168.100.1/24` на интерфейсе LAN вашего маршрутизатора. +- Вы имеете www-сервер с адресом `192.168.100.5` в LAN сегменте. +- Адрес вашего компьютера находится в диапазоне адресов LAN. Для примера пусть это будет `192.168.100.15` + +![](../../images/network/mikrotik-hnat_1.png) + +Чтобы опубликовать web-сервер на внешнем ресурсе, создается правило dst-nat: + +``` +/ip firewall nat add action=dst-nat chain=dstnat dst-address=WAN_IP dst-port=80 protocol=tcp to-addresses=192.168.100.5 +``` +**in-interface** не указан потому, что правило должно срабатывать при обращении на порт 80 адреса `WAN_IP` с любого интерфейса + +Вы это делаете и.. И у вас все замечательно работает снаружи сети (при обращении из Интернет), но обращение с вашего компьютера по адресу http://WAN_IP говорит «Нет ответа от сервера». Для того, чтобы понять, что же происходит, рисуем схему прохождения и преобразования пакета: +![](../../images/network/mikrotik-hnat_2.png) + +Теперь распишем что происходит на каждом этапе. +1. Компьютер с адреса `192.168.100.15` пытается установить соединение с адресом `WAN_IP` по `80 порту` и отправляет пакет на маршрутизатор. +1. На маршрутизаторе срабатывает правило `dst-nat`, в результате чего адрес назначения пакета меняется на `192.168.100.5`, и пакет отправляется на www-сервер `192.168.100.5`. +1. Узел `192.168.100.5` получив пакет с адресом источника `192.168.100.15`, определяет, что они оба находятся в одной локальной сети и отвечает ему напрямую, минуя маршрутизатор. + +**Проблема** +Компьютер, отправив пакет на адрес WAN_IP, вдруг получает ответ с адреса 192.168.100.5. Естественно этот пакет он игнорирует и соединение не устанавливается. + +**Решение** +Чтобы решить эту проблему, необходимо, чтобы www-сервер получил пакет у которого адрес источника будет равен адресу маршрутизатора. Добавляем к нашей конфигурации правило, которое заменит адрес отправителя, адресом интерфейса маршрутизатора и получаем следующую конфигурацию: + +``` +/ip firewall nat +add action=dst-nat chain=dstnat dst-address=1.1.1.1 dst-port=80 protocol=tcp to-addresses=192.168.0.10 +add action=masquerade chain=srcnat dst-address=192.168.0.10 dst-port=80 protocol=tcp src-address=192.168.0.0/24 +``` +Теперь у нас из конфигурация работает правильно. Схема для понимания: +![](../../images/network/mikrotik-hnat_3.png) + +**Работа схемы** +1. Компьютер с адреса `192.168.100.15` пытается установить соединение с адресом WAN_IP по 80 порту и отправляет пакет на маршрутизатор. +1. На маршрутизаторе срабатывает правило `dst-nat`, в результате чего адрес назначения пакета меняется на `192.168.100.5` и правило `src-nat`, где адрес источника пакета меняется на адрес интерфейса маршрутизатора (`192.168.100.1`). После чего пакет отправляется на www-сервер `192.168.100.5`. +1. Узел `192.168.100.5` получив пакет с адресом источника `192.168.100.1` (адрес маршрутизатора), определяет, что они оба находятся в одной локальной сети и отвечает ему. В результате чего пакет попадает на маршрутизатор +1. Connection Tracker маршрутизатора получив такой пакет выполняет обратное преобразование адресов. Компьютер получает ожидаемый ответ с адреса `WAN_IP` + +Вот такая схема трансляции адресов и является Hairpin NAT. + +Нужно отметить что у схемы есть недостаток. Заключается он в том, что публикуемый сервер будет получать запросы от хостов локальной сети с адреса маршрутизатора. Что не всегда хорошо. Например, если Вы так опубликуете прозрачный proxy-сервер, вряд ли у вас получится собрать нормальную статистику. + +Альтернативой такой схемы могут служить. + +Вынос публикуемых, или вообще всех серверов в отдельную подсеть. +Использование так называемого **split-dns**. Когда компьютер находясь снаружи сети на запрос www.mydomain.com получит адрес `WAN_IP`, а находясь внутри сети на этот же запрос получит адрес `192.168.100.5`. + +--- +[Использованы материалы сайта](https://housecomputer.ru/devices/switch/mikrotik/Setting_up_NAT_-_hairpin/Setting_up_NAT_-_hairpin.html){ .md-button .md-button--primary } + diff --git a/docs/network/mikrotik/split-dns.md b/docs/network/mikrotik/split-dns.md new file mode 100644 index 0000000..7fd51e9 --- /dev/null +++ b/docs/network/mikrotik/split-dns.md @@ -0,0 +1,46 @@ +# Domain Overrides (Split-DNS) + +Представим себе ваш MikroTik выступает в роли маршрутизатора удалённого филиала. На нём поднимается VPN до центрального филиала прописываются маршруты и прочее. У вас доменная авторизация все компьютеры в домене, естественно хорошей практикой на компьютерах прописать DNS сервера который обслуживают Active Directory службы. Но в таком случае если туннель по какой-то причине упадёт ваш филиал останется без интернета, а ведь интернета может не быть в центральном филиале. Да перестанут работать различные шары и прочее, конечно для этих целей существует как минимум RODC, но навсегда есть возможность установить подобный сервис в филиале ввиду множества различных проблем. + +На практике: + +- MikroTik: 192.168.5.1 - DNS-Сервер для локальной сети; +- Samba AD DC: 192.168.5.10 - DNS-Сервер обслуживающий зону local.net. + +Необходимо, чтобы все запросы, связанные с зоной local.net, обслуживались DNS-Сервером 192.168.5.10. + +В pfSense такая возможность присутствует из коробки и делается немного проще чем в MikroTik. + +!!! note + Начиная с версии **RouterOS v6.47**, появилась возможность пересылки запросов с помощью встроенного DNS-сервера. Раньше это делалось костылями через L7. + +## DNS Settings + +Для поддержки Domain Overrides необходимо, чтобы на DNS-Сервере была включена опция **Allow Remote Requests**. + +```plaintext +/ip dns +set allow-remote-requests=yes +``` + +## Настройка Firewall + +Разрешаем работу DNS-Сервера на всех интерфейсах, кроме WAN. + +```plaintext +/ip firewall filter +add action=accept chain=input protocol=udp dst-port=53 in-interface=!wan +add action=drop chain=input in-interface=wan +``` + +## Domain Overrides + +Делается это в меню DNS через управление статическими записями. Обязательным условием для работы является отключенный DoH. + +```plaintext +/ip dns static add forward-to=192.168.5.10 regexp="((^)|(\.))local.net$" type=FWD +- .*\\.local\\.net +- ^.+(local).net +- ^.+local.net +- ".*local\\.net" +``` \ No newline at end of file diff --git a/docs/network/mikrotik/upnp.md b/docs/network/mikrotik/upnp.md new file mode 100644 index 0000000..4edcd96 --- /dev/null +++ b/docs/network/mikrotik/upnp.md @@ -0,0 +1,34 @@ +# UPnP + +Именно эта штука и отвечает за то, что нужные порты будут открываться автоматически по запросу программы. Настройка достаточно простая и заключается всего нескольких нажатиях мышки. + +Подключаемся к нашему Mikrotik через Winbox и открываем необходимый раздел: + +**IP->UPnP** + +![](../../images/network/mikrotik-upnp_1.png) + +Здесь достаточно поставить галочку Enable, но после этого все-равно ничего работать не будет. А все потому, что надо микротику сказать, что есть внешний интерфейс, а что внутренний. Для этого, в открытом ранее окошке находим кнопку **Interfaces** и нажимаем ее. + +Сейчас у нас ничего нет и окно пустое. Жмем синий плюсик и добавляем два интерфейса. + +![](../../images/network/mikrotik-upnp_2.png) + +**External** + + — это наш внешний интерфейс. У меня это pppoe-соединение с провайдером. У вас может быть так же, а если получаете по DHCP, то выбрать надо тот, где висит DHCP-клиент. + +**Internal** + + — это наш внутренний интерфейс. У меня часть портов объединена в bridge, поэтому я выбираю интерфейс bridge-home. Вы же выбираете свой. + +Теперь закрываем окошко настройки интерфейсов. Затем жмем Apply и Ok. Вот и все. После проделанных манипуляций порты на микротике будут открываться автоматически без вмешательства в его настройку. + +То же самое можно сделать не только в графической оболочке, но и через терминал. + +```plaintext +/ip upnp set enabled=yes show-dummy-rule=yes allow-disable-external-interface=no +/ip upnp interfaces add interface=pppoe-out1 type=external add interface=bridge-home type=internal +``` + +Проверить работает или нет довольно просто, для этого достаточно зайти в раздел IP->Firewall->NAT и посмотреть наличие новых правил с префиксом D. Если такие есть, значит все в порядке. \ No newline at end of file