| OS/2.GURU LibraryReviews / articles about OS/2 eComStation ArcaOS | Operating systems ArcaOS, eComStation, IBM OS/2 Warp |   | 
|   
 | 
| 
     | 
 
 
 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
#, // - обозначение комментариев, строка использоваться не будет 
 Приведу для ясности собственный образец 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, которая поддерживает несколько способов подключения к сети Интернет: 
 Для конфигурации eCSConNet можно использовать внешние программы, например Internet Assistant. 
 
 Komentarze: 
 
 | 
     | |||||||||||||||||||||||
 
 
| 
 ArcaOS 5.1.1 - DOS works againDOS virtual machine works again (it was working on Core 2 Duo, and didn't for i5). Install ArcaOS in UEFI mode to use DOS VM. | 
 eComStation developereCo Software was the leading developer of modules for eComStation 2.0 | // надо на  ENG!! Buy eSchemes | 
 
| Every conference is important. | 
 Warpstock Europe 2016
Interview with Roderick Klein
 What was happening at that conference? The work on ArcaOS was starting.. | 
 
