Пример. SNAT для Mikrotik-Simple

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (13)

просмотр истории страницы
В стандартной схеме *Mikrotik-Simple* определено правило +masquerade+ для НАТа абонентов. При необходимости натить абонентом определенным адресом, необходимо выполнить следующее:
{toc:maxLevel=3}
{note}
Так как в командах используется оператор *place-before=*, их необходимо вводить непосредственно на консоль маршрутизатора.
{note}
h2. SNAT пул для всех абонентов
В стандартной схеме *Mikrotik-Simple* определено правило +masquerade+ для НАТа абонентов. При этом для НАТа будет использоваться единственный IP адрес находящийся на внешнем интерфейсе. Для НАТа с помощью пула 192.0.2.1-192.0.2.10 нужно добавить правило:
{code}
/ip firewall nat add place-before=[find comment=snat_abonents_masquerade] chain=crb_snat src-address-list=crb_gray_net dst-address-list=!crb_gray_net action=same to-addresses=192.0.2.1-192.0.2.10 same-not-by-dst=yes comment=snat_abonents_same
{code}
Команда добавит правил SNAT перед стандартным правилом маскарада.
{info}
Для верной работы маршрутизации и обеспечения диагностики сети следует добавить адреса 192.0.2.1-192.0.2.10 на внешний интерфейс маршрутизатора.
{info}

h2. SNAT по подсетям
Разделите абонентов на равные подсети с отдельным НАТ адресом для каждой. В примере сеть 198.51.100.0/24 будет скрыта за адресом 192.0.2.1
# Добавьте правило НАТ. Команда добавит правил SNAT перед стандартным правилом маскарада. Поиск идёт по комментарию *snat_abonents_masquerade*. Вы можете дублировать команду с разными IP адресами.
{code}
/ip firewall nat add action=src-nat chain=crb_snat comment=snat_abonents_192.0.2.1 dst-address-list=!crb_gray_net src-address-list=crb_snat_192.0.2.1 to-addresses=192.0.2.1 place-before=[find comment=snat_abonents_masquerade]
{code}
# Добавьте адрес листы с подсетями:
{code}
/ip firewall address-list add list=crb_snat_192.0.2.1 address=198.51.100.0/24 comment=192.0.2.1_crb_snat
{code}

h2. SNAT для группы абонентов
При необходимости НАТить абонентом определенным адресом, необходимо выполнить следующее:

# Добавить правило НАТа на Mikrotik.
# Переопределить функции +user_del+ и +user_add+ в session файле в папке ubin
# Указать требуемый SNAT адрес в учетной записи абонента

Для примера, пусть у нас на WAN интерфейсе будут заданы адреса 10.17.2.1 и 10.17.1.1 и определенных абонентов следует натить адресом 10.17.1.1
Для примера определенных абонентов следует натить адресом 192.0.2.1

h14. Добавление правил на Микротик
Данные команды выполняют следующее:
# Удаление стандартного правила маскарда из схемы.
{info}Это необходимо, так как абоненты должны быть и в crb_gray_net и в crb_snat_10.17.1.1 листах, а цепочки применяются каскадно, следовательно если masquerade поставить выше src-nat, будет выполняться masquerade. Позже, оно будет добавлено последним.{info}
# Добавление правила SNAT
# Добавление правила masquerade для всех, кому не назначен определенный SNAT
Команда добавит правил SNAT перед стандартным правилом маскарада. Поиск идёт по комментарию *snat_abonents_masquerade*. Вы можете дублировать команду с разными IP адресами.
{code}
/ip firewall nat add action=src-nat chain=crb_snat comment=snat_abonents_192.0.2.1 dst-address-list=!crb_gray_net src-address-list=crb_snat_192.0.2.1 to-addresses=192.0.2.1 place-before=[find comment=snat_abonents_masquerade]
{code}

{code}/ip firewall nat remove [/ip firewall nat find comment=snat_abonents_masquerade]
/ip firewall nat add action=src-nat chain=crb_snat comment=snat_abonents_10.17.1.1 dst-address-list=!crb_gray_net log=yes log-prefix=nat src-address-list=crb_snat_10.17.1.1 to-addresses=10.17.1.1
/ip firewall nat add action=masquerade chain=crb_snat comment=snat_abonents_masquerade dst-address-list=!crb_gray_net log=yes log-prefix=nat src-address-list=crb_gray_net{code}
Если же на интерфейсе у Вас более двух адресов и Вам требуется настроить правило SNAT для каждого, отредактируйте вторую команду подменив ip-адреса в comment, src-address-list и to-addresses. Выполните их последовательно до последней команды, которая добавит masquerade.
h14. Переопределение функций скрипта событий
Следующее содержимое запишите в файл session в папке ubin OSS директории нужного НАСа, подробней данный процесс описан в [соответствующей статье|Пользовательская схема] статье|Этап 4, 5. Тюнинг Стандартной схемы под требования провайдера или разработка custom схемы]

{code}#!/bin/bash
}{code}

h14. Редактирование учетной записи
Рассмотрено в статье [CarbonBilling:Учетная запись. Создание и изменение.]
h4. Массовое назначение SNAT адреса
Для массового назначения SNAT адреса воспользуйтесь [API|API REST v2.0]. Команда назначит абонентам с IP сети 198.51.100.0/24 SNAT адрес 192.0.2.1
{code}
sqlexec "set list on; select u.id from users u where uf_ip2string(u.ip) like '198.51.100.%'" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"snatip":"192.0.2.1"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
{code}