|
ArcaOS 5.0 Русская версия
Пакет русификации ArcaOS 5.0 OS/2 давно доступен.
Поддерживается любая версия: 5.0, 5.0.1, 5.0.2.
eCo Software может выпустить и другие пакеты
(Немецкий, Голландский, Бразильский Португальский, Испанский, Шведский и т.д.)
|
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.
Комментарии: 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, а сам номер оставить пустым.
|
Прокомментируйте эту статью (напоминаем, автор работал над текстом несколько недель, уважайте мнение других).
|
Для eComStation 2.0 были созданы виджеты (индикаторы разной информации) + новые элементы управления. Пользоваться системой стало еще удобнее. Что нового в eCS 2.0? |
|
|
|
Готовая eComStation на SSD диске
Последний активный опрос: Какая высота барьера RPM?
[Google]
|
IBM OS/2 Warp
|