Reviews / articles about OS/2 |
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.
Комментарии:
|
|
|||||||||||||||||||||
(C) OS2.GURU 2001-2021