pptp нужен совет

Тема в разделе "WASM.NETWORKS", создана пользователем Exception13, 26 фев 2010.

  1. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Есть сервер pptpd который может принимать входящие подключения по протоколу pptp.
    Есть два модема: с одного производится дозвон на другой и пытается установить соединение посредством ppp протокола. На приемной стороне надо завернуть принятые от модема данные в pptp и передать их pptpd серверу.
    Вобщем, цепочка следующая:
    ppp RS232 TCP (pptp)
    [modem] <---> [modem] <-------> [PC] <-----> [server]
    (ring) (accept) (просто комп) (pptpd)


    Вариант, когда принимающий входящее подключение модем подключен напрямую к серверу - неприемлем (в такой бы ситуации можно было бы обойтись стандартными средствами).
    Как можно организовать работу подобной схемы ?
    pptp клиенты есть только под linux, хотелось бы сделать тоже самое под виндовсом.
     
  2. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    а более подробно можно расписать? некоторые моменты не до конца ясны.
     
  3. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Ситуация - как во времена диалапа: с одного модема производим дозвон на телефон провайдера с целью выхода в тырнет. Провайдером в данном случае выступаем мы, и тырнет - тоже наш. Между двумя модемами устанавливается обычное соединение по передаче данных. Для работы с провайдером, пользователю требуется получить IP, чтобы была возможность транспортировки TCP/UDP и прочего хлама в установленном канале, для чего используется протокол ppp. Модем пользователя производит посылку ppp пакетов в линию (телефонная/GSM или что нить др.) модем "провайдера" принимает эти пакеты. Приянтые модемом "провайдера" данные из канала передачи, считываем и заворачиваем в туннель (коим является pptp протокол) для т.ч. эти данные можно было ретранслировать через обычное IP соединение куда-нибудь до удаленного pptpd сервера, который вскрывает pptp пакет, достает из него данные ppp протокола и обрабатывает их так, как будто модем подключен непосредственно к нему (к серверу). Далее - обратная цепочка: сервер отвечает ppp пакетом, заворачивает его в pptp протокол отправляет его через IP сеть до компьютера непосредственно соединенного с модемом (по RS232), на котором из pptp пакета достаем данные ppp протокола и отправляем их в модем.
    Вот, как то так.
     
  4. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    а в чём собственно сложность? если верно понял - тебе нужен nat
     
  5. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    нет, тут ни какой трансляции IP пакетов не требуется.
    Надо просто данные из COM порта завернуть в сеть, да так, чтобы потом эти данные можно было подсунуть pppd серверу. Вот и думаю голову ломаю.
    Посмотрел сейчас в сторону ppp over ssh, но еще толком не разобрался как из ssh данные попадают в pppd сервер.
     
  6. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    nc/ncat ?
     
  7. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    О, спасибо, вроде как подходит, надо только разобраться как на стороне "провайдера" обеспечить работу netcat с pppd демоном... А так - вообще замечательный вариант, ни каких серваков писать не придется.
     
  8. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Эх, что то я ступил, с помощью netcat невозможно разрулить несколько подключений - только одно.
    Вот если бы либина какая нить была кроссплатформенная для реализации pptp клиента - это бы меня спасло.
     
  9. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Есть, нашел то что мне надо - это L2F протокол от Cisco. Осталось найти библиотеки для работы с этим протоколом и трансляцией данных из него в pppd сервер.
     
  10. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Ну как это нет. Любой VPN-клиент поддерживает pptp-протокол. А их под Винды тьма, не считая родной от Микрософта.
     
  11. kyprizel

    kyprizel New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    232
    Адрес:
    TSK
    на компе подними нат или форвардинг сделай и не морочь голову.
     
  12. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Смотрел я это..., все клиенты уже сами по себе формируют ppp пакеты и засовывают их в сеть, т.е. я могу управлять лишь содержимым ppp - а это мне абсолютно не нужно.
    т.е. я имею какие то данные и эти данные мне нужно предоставить в чистом виде pppd серверу так, как если бы он их получал непосредственно из com порта от модема.
    Решение данной проблемы я нашел пока только одно, но оно мне не очень нравится:
    Есть такие девайсы com2ethernet, на стороне pppd сервера организуем ряд виртуальных com портов (на базе существующих драйверов устройств com2ethernet) с которыми этот сервер будет работать, а клиетнская часть будет фактически эмулировать работу com2ethernet устройства, но для этого нужны исходы хотябы драйвера для подобных устройств.

    Вай, а если по русски ??? что сей набор буков означает ? какой толк от nat ? и что являет собой слово "форвардинг" в понимании автора ?
     
  13. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    а что мешает перенаправить данные из сетевого соединения непосредственно в com порт на принимающей стороне?
    схема реализации - в файерволле [на принимающей стороне] редиректишь соединение с нужного интерфейса на определённый порт, на этом порту висит простейший демон, принимающей данные и перенаправляющий их непосредственно на ком порт.
     
  14. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    интереса ради решил подобную задачу [в моём понимании конечно]

    демон висит на 1234 порту;
    в правилах иптейблс
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 111 -j REDIRECT --to-port 1234

    те все пакеты на 111 порт будут перенаправляться на 1234 порт, на котором и висит наш демон.

    Код (Text):
    1. #!/usr/bin/perl
    2.  
    3. use IO::Socket;
    4.  
    5. my $sock = new IO::Socket::INET (
    6.  Localhost =>'localhost',
    7.  LocalPort =>'1234',
    8.  Proto =>'tcp',
    9.  Listen =>'1',
    10.  Blocking =>'1',);
    11.  
    12.  die "error create socket: $!n" unless $sock;
    13.  # для примера tty1 - наша консолька
    14.  open (FD, "+>/dev/tty1") or die "can't create file: $!n";
    15.  binmode FD ;
    16.  my $new_sock = $sock -> accept();
    17.  $new_sock->autoflush(1);
    18.  
    19.  while (<$new_sock>)
    20.  {
    21.   print FD $_;
    22.  }
    23.  close (FD);
    24.  close $sock, $new_sock;
    те тупо принимает пакеты на 1234 порту, и пишет в файл [com порт - тоже файл]; пишет в сыром виде [те бинарные данные никак не будут интерпретироваться].

    если я снова правильно понял твою проблему - то вот такое вот решение ) [хотя допилить демон ещё надо]
     
  15. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Спасибо, идея понятна, но не понятно следующее: на принимающей стороне где будет запущен pppd сервер работать с com портом станет невозможно, т.к. он уже захвачен демоном pppd и мы не можем его даже открыть чтобы туда писать / читать.
     
  16. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    > с com портом станет невозможно, т.к. он уже захвачен демоном pppd и мы не можем его даже открыть чтобы туда писать / читать.

    мм...ты проверял?
     
  17. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Пока что нет, на данный момент занимаюсь несколько другими вопросами, а это, так - вынашиваю планы... проверить то надо будет обязательно.
    Еще думаю надо будет глянуть насчет возможности написания плагина для pppd, тогда бы это сняло все вопросы.
     
  18. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Посмотрел, можно расшарить доступ к ttysX, но толку от этого не прибавиться. Т.к. если сторонее (моё) приложение будет писать в этот порт, то демон pppd ничего читать то не будет из того что было мной туды записано. Т.е. я могу расшарить доступ к устройству, которое находится на ttysX, и мы оба (я и pppd) можем свободно работать с тем, что подключено к ttysX.

    Вот если плагин какой нить написать для pppd: типа простенького параллельного сервера, который бы принимал входящие подключения и каждая TCP сессия была бы связана с соответствующим слотом модемного пула pppd сервера.
    Вопрос только в том как писать эти плагины...