17 октября 2012 г.

Mikrotik и BeeLine

У моего старого домашнего провайдера начались проблемы. Причем эти проблемы приобрели регулярность. Решил попробовать домашний итернет от пчелайна.
Из-за особенностей организации сети пчелайна и фич микротика, подружить их между собой достаточно тяжело. Добрые люди написали толковый мануал, огромно спасибо им за это. Но, как обычно, в жизни не все так как в мануале :) Учитывая, что старый провайдер пока от микротика не отключается, провод пчелайна был засунут в отключенный от общего свича интерфейс (ether5), появились маленькие тонкости.

1. Сначала подключитесь виндовым клиентом напрямую к сети  пчелок и запишите ip адреса DNS и VPN серверов пчелайна.

2. Почему то пчелайн DHCP сервер не отдает микротиковскому клиенту маршрут по умолчанию. Виндовому клиенту дает, микротику не дает. Поэтому приходится прописывать маршруты к сетям где находятся DNS и VPN серверам руками. Да и вообще, какой то странный их DHCP, выдал кучу всяких маршрутов, кроме вышеуказанных! Ну и по поводу его странности, см. следующий пункт.

3. Пчелайн редкосные бяки, их DHCP сервер выдает вот такой вот маршрут:
#      DST-ADDRESS  PREF-SRC  GATEWAY    DISTANCE
1 ADS  10.0.0.0/8             10.89.48.1 1
У моего старого провайдера внутренняя сеть тоже 10, но с маской /16. Т.е. старый провайдер честно дает маршрут на часть сети. Благо там pppoe подключение и можно не получать IP на интерфейс. Но пчелайн своим чудо маршрутом, просто заставил меня отказаться от использования внутренней сети старого провайдера. А там есть разные вкусности.

4. Вводить руками скрипт из мануала, занятие не для слабонервных. Поэтому, для тех кто пользуется winbox, привожу скрипты в нормальном виде.

corbina-l2tp_refresh
:local interface "BeeLine-l2tp"
:local vpnserver "tp.internet.beeline.ru"
:log debug message="Hard resolv script run"
/ip dns cache flush
:local "current-ip" [:resolve $vpnserver]
:local "old-ip" [/interface l2tp-client get [/interface l2tp-client find name="$interface"] connect-to]
:if ($"current-ip" != $"old-ip") do= {
:log info "VPN Server changed IP address from $"old-ip" to $"current-ip""
/interface l2tp-client set [/interface l2tp-client find name="$interface"] connect-to=$"current-ip"
}


corbina-l2tp_soft_refresh
:local interface "BeeLine-l2tp"
:local vpnserver "tp.internet.beeline.ru"
#:log debug message="Soft resolv script run"
:if ([/interface l2tp-client get $interface running] = false) do={
 :log info message="VPN down. Refreshing"
 /ip dns cache flush
 :local "current-ip" [:resolve $vpnserver]
 :local "old-ip" [/interface l2tp-client get [/interface l2tp-client find name="$interface"] connect-to]
 :if ($"current-ip" != $"old-ip") do= {
 :log info "VPN Server changed IP address from $"old-ip" to $"current-ip""
 /interface l2tp-client set [/interface l2tp-client find name="$interface"] connect-to=$"current-ip"
 }
}

Разумеется вместо BeeLine-l2tp вы подставите свое имя l2tp интерфейса.

З.Ы. Очень понравились возможности микротика в части управления чипа свича! Для начала сформировал два интерфейса в отдельный свитч (смотрите параметр Master Port на интерфейсе). В один воткнул шнур от пчелок, в другой шнур идущий на кухню. Таким образом смог подключить ноут на прямую в сеть пчелок. Записал все необходимые параметры, вернул интерфейс в старый свич. Если бы этой возможности не было, пришлось бы на табуретке сидеть в коридоре :)

8 комментариев:

  1. Жесть! И зачем нужны такие мучения с какой-то никому неведомой железкой? Интернета в Москве - ешь не хочу. Любого. Хоть AS на дом прокинут, было бы желание.

    да любой домашний пров уровня акадо даст честный Ethernet без вяких pppoe да vpn, с логинами и паролями + ip выделенный за смехотворную цену. Кому это надо сейчас, хотелось бы знать?

    ОтветитьУдалить
  2. Ага, а за бугром еще и оптику домой заводят, и гигабитные интернеты гугл кидает к порогу.
    Только вот одна беда - "последняя миля" называется. В моем доме нет провайдера, который бы мне домой оптику кинул или гигабит на интерфейс. И о ужас! они все либо pppoe, либо еще какой нибудь другой вид vpn.
    А с акадо, ну это... я лучше микротик настрою, чем потом с акадо дело иметь буду. Ага, опыт общения с этим расчудесным провайдером уже есть.
    Если говорить про выбор данной неведомой зверушки, то могу сказать, что это у нас они неведомы, а за бугром очень даже популярны :) Ну и возможности, которые эта железка за ее цену представляет, просто феноменальны, по сравнению с другими, широко известными брендами. Хотя да, микротик не рассчитан на домохозяек.

    ОтветитьУдалить
  3. И да, кто сказал, что я мучался? Работы по настройке было минут на 10, включая чтение мануалов. После этого у меня два рабочих провайдера, с распределение трафика по сервисам и членам семьи через разных провайдеров :)

    ОтветитьУдалить
  4. http://hushome.com/vb/threads/46520-shpargalka-pro-mikrotik-i-domashnijj-internet-bilajjn

    ОтветитьУдалить
  5. И тебе спасибо добрый человек. Не знал что он маршрут по умолчанию специально игнорирует.

    ОтветитьУдалить
  6. Ну да. RFC3442: "If the DHCP server returns both a Classless Static Routes option and
    a Router option, the DHCP client MUST ignore the Router option".
    А Билайн как раз шлет и шлюз (Router) и маршрут в 10.0.0.0/8 (Classless route).
    Винде вот пофиг на RFC))

    ОтветитьУдалить
  7. настраивал вот так...все работает кроме локальных ресурсов, не подскажете как поправить?
    1. Сетевой кабель втыкаем в компьютер, не подключаемся к интернету
    2. В командной строке nslookup tp.internet.beeline.ru(получим несколько адресов, запоминаем локальные)
    3. Подключаем устройство, запускаем winbox
    4. Скидываем настройки в терминале командной system reset-configuration
    5. Заходим через winbox и выбираем Remove configuration
    6. Ip -> dhcp-client -> создаем нового клиента: interface ether1, выставляем галочки на Use Peer DNS, Use Peer NTP и Add Default Route, жмем ОК. Теперь мы получили локальный IP
    7. На вкладке Status у DHCP-Client смотрим адреса DNS, и прописываем их в ip-dns и ставим галку Allow Remote Request(если не прописались автоматически)
    8. На вкладке Interface создаем новый интерфейс L2tp. На вкладке General выставляем MTU и MRU 1420, на Dial Out в ServerAddress указываем ip полученный на 2 шаге, в user и password указываем данные полученные от провайдера, Profile выставляем default, ставим галку add default Route. Жмем ОК, Status должен стать connected

    ОтветитьУдалить
  8. Пчелайн, как Вы изволили выразиться, вовсе не заставляет вас отказываться ни от чего:
    1. Вообще, при маршрутизации по идее используется более узкий маршрут, потом более широкий, таким образом если будет match в вашей /16 сети, то победит именно маршрут туда.
    2. в роутерОС есть возможность навесить метрику на маршруты получаемые из l2tp
    3. Там же есть полиси роутинг если ничего не помогло из предыдущего.
    Но по иде надо остановиться на пункте 1 и добиться чтобы всё работало именно так как надо.

    ОтветитьУдалить