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.

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

ACPI kernel - помогает снизить энергопотребление, шум (результаты эксприментов)

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

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/Rus может бесплатно зарегистрировать несколько полезных программ (общая стоимость которых > 6000 руб). Дисковые утилиты, программы для интернета, расширители рабочего стола. Нужны ли тебе эти программы?

Статьи

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


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

 





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

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
 

 

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