Welcome to eComStation.RU site!

Select your language: Russian English Deutch Spanish Italian Portuguese Czech Polish French

Frequently asked questions and answers:

eComStation.RU

ru · en · de · es · it · pt · cz · pl · fr
eComStation - это совершенно другая операционная система для PC (IBM OS/2 Warp)
Программы, новости, статьи, поддержка пользователей, оборудование, вопросы и ответы.
 
      Что такое OS/2?НовостиУстановкаОбновлениеПрименениеБудущееСообществоКупить    
(Карта сайта)

 
 
Списки протестированного OS/2 оборудования
Как получить драйверы OS/2 бесплатно

 
Обновление

 
Программы

 
(Санкт-Петербург)

 
Преимущества (1)

 
Разработчику (1)

 
(Пайпы программ)

 
Компании: (1)

 
История (1):

 
(Бонусы)

 
Советы:

 
(Барьеры и решения)

 
Технологии: (1)

 
(Применение в науке, лаборатории, ..)

 

 
Готовые решения:

 
Новая eComStation:

 
Будущее: (1)

 
(Ссылки на другие сайты)

 
(Картинка дня)

 
Артефакты OS/2

 
Гаджеты

 

ISDNPM и Протокол PPtP


TITLE: ISDNPM и Протокол PPtP

DATE: 2004-11-11 12:41:04

AUTHOR: Stanislav Kozlov, Dmitry Froloff

Столкнулся я с одной неприятной проблемой: мой "мегареальный" провайдер, а точнее, человек, выпускающий меня в Интернет из локалки, использует VPN (Virtual Private Network) Server W2k.

Работает вся эта "беда" через протокол PPtP (Point to Point Tunneling Protocol), поэтому ось никак не хотела дружиться с этим противным виндовсом. Перепробовал всё! InJoyFW, IJDialer, PPtPforos2, но ничего не помогало..

Наконец, нашёл упоминание о программе ISDNPM, автором которой является замечательный немецкий осевик Willibald Meyer. Пусть Вас не смущает PM. Кроме PM версии, доступна и текстовая версия программы.

1. Настройка ISDNPM

Скачал я эту прогу с хоббесов, но самая главная фишка в том, что мануал там большей своей часть на немецком языке, в котором я к сожалению ничего не понимаю... Но, покапавшись в словарике и воспользовавшись похожими словами с ангельским удалось разобраться. В комплекте программы есть различные скрипты на подключение, но особо я с ними не заморчаивался. Главное, что меня интересовало это pptp.out поковыряв который можно все настроить:

файл: pptp.out
[OUTGOING]

    Name            : PP    // Даем имя соединению, произвольное

    LineOutName     : [PPTP01] // имя исходящей линии, т.к. мы 
                               // используем pptp это и оставляем,
                               // т.к. в isdn.cfg он и указан.

    Tunnel          : 192.168.4.20  //адрес тунеля, или другими словами VPN сервера

    MSS             : 1400 //Максимальный Размер Сегмента (Max Segment Size), 
                           // должен быть меньше чем MTU(== обычно 1500)

    UserId          :  // логи и пароль для входа в систему
    Password        : 

    MaxConnections  : 1 // максимальное кол-во соединений

    Flags           : AUTODIAL                   //флаги, позже посмотрим =)
    AUTODIALMODE    : PING,DNSREQUEST,TCPCONNECT //

    FLAGS           : DEFAULTROUTE
    Flags           : MPPE128   //!!!Важная фича, это типа 
                                // какое шифрование использует
                                
    Flags           : MPPESLESS // провайдер, нужно знать, или просто тыкать ;)

    DNS             : 212.45.25.166 //Днс сервер

    KeepAlive       : 30 //Ну это типа как жить пакетам =)
    KeepAliveDisc   : 5

    Masquermode     : 2 //Есть ли маскарадинг


//  фильтр для Netbios over TCP/IP (Port 137-139)
    IncomingFilter  : fp2.flt,DATENFILTER0
    OutgoingFilter  : fp2.flt,DATENFILTER0

Все.. кладем его в ту же директорию, где isdnPM в диру user. Потом беремся за isdn.cfg

файл: isdn.cfg
Ф Л А Г И:

    FLAGS   :   AUTODIAL    // Флаг который, снова воостанавливает
                            // соединение, если бы таймаут

    FLAGS   :   MULTILINK   // Вроде, для поддержки мн-ва линий

    FLAGS   :   DEFAULTROUTE // Используем роутинг по дефолту

    FLAGS   :   DNSREQUEST   // Запрашшиваем ДНС у прова

    Flags   :   DORESOLVE    // Сами пользуем ДНС,
                              
Ф Л А Г И  авторизации, шифрования паролей!!!!! В А Ж Н О! 

    FLAGS   :   MPPE128       // Криптование, у меня все с ней работает

    FLAGS :  PAP      // PAP авторизация
    FLAGS :  CHAP     // CHAP авторизация
    FLAGS :  CHAPMS   // CHAPMS авторизация
    FLAGS :  CHAPMSV2 // CHAPMSV2 авторизация
    FLAGS :  ALLOWCALLBACKMS  // Разрешаем калбэк-МС
    FLAGS :  ALLOWCALLBACK    // разрешаем CALLBACK 

    FLAGS   :   CALLBACK    // Используем калбэк, 
                            // т.е. когда пров перезванивает тебе.
                            
    FLAGS   :   CALLBACKMS  // PPP-CALLBACK по технологии М$

    FLAGS   :   LZS             // STACK LZS COMPRESSION 
    FLAGS   :   LZS1            // STACK LZS-1 COMPRESSION 
    FLAGS   :   LZS1T           // STACK LZS-1T COMPRESSION 
    FLAGS   :   BSD             // BSD COMPRESSION 
    FLAGS   :   PREDICTOR1      // PREDICTOR COMPRESSION
    FLAGS   :   PREDICTORCISCO  // PREDICTOR CISCO COMPRESSION
    FLAGS   :   MPPC            // MICROSOFT COMPRESSION


    FLAGS :   DYNAMIC         // испоьзуем .dyn файлы(я их не рассматривал, 
                              // т.к. для себя не видел смысла)

....

[GLOBAL]

.... 

    PPTPLines          :  1 //Сколько линий используем
... 

Тут есть ещё один нюансик. Т.к. при работе проги она изменят правила роутинга и использует свой интрефейс(сетевой), то нужно посмотреть на

[IP0]

    IF_NAME             : sl0  << сюда
    IF_UNIT             : 0

    IF_CONFIG           : CONFIG0.FNC     // и сюда =) 
         // Вот это скрипт для конфигурирования 
         // роутинга, его тожа смотрим

[PPTP01]

    Indication          : 10123         //
    Connections         : 4             // 
    Bind                : 127.0.0.1     //

Щас смотрим на правила нашего роутинга и для этого смотрим скрипт на который я указывал раньше CONFIG0.FNC Там нам надо всего несколько строчек.

файл: CONFIG0.FNC
 lcLocalIP     = '192.168.4.20'    // Указываем где у нас есть сервер
 lcNetmask     = '255.255.255.255' // ну и типа маска _такая_
 LocalDNS = '0.0.0.0'              // локальный ДНС если есть ессено, 
                                   // у меня нет например.

Ну вот основные конфигурации мы произвели. Щас нам нужно поствить протокол ч-з MPTN из папочки /driver После его постановки у нас появится протокол IMYWI$, но если быть чесным, то у меня и без него все работает =)) Ну все после того как мы все отконфигурили, то можно потробывать запустить isdnPM. Пробуем... и что мы видим, у нас нет ни одного соединении в окошке, не пужайтесь, все нормально настроилось, просто наш любимый Willibald Meyer, без ключа не собираеться давать нам пользоваться прогой.=( для этого идем на страницу ISDNPM, там заполняем форму и наш любимый немец высылает нам на мыло тестовый ключик, кидаем его просто в корень isdnpm.

Запускаем, и... в окошечке с соединением у нас есть 1 соединение, и называется оно так как вы обозвали его в pptp.out. Выбираем его и жмем пимпу dial ... Если она стала зеленая, то я вас поздравляю, вы успешно прошли авторизацию на сервере, если же она желтая, а потом красная, то или нкеверный пароль, или неверное криптование, но на самом деле там много чего может быть =)

Кстати, ещё важный момент, если ваш провайдер сразу предоставляет DNS, то все нормально, иначе же, нужно прописать в том же самом MPTS прописать DNS например 212.45.25.166 и 212.45.25.165 (Или в O:\MPTN\ETC\resolv2 прописать nameserver 212.45.25.166) Ну вот типа все...

PS: На самом деле ISDNPM - это очень мощный пакет по работе с сетью. В данной статье освещена только одна его сторона - работа с VPN через локальную сеть. Так же он работает через модем, т.е. его можно использовать как звонилку, но это уже не ко мне ... =)

Найти меня можно на #os2russian, где я скрываюсь под именем Mancubus =) Большой респект всем на #os2russian, в особенности moveton.

2. Дополнение от Дмитрия Фролова

Приведённое выше описание мне не помогло, поэтому после трёх дней неудачных попыток установить соединение (то, что в Винде делается за 5 минут) пришлось писать письмо разработчику с просьбой о помощи. Ответ от Karlheinz Schmidthaus пришёл на удивление быстро. Оказывается весьма критическим параметром в файле User\pptp.out является задание режима passive mode ppp. После прописывания флага Flags : ~PASSIVE всё заработало. Никакие дополнительные драйверы MACMYWI.OS2 и PPPEMYWI.OS2 устанавливать не требуется.

Итак, рассмотрим структуру User\pptp.out подробно ещё раз.

// * Sample for an ADSL-PPTP connection 
// * Standardbeispiel fuer eine ADSL-PPTP-Tunnelverbindung
// *
// * mit Netbios-Datenfilter / with Netbios-paketfilter
// * IP-Masquerading
// * AutoDial

[OUTGOING]

// define NAME without space 
    Name            : Xs4all-Adsl    // or special characters, 
                                     // maximum 32 chars.

    LineOutName     : [PPTP01]

// Tunnel = IP-address of the ADSL-Modem
    Tunnel          : 192.168.0.1

//                       MSS = (Max Segment Size) 
//                             must be lower then MTU Size
    MSS             : 1492

    UserId          : username@xs4all-basic-adsl
    Password        : mypassword
#   QueryUID        : QUID

    MaxConnections  : 1

#    Flags           : AUTODIAL
    AUTODIALMODE    : DNSREQUEST,TCPCONNECT,PING
#    AUTORECONNECT   : 1

    FLAGS           : DEFAULTROUTE,DORESOLVE
    Flags           : ~PASSIVE

#    FLAGS           : MPPESLESS         // Client want to use encryption
#    FLAGS           : MPPE128           // ask for 128 bit encryption
#    FLAGS           : NACK2CHAPMSV2     // force MS CHAPV2 authentication

                                      // IP-Masquerading aktiv
    Masquermode     : 2
    RemoteAddress   : 10.0.0.0/255.0.0.0

#    Masquerloglevel : natindeny,natinaccept,natout
    
//                    allow different port for the ftp data connection
    MasquerOption   : LOOSEFTPPORT

    // answer authentication request with TCPReject (port 113/tcp)
    MasquerEntry    : 0.0.0.0,0,113,127.0.0.1,113,6,0,TCPReject

//  Paketfilter for Netbios over TCP/IP (Port 137-139)
    IncomingFilter  : fp2.flt,DATENFILTER0
    OutgoingFilter  : fp2.flt,DATENFILTER0

    KeepAlive       : 30
    KeepAliveDisc   : 5

#, // - обозначение комментариев, строка использоваться не будет

  • [OUTGOING] - обозначение исходящего соединения
  • name - имя соединения - будет появляться в списке ISDNPM
  • LineOutName - правило установления соединения из isdn.cfg
  • Tunnel - адрес сервера, предоставляющего PPTP сервис
  • MSS - максимальный размер сегмента, должен быть как минимум на 8 байт меньше MTU
  • UserId - имя пользователя (логин) - берётся у провайдера
  • Password - пароль для доступа
  • QueryUID - запросить логин/пароль перед установлением соединения.
  • MaxConnections - число одновременных соединений - обычно равняется 1
  • FLAGS - флаги для данного соединения, перечислю те, с которыми пришлось иметь дело:
    • AUTODIAL - автоматически устанавливать соединение при запуске программы;
    • DEFAULTROUTE - использовать данное соединение по умолчанию для доступа в Интернет;
    • DORESOLVE - прописывать DNS в resolv2 (это делается в скрипте config0.fnc)
    • PASSIVE - режим PPP в моём случае потребовалось явно установить в Off (~PASSIVE)
    • MPPESLES, MPPE40, MPPE128 - режимы шифрования при передаче, если соединение не устанавливается, хотя аутентификация проходит успешно, то нужно попробовать перебрать один из этих флагов
    • MPPC - режим компрессии передваемых данных (не уверен, что работает)
  • AUTODIALMODE режим установления соединения
    • DNSREQUEST - запрос адресов DNS;
    • TCPCONNECT - устанавливается соединение TCP;
    • PING - периодический обмен эхо-пакетами с сервером PPTP.
  • AUTORECONNECT - автоматическое восстановление соединения в случае разрыва
  • Masquermode - режим NAT
    • 0 - NAT отключен
    • 2 - включен
  • MasquerEntry - при включенном NAT определяет portmapping во внутреннюю сеть.
  • RemoteAddress - определяет адрес и маску подсети, которую будет обслуживать данное соединение через NAT.

Приведу для ясности собственный образец Rexx скрипта настройки маршрутизации config1.fnc - настройка для обслуживания локальной сети 10.0.0.0/255.0.0.0 (режим NAT должен быть естественно включен). Чтобы использовать этот скрипт - необходимо прописать имя файла

   IF_CONFIG           : CONFIG1.FNC

в секции [IP0] (интерфейс sl0) файла isdn.cfg

/**********************************************************************
 * config1.fnc
 *
 * Sample for T-DSL-Connection 
 *       the command syntax is for TCP/IP 4.1 and later
 *
 *       WICHTIG: Abweichende MTU-Size (1492) bei PPPoE notwendig!
***********************************************************************/

 call RxFuncAdd 'SysSleep','RexxUtil','SysSleep'
 call RxFuncAdd 'SysLoadFuncs','RexxUtil','SysLoadFuncs'
 call SysLoadFuncs

 /* read parameter */
 PARSE ARG  action ifname ifnumber txt1 local txt2 remote txt3 
            dns1 txt4 dns2 txt5 nbdns1 txt6 nbdns2 txt7 netmask 
            txt8 name txt9 default txt10 mmode txt11 doresolve 
            txt12 lineoutname .

 /* display parameters in more readable form */
 PARSE SOURCE . . CallName
 PARSE ARG . . . MoreParms;
 CALL LOGSAY CallName 'started for' action 'of interface' ifname'/'ifnumber;

 DO WHILE (MoreParms \= '')
    PARSE VAR MoreParms ThisName ThisValue MoreParms;
    CALL LOGSAY  ' ' ThisName ThisValue;
 END;


/****************************************************************/
/*   CALLED WHEN ISDNPM IS STARTED FOR A SPECIFIC INTERFACE     */
/****************************************************************/

 if ACTION = 'START'  then do
    say 'START FOR INTERFACE ' ifname  ' NUMBER ' ifnumber
/* если есть default - удаляем */
    'route delete default' 
/* конфигурируем интерфейс */
    'ifconfig sl0 10.0.1.1 netmask 255.0.0.0 mtu 1492'
/* прописываем default */
    'route add net default 10.0.1.1'
/* на всякий случай - если нет в setup.cmd */
    'ifconfig lo 127.0.0.1'
    'ipgate on'

 end

/****************************************************************/
/*   CALLED WHEN ISDNPM IS STOPPED FOR A SPECIFIC INTERFACE     */
/****************************************************************/

 if ACTION = 'STOP' then do
/* восстанавливаем исходные значения */
    'route delete default'
    'ipgate off'
    WriteResolv()

/*  say 'STOP FOR INTERFACE ' ifname   ' NUMBER ' ifnumber
*/
 end


/****************************************************************/
/* CALLED WHEN ISDNPM OPENS A 'PPP-LINK' FOR A INTERFACE        */
/****************************************************************/

 if ACTION = 'OPEN' then do

    say 'CONFIG FOR INTERFACE ' ifname   ' NUMBER ' ifnumber
    say 'CONFIG ' txt1 local
    say 'CONFIG ' txt2 remote
    say 'CONFIG ' txt9 default

    say "Nameserver1="||dns1
    say "Nameserver2="||dns2

/* прописываем параметры DNS в %ETC%\resolv */
    WriteResolv( LocalDNS, DNS1, DNS2);

 end

/****************************************************************/
/* CALLED WHEN ISDNPM CLOSE A 'PPP-LINK' FOR A INTERFACE        */
/****************************************************************/

 if ACTION = 'CLOSE' then do
/*
    say 'RESET FOR INTERFACE ' ifname   ' NUMBER ' ifnumber
*/
 end

exit 0


/* -------------------------------------------------------------------- */
/* write a line to console and logfile                                  */
/* name and place of the logfile is the same as of the script, but with */
/* extension .log, The file must exist in order to be written.          */
/* -------------------------------------------------------------------- */
LOGSAY: PROCEDURE

 LogId       = '[#]';
 TimeStamp   = TRANSLATE( 'abcd/ef/gh', DATE('S'), 'abcdefgh') TIME()':';

 PARSE ARG Line;
 PARSE SOURCE . . CallName;
 LogFile = OVERLAY( '.log', CallName, LASTPOS( '.', CallName));
 IF (FileExist( LogFile)) THEN
 DO
    rc = LINEOUT( LogFile, TimeStamp Line);
    rc = LINEOUT( LogFile);
 END;

 SAY LogId Line;
 RETURN( 0);

/* -------------------------------------------------------------------- */
/* determines if a given file exists                                    */
/* -------------------------------------------------------------------- */
FileExist: PROCEDURE
 PARSE ARG FileName
 RETURN(STREAM(Filename, 'C', 'QUERY EXISTS') > '');

/* -------------------------------------------------------------------- */
/* determines filesize                                                  */
/* -------------------------------------------------------------------- */
FileSize: PROCEDURE
 PARSE ARG FileName
 RETURN(STREAM(Filename, 'C', 'QUERY SIZE'));

WriteResolv: PROCEDURE EXPOSE (GlobalVars)
 PARSE ARG LocalDNS, DNS1, DNS2;

 /* default values */
 Redirection = '>NUL 2>&1';
 resolv     = VALUE( 'ETC',, 'OS2ENVIRONMENT')'\resolv'
 resolv2    = VALUE( 'ETC',, 'OS2ENVIRONMENT')'\resolv2'
 resolv_tmp = resolv||'.tmp'
 resolv_bak = resolv||'.sik'

 IF (DNS1 \= '') THEN
 DO
    /* ---- write resolv configuration ---- */

    /* write temporary resolv file */
    rc = SysFileDelete( resolv_tmp);
    IF (LocalDNS \= "0.0.0.0") THEN CALL LINEOUT resolv_tmp, 'nameserver' LocalDNS;
    IF (dns1     \= "0.0.0.0") THEN CALL LINEOUT resolv_tmp, 'nameserver' dns1;
    IF (dns2     \= "0.0.0.0") THEN CALL LINEOUT resolv_tmp, 'nameserver' dns2;
    CALL LINEOUT resolv_tmp

    /* create backup copy */
    IF ((\FileExist( resolv2)) | (FileSize( Filename) = 0)) THEN
    DO
       CALL LOGSAY 'create backup copy of existing file' resolv;
       rc = SysFileDelete( resolv_bak);
       'ren' resolv FileSpec( 'N', resolv_bak) Redirection;
    END;

    /* now let temporary file become the real resolv file */
    CALL LOGSAY 'create file' resolv 'with requested DNS information'
    rc = SysFileDelete( resolv);
    'ren' resolv_tmp FileSpec( 'N', resolv) Redirection;

    /* create resolv2 from resolv if not exist      */
    IF (\FileExist( resolv2)) THEN
    DO
       CALL LOGSAY 'create file' resolv2 'as copy';
       'COPY' resolv resolv2 Redirection;
    END;
 END;
 ELSE
 DO
    /* ---- cleaup resolv configuration ---- */

    /* delete current resolv file */
    CALL LOGSAY 'removing file' resolv;
    rc = SysFileDelete( resolv);

    /* rename back a backup copy */
    IF (FileExist( resolv_bak)) THEN
    DO
       CALL LOGSAY 'reactivating existing backup copy of' resolv;
       'ren' resolv_bak FileSpec( 'N', resolv) Redirection;
    END;

    /* do not delete resolv2 !   */
    /* better for autodial users */

 END;

 RETURN( '');

3. Бесплатная версия ISDNPM

В составе eComStation/Rus 1.2 поставляется специальная полноценная версия ISDNPM - eCSConNet, которая поддерживает несколько способов подключения к сети Интернет:

  • Через аналоговые модемы
  • ISDN CAPI 1.1 или 2.0
  • PPPoE (xDSL)
  • PPtP (xDSL)
  • Dial-Back
  • NAT (не более 253 пользователей)

Для конфигурации eCSConNet можно использовать внешние программы, например Internet Assistant.

Попробуй программу:

WarpOverlay! - видео-оверлей для видеоадаптеров, выпускавшихся до 2006 года.

Комментарии:

evermc
2004-12-06 18:25:36

good

ssh
2006-06-25 16:27:04

"Любый немец" немного изменил структуру сайта, правильный линк на страницу программы: [url]

ssh
2006-06-25 16:28:34

Автор программы изменил структуру сайта и правильный адрес теперь [url]

alexadmin
2007-03-27 14:15:04

Наверное стоило бы пояснить, что первая часть статьи рассказывает о настройке pptp клиента, а вторая - сервера, и флаг ~PASSIVE как раз таки и задает работу в режиме сервера.

Eugene Gorbunoff
2007-04-25 12:03:39

Если звоните в интернет по модему и есть проблема:

символ "#" он гнусно игнорирует и не посылает в модем. Решение: номер вбить в Dial Prefix, а сам номер оставить пустым.

Прокомментируйте эту статью (напоминаем, автор работал над текстом несколько недель, уважайте мнение других).


Ваше имя:

Ваш E-Mail:

CODE:
......

  

Ваш комментарий:


История eComStation - борьба, инновации и победы. Что будет дальше? Зависит от тебя.

Статьи

Операционная система
Программное обеспечение
Оборудование
Для разработчика
Разное
Колонка редактора


Готовая eComStation на SSD диске

 





Последний активный опрос: Какая высота барьера RPM?

Самая комментируемая новость за месяц: OS/2 Firefox откат к старому

IBM OS/2 Warp

 
Обучение новичков

Списки протестированного OS/2 оборудования

 
Статьи


   
  Почему eComStation?
Возможности
Особенности
Применение
Ролики и скриншоты
   eComStation для
для бизнесменов
для студентов и инженеров
для продавцов компьютеров
сообщество пользователей
   Разработчик
Распространить программу
Описание API, библиотеки
Начать новый проект
Конкурсы
   Программы
Он-лайн каталог
Выбрать через eCo Market
   Служба поддержки
Отправить вопрос
Купить eComStation
Вопросы и ответы
Обучение новичков
 
 
© 2001 - 2014 eCo Software, All rights reserved
eComStation is a registered trademark of Serenity Systems International
OS/2 Warp is a registered trademark of IBM Corporation
 

 

 
Картинка дня: