LINUX.ORG.RU
ФорумAdmin

Донастройка mikrotika в режиме pptp client

 


0

1

Возможно ли реализовать с помощью Mikrotik такую задачу:

  • Есть локальная сеть организации со шлюзом на FreeBSD (IPFW+NAT)
  • Есть удаленная локальная сеть с поднятым «виндовым» VPN-сервером (протокол PРTP).
  • Клиенты моей сети должны подключаться к неким серверам в удаленной локальной сети (для сведущих сообщу, что это АЦК-финансы и АЦК-госзаказ) через ВПН либо НТТР-прокси. Для ВПН-доступа им(клиентам) созданы учетные записи.

Нюанс в том,что при подключении второго(третьего и т.д.) впн-клиента в моей сети оба подключения зависают на стороне ВПН-сервера. Возобновить работу можно только принудительно завершив работу впн-подключений на удаленной стороне. Еще одно неудобство в том, что при установленном впн-подключении пропадает доступ к интернету и это огорчает пользователей. Внимание,вопрос: как организовать единственное и постоянное впн-подключение с помощью микротика, которое даст моим клиентам доступ к вышеуказанным серверам и не оборвет доступ к интернету.

Как пробовал реализовать:

Прописал статические маршруты на моем шлюзе (etc/rc.conf):

  • static_routes=«findep1 findep2 findep3»
  • route_findep1="-net 192.168.131.0/24 192.168.128.5"
  • route_findep2="-net 192.168.135.0/24 192.168.128.5"
  • route_findep3="-net 192.168.136.0/24 192.168.128.5"
  • где 192.168.128.5-адрес моего микротика (порт 2)
  • На микротике создал впн-подключение с помощью PPTP client, заполнив поля Connect To, User, Password.
  • Создал маршрут [IP]➙[Routes]➙[+]➙[Dst.Address:0.0.0.0/0; Gateway:192.168.128.1; Check gateway: ping; Distance: 1]➙[OK].

Подключение к ВПН-серверу устанавливается и работает до тех пор, пока не подключится виндовый ВПН-клиент. Пробовал при работающем подключении с микротика пинговать удаленную локальную сеть( хосты всех трех сетей), пинг есть ко всем трем сетям.

На компе в локалке добавлял стат маршруты вида: route -p ADD 192.168.131.0 MASK 255.255.255.0 192.168.128.5 METRIC 2 но это не принесло результата-удаленная сеть недоступна. Где и чего нужно еще докрутить?

Лучше схему нарисуй как это должно выглядеть.

я правильно понимаю?

lan1--freebsd(nat)--mikrotik--vpn--...--remote_lan2(192.168.136.0/24, 192.168.135.0/24, 192.168.131.0/24)
             |
      ISP(internet)                 

У тебя подключение к интернет что держит? микротик?

Удалённый роутер ничего не знает про твои удаленные сети, настрой нат на миротике. src_ip:ip_freebsd -> src-nat:ip_vpn_client_mikroik получится ракаовый дабл нат)

либо попросить настроить протокол маршрутизации через впн, но это договариваться с админами с той стороны, тогда обе стороны будут знать о подсетях

dzirtt ()

Нюанс в том,что при подключении второго(третьего и т.д.) впн-клиента в моей сети оба подключения зависают на стороне ВПН-сервера

сами же ответили на свой вопрос. на стороне ВПН-сервера

Подключение к ВПН-серверу устанавливается и работает до тех пор, пока не подключится виндовый ВПН-клиент

так и будет, если ВПН сервер не переваривает более одного подключения.

Т.е. проблема на стороне ВПН сервера. Или я что то не так понимаю, тогда разъясните плиз?

samson ★★ ()
Последнее исправление: samson (всего исправлений: 1)
Ответ на: комментарий от dzirtt

lan1(mikrotik)--freebsd(nat)----vpn--ISP(internet)...--remote_lan2(192.168.136.0/24, 192.168.135.0/24, 192.168.131.0/24)

Тогда скорее уж так, ведь микротик в моей локалке, и ИП у него из диапазона моей локалки

ingvar_tomsk ()
Ответ на: комментарий от samson

Я тоже вначале думал,что впн-сервер не дает множественные впн-подключения с одного ИП, но лично убедился на паре примеров в 2х других организациях, что это возможно. В одной конторе выход в инет организован на сервере 2008, просто включен НАТ на внешней сетевой: там удается с любого сетевого компа получить впн-доступ, не обрывая друг друга(но косяк с пропаданием инета присутствует) Во второй конторе более изящно:шлюз на UBUNTU, на ней же впн-клиент до нужного департамента. Пользователи в сети и знать не знают про впн-подключения и потерю инета. Но...утерян пароль от UBUNTU, подробности реализации такой схемы неизвестны, а приходящий админ категорически против восстановления пароля(пока жареный петух не клюнул)

ingvar_tomsk ()

[offtopic]PРTP - говно[/offtopic] и по возможности, лучше его не использовать.

при установленном впн-подключении пропадает доступ к интернету и это огорчает пользователей

на стороне клиента, убрать галочку «использовать маршрутом по умолчанию», но, если за vpn-сервером несколько подсетей - прийдётся смириться с пропаданием интернета

при подключении второго(третьего и т.д.) впн-клиента в моей сети оба подключения зависают

На всём маршруте, от твоего роутера и до шлюза, где тот vpn-сервер должно быть явно разрешено прохождение pptp (pptp-passthrough), помимо tcp/1721 еще и разрешить протокол GRE (у крупных провайдеров обычно разрешено)

На микротике создал впн-подключение с помощью PPTP client...

прописать на микротике маршруты к этим подсетям (а не 0.0.0.0/), на клиентских компах не нужно, и не забыть настроить snat/маскарадинг на микротике для vpn-подключения.

утерян пароль от UBUNTU

при наличии физического/vnc-доступа к консоли сервера - сменить пароль можно за несколько минут (если там какое-нибудь шифрование разделов - то немного дольше)

DiMoN ★★★ ()
Последнее исправление: DiMoN (всего исправлений: 2)
Ответ на: комментарий от DiMoN

[offtopic]PРTP - говно[/offtopic] и по возможности, лучше его не использовать.

Не в моей компетенции изменить

на стороне клиента, убрать галочку «использовать маршрутом по умолчанию», но, если за vpn-сервером несколько подсетей - прийдётся смириться с пропаданием интернета

Галочка снята

На всём маршруте, от твоего роутера и до шлюза, где тот vpn-сервер должно быть явно разрешено прохождение pptp (pptp-passthrough), помимо tcp/1721 еще и разрешить протокол GRE (у крупных провайдеров обычно разрешено)

Протокол разрешен

при наличии физического/vnc-доступа к консоли сервера - сменить пароль можно за несколько минут (если там какое-нибудь шифрование разделов - то немного дольше)

Боится админ что-то «поломать»-убеждать нет желания

прописать на микротике маршруты к этим подсетям (а не 0.0.0.0/), на клиентских компах не нужно, и не забыть настроить snat/маскарадинг на микротике для vpn-подключения.

snat/маскарадинг добавлен,попробую добавить маршруты

ingvar_tomsk ()
Ответ на: комментарий от samson

имеется ввиду что сам виндовый ВПН сервер себя так видет. Это следует из вашего описания проблемы

Видимо,так себя виндовый впн-сервер ведет с unix?

ingvar_tomsk ()
Ответ на: комментарий от ingvar_tomsk

так сервак дает подключиться несколькоим клиентам и при этом все работает как надо? Допустим, один клиент у вас дома, другой дома у коллеги.

samson ★★ ()
Ответ на: комментарий от ingvar_tomsk

Но два клиента из вашей сети одновременно работать не могут. И это проблема на стороне VPN сервера из удаленной сети. Так?

Значит микротик тут не причем.

Как вариант, поднимаете на микротик или шлюзе (FreeBSD) одно соединение. Запрещается на шлюзе клиентам из вашей сети поднимать впн. И маршрутизируете все что надо через это одно соединение.

Но поднять 2 все равно не получится, если это проблема на стороне сервера.

Вы же сейчас поднимаете одно соединение с микротика в вашей сети, второе с другого компа вашей сети и усе, приплыли... Так ведь? Если так, то причем тут микротик?

Сори за опечатки, с телефона пишу, т9 мать его...

samson ★★ ()
Последнее исправление: samson (всего исправлений: 1)

Подключение к ВПН-серверу устанавливается и работает до тех пор, пока не подключится виндовый ВПН-клиент.

Вот и запретите на шлюзе создавать подключения из локалки. Разрешите только микротику. И добавьте маршрут к впн сети через микротик.

Ну либо прям со шлюза и поднимите впн, тогда микротик не нужен.

samson ★★ ()
Ответ на: комментарий от ingvar_tomsk

Да,с разных АйПи без проблем, а виснут множественные впн-коннекты именно с одного АйПи

значит NAT отменяется и нужно чтоб удаленный сервак знал о твоей подсети. так или иначе нужен будет LAN-to-LAN VPN, и дело будет не в микротике, а в вендовом VPN.

погоди, а если там венда с PPTP - на кой черт ты вообще у себя пытаешься VPN глобально сделать? Настрой юзверям ярлычки на рабочий стол типа «зделать коннект» и разреши им юзать PPTP.

upcFrost ★★★★★ ()

Трансляция PPTP без ALG не возможна, в GRE нет поля Port, поэтому PAT не возможен, в Netfilter для обхода используют поле CallID в PPTP GRE, как замену Port. Реализация NAT во FreeBSD ранее не поддерживала PPTP ALG, судя по всему нечего не поменялось.

Не какой проблемы в Windows RAS конечно же нет.

ZANSWER ()
Ответ на: комментарий от upcFrost

погоди, а если там венда с PPTP - на кой черт ты вообще у себя пытаешься VPN глобально сделать? Настрой юзверям ярлычки на рабочий стол типа «зделать коннект» и разреши им юзать PPTP.

Мы сейчас говорим о виндовом ВПН-подключении? так это сделано,о проблемах я и писал выше

ingvar_tomsk ()
Ответ на: комментарий от ZANSWER

Трансляция PPTP без ALG не возможна, в GRE нет поля Port, поэтому PAT не возможен, в Netfilter для обхода используют поле CallID в PPTP GRE, как замену Port. Реализация NAT во FreeBSD ранее не поддерживала PPTP ALG, судя по всему нечего не поменялось.

Если в заголовке РРТР пакета нет секции Application Level Gateway, то как устанавливается хотя бы единственное впн-подключение через FreeBSD NAT?

ingvar_tomsk ()
Ответ на: комментарий от ingvar_tomsk

Application Level Gateway не является полем заголовка, это функция NAT маршрутизатора, которая позволяет ему выполнять трансляцию с помощью анализа дополнительных полей или использованию специальных программ помощников.

Давайте обсудим, что такое PPTP, под данной аббревиатурой скрывается два протокола, TCP и GRE (нестандартная версия заголовка), с трансляцией первого проблем вообще нет, с трансляцией второго очевидно есть. В случае, когда мы говорим о классическом PAT, без помощников, то при отсутствие поля Port, выполняется One-to-One NAT, иными словами, создаётся правило исключение, что GRE пакеты всегда принадлежат одной единственной сессии, вне зависимости от того, кто фактически является их источником или получателем.

ZANSWER ()

PРTP

он же взломан

anonymous ()
Ответ на: комментарий от slapin

Да, в случае ICMP используется такие поля, как Identifier или Sequence number, зависит от конкретного ICMP type, в некоторых поле Identifiet например отсутствует.

В случае ICMP, есть соответствующий BCP, на который могут полагаться разработчики NAT подсистем RFC5508: NAT Behavioral Requirements for ICMP.

А сам механизм NAT рассмотрен в RFC 3022: Traditional IP Network Address Translator (Traditional NAT).

Собственно говоря, реализация PAT для протоколов не имеющих полей Port (GRE) или обладающих потребностью в создании зависимых сессий (FTP) всегда требует особого подхода, обычно выраженного в использовании разного рода помощников, работающих в пространстве пользователя или ядра.

ZANSWER ()

Однако я смотрю, что во FreeBSD для PPTP реализовали ядерный помощник, alias_pptp:

https://github.com/freebsd/freebsd/blob/master/sys/netinet/libalias/alias_pptp.c

«Alias_pptp.c performs special processing for PPTP sessions under TCP. Specifically, watch PPTP control messages and alias the Call ID or the Peer's Call ID in the appropriate messages. Note, PPTP requires „de-aliasing“ of incoming packets, this is different than any other TCP applications that are currently (ie. FTP, IRC and RTSP) aliased. For Call IDs encountered for the first time, a PPTP alias link is created. The PPTP alias link uses the Call ID in place of the original port number. An alias Call ID is created. For this routine to work, the PPTP control messages must fit entirely into a single TCP packet. This is typically the case, but is not required by the spec. Unlike some of the other TCP applications that are aliased (ie. FTP, IRC and RTSP), the PPTP control messages that need to be aliased are guaranteed to remain the same length. The aliased Call ID is a fixed length field. Reference: RFC 2637 Initial version: May, 2000 (eds)»

И так, вам осталось только определиться с синтаксисом правил IPFW, для использования данного ядерного помощника.

ZANSWER ()
Ответ на: комментарий от ZANSWER

Из данного поста я не уяснил-можно оставить схему FreeBSD+IPFW&Alias_pptp+NAT и pptp-client на микротике, либо микротик можно откинуть,как лишнее звено и дописывать правила IPFW&Alias_pptp?

ingvar_tomsk ()
Ответ на: комментарий от ingvar_tomsk

На мой взгляд Mikrotik в вашем случае совершенно лишний, поскольку не каких преимуществ он не даст, исключая, что он будет выполнять NAT на PPP интерфейсе.

Каждый ваш Windows клиент сможет самостоятельно выполнять подключение к Windows RAS, используя PPTP, как только вы добавите правила для трансляции PPTP.

ZANSWER ()
Ответ на: комментарий от ingvar_tomsk

то есть у вас от N юзеров идет N подключений к одному VPN-cерверу, и ввиду NAT получается N подключений между гейтом и VPN, так?

если да - зачем вообще микротик пытается поднять VPN? если у ваших юзеров венда и вы хотите в VPN слать только тот трафик, который должен туда идти - там есть соответствующий флаг.

либо поднимать наоборот только на микротике и запретить VPN всем остальным (и это лучше ввиду возможных косяков реализации PPTP NAT). тут уж либо крестик, либо штаны, оба варианта разом лучше не делать.

кстати, а почему бы уж тогда прямо на гейте PPTP-тоннель не поднять?

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от upcFrost

сли у ваших юзеров венда и вы хотите в VPN слать только тот трафик, который должен туда идти - там есть соответствующий флаг.

флаг в настройках впн-подключения?какой именно?

кстати, а почему бы уж тогда прямо на гейте PPTP-тоннель не поднять?

вообще на шлюзе уже установлен mpd5, но как сервер. Сможет ли данный сервер выполнять одновременно роль клиента и сервера?

ingvar_tomsk ()
Ответ на: комментарий от ingvar_tomsk

Флаг называется так: Использовать основной шлюз в удалённой сети.

Чтобы найти его: Свойства -> Сеть -> IP версии 4/6 -> Свойства -> Дополнительно.

В случае если вы отключите данную опцию, то по умолчанию будет создаваться классовый маршрут. Если вас это не устраивает, то вы там же можете это отключить.

Классовый маршрут будет определять длину префикса на основе первых битов в получаемом адресе:

Class A: 0 Class B: 10 Class C: 110

ZANSWER ()
Ответ на: комментарий от ingvar_tomsk

Про флаг выше ответили

Сможет ли данный сервер выполнять одновременно роль клиента и сервера?

Зачем? Он же и так шлюз, просто трафик на этот роут будет идти в pptp-тоннель, и натить будет его же адресом

upcFrost ★★★★★ ()
Ответ на: комментарий от upcFrost

Зачем? Он же и так шлюз, просто трафик на этот роут будет идти в pptp-тоннель, и натить будет его же адресом

Нет,я писал про то,что мpd5 уже поднят на шлюзе,как впн-сервер. Что бы создать pptp-тоннель, надо же mpd5 конфигурить как клиента? А сможет ли данный продукт сразу обе роли выполнять?

ingvar_tomsk ()
Ответ на: комментарий от ZANSWER

А почему MPD5 должен не поддерживать такую конфигурацию?

Потому что есть секция: default: load pptp_client либо pptp_server

Оттого и возник вопрос

ingvar_tomsk ()
Ответ на: комментарий от ingvar_tomsk

ни разу не юзал mpd5, но есть следующие 3 варианта: он умеет работать как сервер и как клиент сам, можно запустить второй инстанс, можно взять за клиент что-то еще.

upcFrost ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.