НОВОЕ: OS/2 GURU - Вопросы и ответы ru · en · de · es · it · pt · cz · pl · fr

OS/2.GURU Library

Reviews / articles about OS/2 eComStation ArcaOS

Operating systems
ArcaOS, eComStation, IBM OS/2 Warp
eComStation myths 

Latest  
 
 
Blonde Guy

Reformat Утилита для форматирования USB флешек, USB винчестеров (для совместимости с OS/2)

 

(promo)

Unsorted

 

 

AD: Upgrade ArcaOS to NeoWPS level

  • Install original PNG icons drawed by designer, specialized at OS/2 adornation.
  • Install eSchemes 2019 to change colors and buttons on desktop.

ISDNPM and PPtP protocol


TITLE: ISDNPM and PPtP protocol

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

AUTHOR: Stanislav Kozlov, Dmitry Froloff
Please use online translator
go to http://translate.google.com
and request the translation of http://ru.ecomstation./projects/reviews/index.php?id=120
to your language

Столкнулся я с одной неприятной проблемой: мой "мегареальный" провайдер, а точнее, человек, выпускающий меня в Интернет из локалки, использует 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.

Test the program:

Weather Widget - view current temperature (forecast for the next few days where available).

Comments:

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, . ... ..... ........ .......

eCo Software is a group of russian developers.
How to support eCo Software? (you can send us some computers. Maybe you don't use the device but it may be useful for the developers). We have the mailboxes in USA, Netherlands, China and Hong Kong.

 

Siberian OS/2

 


 

 

ArcaOS 5.1.1 whatsnew - PNG icons

PNG icons on Desktop

PNG icons on Desktop. (instead of ancient .ico designed in 1994)

Russian OS/2

eCo Software is making russian eComStation since 2001, all versions of ArcaOS since 2017.

// надо на ENG!!

Warpstock Europe 2017

Warpstock Europe 2017 conference was in Rotterdam (Netherlands). Meeting of OS/2 users and developers. Report (russian text):

 

(C) OS2.GURU 2001 -- 2025