forum.bitel.ru http://forum.bitel.ru/ |
|
Выдача двух ip на договор http://forum.bitel.ru/viewtopic.php?f=44&t=13503 |
Страница 1 из 1 |
Автор: | pafflootiy [ 26 ноя 2019, 14:24 ] |
Заголовок сообщения: | Выдача двух ip на договор |
Работаем по IPoE на MikroTik'ах. Планируем использовать 1:1 nat. Нужно, соответственно, использовать 2 адреса на договоре. Понятно что это проще организовать по средству дочерних сервисов. Но, как в конфигурации устройства вписать родительский и дочерний ip не могу вразумить. Ну т.е. сейчас всё просто. Есть 1 ip и для него вот такой конфиг на активацию: Код: sa.command.serv.create=/ip/firewall/filter/add\n=chain=forward\n=place-before=$prevIdList\n=src-mac-address=$mac\n=disabled=no\n=src-address=$ip\n=comment=!!$servId!! (само собой это лишь часть конфига, для наглядности)Какая переменная отвечает за родительский ip, а какая за дочерний? Как сделать так, что бы не выполнялся кусок конфига, отвечающий за организацию 1:1 nat, если нет дочернего сервиса? 1:1 nat = ![]() |
Автор: | pafflootiy [ 26 ноя 2019, 22:34 ] |
Заголовок сообщения: | Re: Выдача двух ip на договор |
Разобрался. По средству loopServ. |
Автор: | pafflootiy [ 27 ноя 2019, 19:54 ] |
Заголовок сообщения: | Re: Выдача двух ip на договор |
Чёт я окопался, и взгляд замылился. 2й день бьюсь с TerminalServiceActivator, новым режимом управления MikroTik'ом и с loopServ(). Код: # Порт подключения (если не указан, то используется порт из поля Хост/порт) Как только раскомменчиваю куски связанные с дочерними сервисами, inetAccess начинает болеть.sa.terminal.port=8728 # протокол подключения (telnet/ssh/tcp/mikrotik-api/mikrotik-api-ssl/shell) sa.terminal.protocol=mikrotik-api # Команда выхода (отключения) sa.terminal.exit= #Макросы дочерних сервисов white_ip=${ip()} white_sID=${servId()} #Создание договора #Поиск запрещающего правила фаервола, создание правила фаервола сервиса sa.terminal.serv.create.1=/ip/firewall/filter/print where comment=BLOCK sa.terminal.serv.create.2=/ip/firewall/filter/add chain=forward place-before=${mikrotikLastIds()} src-mac-address=${mac()} disabled=no src-address=${ip()} comment=bg${servId()} #Адрес-лист сервиса sa.terminal.serv.create.3=/ip/firewall/address-list/add address=${ip()} list=Allow comment=bg${servId()} #Адрес-лист дочернего сервиса sa.terminal.serv.create.4=/ip/firewall/address-list/add address=${loopServ('white_ip', false, '')} list=WhiteCostIP comment=bg${loopServ('white_sID', false, '')} #NAT дочернего сервиса sa.terminal.serv.create.5=/ip/firewall/nat/add chain=srcnat src-address=${ip()} action=netmap to-addresses=${loopServ('white_ip', false, '')} comment=bg${loopServ('white_sID', false, '')} sa.terminal.serv.create.6=/ip/firewall/nat/add chain=dstnat dst-address=${loopServ('white_ip', false, '')} action=netmap to-addresses=${ip()} comment=bg${loopServ('white_sID', false, '')} #Включение договора #Включение правила фаервола sa.terminal.serv.modify.enable.1=/ip/firewall/filter/print where comment=bg${servId()} sa.terminal.serv.modify.enable.2=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/filter/enable numbers=${mikrotikLastIds()} #Включение адрес-листа sa.terminal.serv.modify.enable.3=/ip/firewall/address-list/print where comment=bg${servId()} sa.terminal.serv.modify.enable.4=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/enable numbers=${mikrotikLastIds()} #Включение адрес-листа дочернего сервиса sa.terminal.serv.modify.enable.5=/ip/firewall/address-list/print where comment=bg${loopServ('white_sID', false, '')} sa.terminal.serv.modify.enable.6=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/enable numbers=${mikrotikLastIds()} #Включение NAT дочернего сервиса sa.terminal.serv.modify.enable.7=/ip/firewall/nat/print where comment=bg${loopServ('white_sID', false, '')} sa.terminal.serv.modify.enable.8=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/nat/enable numbers=${mikrotikLastIds()} #Выключение договора #Выключение правила фаервола sa.terminal.serv.modify.disable.1=/ip/firewall/filter/print where comment=bg${servId()} sa.terminal.serv.modify.disable.2=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/filter/disable numbers=${mikrotikLastIds()} #Выключение адрес-листа sa.terminal.serv.modify.disable.3=/ip/firewall/address-list/print where comment=bg${servId()} sa.terminal.serv.modify.disable.4=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/disable numbers=${mikrotikLastIds()} #Выключение адрес-листа дочернего сервиса sa.terminal.serv.modify.disable.5=/ip/firewall/address-list/print where comment=bg${loopServ('white_sID', false, '')} sa.terminal.serv.modify.disable.6=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/disable numbers=${mikrotikLastIds()} #Выключение NAT дочернего сервиса sa.terminal.serv.modify.disable.7=/ip/firewall/nat/print where comment=bg${loopServ('white_sID', false, '')} sa.terminal.serv.modify.disable.8=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/nat/disable numbers=${mikrotikLastIds()} #Удаление договора #Удаление правила фаервола sa.terminal.serv.cancel.1=/ip/firewall/filter/print where comment=bg${servId()} sa.terminal.serv.cancel.2=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/filter/remove numbers=${mikrotikLastIds()} #Удаление адрес-листа sa.terminal.serv.cancel.3=/ip/firewall/address-list/print where comment=bg${servId()} sa.terminal.serv.cancel.4=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/remove numbers=${mikrotikLastIds()} #Удаление очереди sa.terminal.serv.cancel.5=/queue/simple/print where comment=bg${servId()} sa.terminal.serv.cancel.6=${skipIfEmpty(mikrotikLastIds())}/queue/simple/remove numbers=${mikrotikLastIds()} #Удаление адрес-листа дочернего сервиса sa.terminal.serv.cancel.7=/ip/firewall/address-list/print where comment=bg${loopServ('white_sID', false, '')} sa.terminal.serv.cancel.8=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/remove numbers=${mikrotikLastIds()} #Удаление NAT дочернего сервиса sa.terminal.serv.cancel.9=/ip/firewall/nat/print where comment=bg${loopServ('white_sID', false, '')} sa.terminal.serv.cancel.10=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/nat/remove numbers=${mikrotikLastIds()} #Создание очереди для сервиса #1 MB/Sec sa.terminal.serv.inetOption.10.enable=/queue/simple/add max-limit=1M/1M target=${ip()} comment=bg${servId()} Сперва пишет Код: connection 11-27/16:26:11 ERROR [sa-p-13-t-28] AcknowledgeConsumer - Error on device:99 - me.legrange.mikrotik.MikrotikApiException: unknown parameter потом уходит в рекурсию создания сервиса, причём исключительно первые две команды выполняет(на создание правила фаерволла) и пишетru.bitel.bgbilling.common.BGException: Error on device:99 - me.legrange.mikrotik.MikrotikApiException: unknown parameter at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:516) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.java:248) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.notify(AsyncEventWorker.java:238) at ru.bitel.bgbilling.kernel.event.AcknowledgeConsumer.onMessage0(AcknowledgeConsumer.java:77) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:213) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:120) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:253) at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:154) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:157) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:87) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) Caused by: me.legrange.mikrotik.MikrotikApiException: unknown parameter at me.legrange.mikrotik.impl.ApiConnectionImpl$SyncListener.getResults(ApiConnectionImpl.java:476) at me.legrange.mikrotik.impl.ApiConnectionImpl$SyncListener.access$100(ApiConnectionImpl.java:430) at me.legrange.mikrotik.impl.ApiConnectionImpl.execute(ApiConnectionImpl.java:114) at me.legrange.mikrotik.impl.ApiConnectionImpl.execute(ApiConnectionImpl.java:72) at ru.bitel.bgbilling.kernel.network.mikrotik.MikrotikApiSession.doCommand(MikrotikApiSession.java:92) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession$MikrotikApiTerminalSession.sendCommandImpl(TerminalSession.java:678) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession.sendCommand(TerminalSession.java:140) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession.sendCommand(TerminalSession.java:133) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommand(TerminalServiceActivator.java:762) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:728) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:689) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.serviceCreate(TerminalServiceActivator.java:2213) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.serviceCreate(ServiceActivatorSet.java:386) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doCommand(ServiceActivatorDeviceWorker.java:576) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:512) ... 17 more Caused by: me.legrange.mikrotik.impl.ApiCommandException: unknown parameter at me.legrange.mikrotik.impl.ApiConnectionImpl$Processor.run(ApiConnectionImpl.java:267) Код: connection 11-27/16:27:11 ERROR [sa-p-13-t-25] EventWorker - Error on device:99 - me.legrange.mikrotik.MikrotikApiException: failure: already have such entry и продолжает клепать эти правила, даже если удалить сервис (принудительно или с переносом даты открытия на будущее число).ru.bitel.bgbilling.common.BGException: Error on device:99 - me.legrange.mikrotik.MikrotikApiException: failure: already have such entry at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:516) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.java:248) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:220) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:120) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:253) at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:154) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:157) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:87) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) Caused by: me.legrange.mikrotik.MikrotikApiException: failure: already have such entry at me.legrange.mikrotik.impl.ApiConnectionImpl$SyncListener.getResults(ApiConnectionImpl.java:476) at me.legrange.mikrotik.impl.ApiConnectionImpl$SyncListener.access$100(ApiConnectionImpl.java:430) at me.legrange.mikrotik.impl.ApiConnectionImpl.execute(ApiConnectionImpl.java:114) at me.legrange.mikrotik.impl.ApiConnectionImpl.execute(ApiConnectionImpl.java:72) at ru.bitel.bgbilling.kernel.network.mikrotik.MikrotikApiSession.doCommand(MikrotikApiSession.java:92) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession$MikrotikApiTerminalSession.sendCommandImpl(TerminalSession.java:678) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession.sendCommand(TerminalSession.java:140) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession.sendCommand(TerminalSession.java:133) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommand(TerminalServiceActivator.java:762) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:728) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:689) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.serviceCreate(TerminalServiceActivator.java:2213) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.serviceCreate(ServiceActivatorSet.java:386) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doCommand(ServiceActivatorDeviceWorker.java:576) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:512) ... 15 more Caused by: me.legrange.mikrotik.impl.ApiCommandException: failure: already have such entry at me.legrange.mikrotik.impl.ApiConnectionImpl$Processor.run(ApiConnectionImpl.java:267) Перезапуск аксесса не помогает. Помогает "удаление событий из очереди" в дереве устройств. |
Автор: | pafflootiy [ 27 ноя 2019, 22:19 ] |
Заголовок сообщения: | Re: Выдача двух ip на договор |
Я так понимаю, что в Код: sa.terminal.serv.create.1=/ip/firewall/filter/print where comment=BLOCK нужно впихнуть проверку на уникальность, но не могу вразумит, как это сделать.
sa.terminal.serv.create.2=/ip/firewall/filter/add chain=forward place-before=${mikrotikLastIds()} src-mac-address=${mac()} disabled=no src-address=${ip()} comment=bg${servId()} |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |