Биллинговая система Nodeny
13 Октября 2024, 12:20:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
  Начало Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Главная категория / Общий раздел / Re: Mikrotik и ip unnumbered : 27 Июня 2018, 12:14:37
Ппц... вот что значит нормальный? Он нормальный и так )))
В  циско на влан вешаешь ип и он сразу прописывается в роут.  На самом деле и тут можно также делать, и не только лишь все знают как )


Можно и так, как говориться Cisco like  Веселый Логика та же.


Код:
:local realgw;
:local gatwif;
:if ($leaseBound = 1) do={
       /log info "+++ Start ACCT for $leaseActIP";
          :if ([:put ($leaseActIP&255.255.255.0)]="193.112.164.0") do={:set $realgw "193.112.164.1";}
          :if ([:put ($leaseActIP&255.255.255.0)]="192.214.208.0") do={:set $realgw "192.214.208.1";}
          :set $gatwif [/ip dhcp-server get [/ip dhcp-server find name=$leaseServerName] interface];
          /log warn "GW: $realgw  GATWIF=$gatwif";

    :if ([:len [/ip address find where network=$leaseActIP]] >0)    do={
            /log error "New Real IP already exist $leaseActIP";
            /ip address remove [find where network=$leaseActIP];
            /ip address add address=$realgw network=$leaseActIP interface=$gatwif comment="Unnumbered $leaseActIP";
     } else={
             /log error "New real IP $leaseActIP added";
             /ip address add address=$realgw network=$leaseActIP interface=$gatwif comment="Unnumbered $leaseActIP";
     }
} else={
             /log warn "STOP $leaseActIP";
             /ip address remove [find where network=$leaseActIP];
}
2  Главная категория / Общий раздел / Re: Mikrotik и ip unnumbered : 26 Июня 2018, 16:31:18
Давно было дело, уже не помню почему так. Попробуйте усовершенствовать.
Сейчас присмотрелся. Да, можно наверное было бы сделать по другому. Прикол в том что дальше везде используется $dhcpip который как раз и получался методом перебора, хотя можно было тупо использовать $leaseActIP и этот цикл был бы нафиг не нужен.

Немного другая реализация с дополнительной проверкой существования роутинга.
Кстати, в версии ROS 6.40 и выше роутинг автоматически удаляется скриптом при окончании lease time или при ручном удалении из dhcp leases. Соответственно роутов ведущих в никуда не будет.
Так же возможна выдача IP из разных пулов GW определяется в зависимости от пула.

Код:
:local realgw;
:local gatwif;
:if ($leaseBound = 1) do={

        /log warn "START: $leaseActIP";
          :if ([:put ($leaseActIP&255.255.255.0)]="193.112.164.0") do={:set $realgw "193.112.164.1";}
          :if ([:put ($leaseActIP&255.255.255.0)]="192.214.208.0") do={:set $realgw "192.214.208.1";}
          :set $gatwif [/ip dhcp-server get [/ip dhcp-server find name=$leaseServerName] interface];
          /log warn "GW: $realgw  GATWIF=$gatwif";

    :if ([:len [/ip route find where dst-address=$leaseActIP."/32"]] >0)    do={
            /log error "New Real IP already added $leaseActIP";
            /ip route remove [find where dst-address=$leaseActIP."/32"];
            /ip route add distance=1 dst-address=$leaseActIP gateway=$gatwif pref-src=$realgw comment="Route: $leaseActIP TO: $gatwif";
     } else={
             /log error "New real IP $leaseActIP";
             /ip route add distance=1 dst-address=$leaseActIP gateway=$gatwif pref-src=$realgw comment="Route: $leaseActIP TO: $gatwif";
     }
} else= {
             /log warn "STOP $leaseActIP";
             /ip route remove [find where dst-address=$leaseActIP."/32"];
}
3  Главная категория / Общий раздел / Re: Mikrotik и ip unnumbered : 26 Июня 2018, 13:07:46
Для превращения роутера с RouterOS на борту в полноценный IPoE BRAS мне не хватает ip unnumbered.
Ну как бы аналог ip unnumbered как и в любом линуксе на микротике запилить довольно просто - добавляя соответствующие маршруты вручную. Так и делал раньше, пока мне это не надоело. Но потом, потратив определенную часть своей жизни на изучение гомноскриптов родилось вот такое решение:

Реальная сеть добавляется в networks обычным образом, и реальники начинают выдаваться при помощи связки dhcp+radius и все бы хорошо, но у клиента с реальником ничего не работает. Во-первых на всех влан интерфейсах необходимо переключить ARP  в режим proxy-arp. Во-вторых создадим бридж с названием lo и не будем в него добавлять никаких портов (это будет наш аналог localhost), присвоим этому интерфейсу ip адрес, который будет являться шлюзом для всех остальных клиентов, с реальными адресами, разбросанных по вланам (в примере это 193.55.37.1 - чей это адрес хз, придумал на ходу) В третьих на каждом из dhcp серверов (на микротик они поднимаются для каждого влана отдельно) в поле Lease Script добавляем следующий скрипт:
Код:
:local realgw "193.55.37.1";
:if ($leaseBound = 1) do={
/ip dhcp-server lease;
:foreach i in=[find dynamic=yes] do={
:local dhcpip
:set dhcpip [ get $i address ];
:if ($leaseActIP = $dhcpip) do={
                                 :if ([:put ($dhcpip&255.255.0.0)]="193.55.0.0") do={
                                  if ([:len [/ip route find where dst-address=$dhcpip."/32"]] >0)    do={                            
                           /log warn "New Real IP already added $dhcpip";
                                     } else={
                                                   /log error "New real IP $dhcpip";
                                                   /ip route add distance=1 dst-address=$dhcpip gateway=[/ip dhcp-server get [/ip dhcp-server find name=$leaseServerName] interface] pref-src=$realgw;
        }
        }
           }
     }
}
Все, после сохранения, маршруты начнут добавляться автоматически (если их конечно нет). В логе появляются красивые разноцветные записи ))) error и warn - это для красоты, можно заменить на info и все будет черно-белое как тюремная стена.
В строке скрипта
Цитировать
:if ([:put ($dhcpip&255.255.0.0)]="193.55.0.0") do={
Идет определение, реальник используется или нет, поэтому необходимо подогнать под свою реальную сеть.

Есть один недостаток у этого способа: Если вы решите переместить юзера, с уже прикрученым реальником и маршрутом в другой влан - то маршрут в новый влан не добавится - его сначала придется вручную убрать из старого.
Этот же способ подходит, если у вас несколько роутеров, а реальная сеть одна несчастная... и что же делать? Да все точно так же делается, только связываете между собой роутеры динамической маршрутизацией, чтобы каждый из роутеров в сети всегда знал где какой адрес находится. Я для этого использую iBGP (если нет своей AS можно использовать фейковое пространство)


По скрипту все понятно, опечатка очевидна (второй IF без ":" в начале).
Вот только не понял зачем сверять $leaseActIP со всеми выданными лизами. Ведь достаточно проверить существование роутинга. Объясните если не сложно?
Страниц: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!