Если сервер, с которым вы соединяетесь, требует PAP или CHAP, то вам придется поработать несколько больше.
К вышеупомянутому файлу options добавьте следующие строки
______________________________________________________________________ # # заставить pppd использовать ваше ISP имя пользователя в качестве вашего # 'имени хоста' при аутентификации name <your ISP user name> # исправьте эту строку как вам нужно # # Если вы запустили PPP *сервер* и непременно нужен PAP или CHAP # раскомментируйте соответственно одну из этих строк. НЕ используйте их, # если вы - клиент, подключающийся к PPP серверу (даже если он использует PAP # или CHAP), так как это говорит СЕРВЕРУ аутентифицировать себя на вашей # машине (что почти никогда нельзя сделать - и связь не будет установлена). #+chap #+pap # # Если вы используете ЗАШИФРОВАННЫЕ сведения в файле /etc/ppp/pap-secrets, # то раскомментируйте следующую строку. # Заметьте: это НЕ тоже, что использование MS шифрации паролей, которая # может стоять на MS RAS Windows NT. #+papcrypt ______________________________________________________________________
Windows NT Microsoft RAS может использовать разновидность CHAP. В вашем дистрибутиве исходных текстов PPP, вы найдете файл README.MSCHAP80, который обсуждает этот вопрос.
Вы можете определить, запрашивает ли сервер установление подлинности, используя этот протокол, разрешив отладку для pppd. Если сервер запрашивает установление подлинности по MS CHAP, то вы увидите строки типа
______________________________________________________________________ rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>] ______________________________________________________________________
Критическая информация здесь - auth chap 80.
Для того, чтобы использовать MS CHAP, вы должны будете пересобрать pppd, чтобы вкомпилировать эту поддержку. Пожалуйста, см. инструкции в файле README.MSCHAP80 в исходных текстах PPP, чтобы узнать, как вкомпилировать и использовать этот протокол.
Вы должны обратить внимание, что в настоящее время этот код в Linux поддерживает только клиент PPP, соединяющийся с сервером MS WINDOWS NT. Сервер PPP в Linux не поддерживает этот протокол для установления подлинности клиентов по протоколу MSCHAP80.
Если вы используете установление подлинности по pap или chap, то вы также должны создать файл секретов. Это:
______________________________________________________________________ /etc/ppp/pap-secrets /etc/ppp/chap-secrets ______________________________________________________________________
Для защиты они должны принадлежать пользователю root, группе root и иметь права доступа к файлу 740.
Первое, на что надо обратить внимание насчет PAP и CHAP - то, что они разработаны, чтобы опознавать компьютерные системы, а не пользователей.
"Оп-па!.. А какая разнаца? " слышу я ваш вопрос.
А такая что, как только ваш компьютер создал PPP соединение с сервером, ЛЮБОЙ пользователь вашей системы может использовать это соединение - не только вы. Именно поэтому вы можете устанавливать WAN связь, которая соединяет две LAN, используя PPP.
PAP может требовать (а CHAP ТРЕБУЕТ) двунаправленного установления подлинности, то есть компьютер на каждом конце соединения должен иметь правильные имя и пароль другой стороны. Однако, большинство PPP серверов с доступом по коммутируемым линиям, использующие PAP, этим способом НЕ пользуются.
Как уже упоминалось, ваш ISP вероятно даст вам имя пользователя и пароль, чтобы позволить вам соединяться с их системой и выходить дальше в Интернет. Ваш ISP не интересуется именем вашего компьютера вообще, так что вы вероятно будете должны использовать ваше ISP имя пользователя как имя вашего компьютера.
Это делается, используя имя пользователя в опции name pppd. Так, если вы должны использовать имя пользователя, выданное вам вашим ISP, добавьте строку
______________________________________________________________________ name your_user name_at_your_ISP ______________________________________________________________________к вашему файлу /etc/ppp/options.
Технически, вы действительно должны использовать пользователя our_user name_at_your_ISP для PAP, но pppd достаточно интеллектуален, чтобы интерпретировать имя как пользователя, если это требуется для использования PAP. Преимущество использования опции name в том, что она также является допустимой для CHAP.
Так как PAP служит для опознания компьютеров, технически вы должны также определить удаленное компьютерное имя. Однако, поскольку большинство людей работает только с одним ISP, то вы можете использовать групповой символ (*) для удаленного имени хоста в файле секретов.
Также стоит заметить, что многие ISP применяют модемные пуллы, соединенные с различными терминальными серверами - каждый со своим именем, но ДОСТУПНЫЙ с одного (циклически переключаемого) входного номера. Следовательно может быть очень трудно при некоторых обстоятельствах знать заранее имя удаленного компьютера, поскольку это зависит от того, к какому терминальному серверу вы подсоединились!
Файл /etc/ppp/pap-secrets выглядит примерно так:
______________________________________________________________________ # Secrets for authentication using PAP # client server secret acceptable_local_IP_addresses ______________________________________________________________________
Четыре поля - разграниченные пробельными символами, причем последнее может быть пустым (которое вы можете захотеть использовать для динамического и вероятно статического IP распределение от вашего ISP).
Предположим, что ваш ISP дал вам имя пользователя fred и пароль flintstone, установите опцию name fred в /etc/ppp/options[.ttySx] и настройте ваш файл /etc/ppp/pap-secrets следующим образом
______________________________________________________________________ # Secrets for authentication using PAP # client server secret acceptable local IP addresses fred * flintstone ______________________________________________________________________
Обратите внимание, что мы не должны определять локальный адрес IP, если мы не требуем ПРИНУДИТЕЛЬНО выставить локальный, статический адрес IP. Даже если вы попробуете это сделать, вряд ли что-нибудь получиться, так как большинство PPP серверов (для защиты) не позволяют удаленной системе устанавливать свой IP адрес, они должны быть выданы со стороны ISP.
Он требует, чтобы вы имели взаимно опознавательные методы - вы должен позволить и вашей машине опознать удаленный сервер И удаленному серверу опознать вашу машину.
Итак, если ваша машина - fred и удаленная - barney, то ваша машина установила бы name fred remotename barney, а удаленная машина установит name barney remotename fred в их соответствующих файлах /etc/ppp/options.ttySx .
/etc/chap-secrets файл для fred такой
______________________________________________________________________ <p> # Secrets for authentication using CHAP # client server secret acceptable local IP addresses fred barney flintstone barney fred wilma ______________________________________________________________________
а для barney
______________________________________________________________________ # Secrets for authentication using CHAP # client server secret acceptable local IP addresses barney fred flintstone fred barney wilma ______________________________________________________________________
Обратите внимание в частности, что обе машины должны иметь записи для двунаправленного установления подлинности. Это позволяет локальной машине называть себя на удаленной машине И удаленной машине называть себя на локальной машине.
Некоторые пользователи работают с больше чем одним сервером, использующих PAP. Если ваше имя пользователя отличается для каждой машины, с которой вы хотите соединяться, это - не проблема.
Однако, многие пользователи имеют одно и то же имя пользователя на двух (или даже всех) системах, с которыми они соединяются. Вот это проблема - правильно выбрать соответствующие строки из файла /etc/ppp/pap-secrets.
Как вы могли ожидать, PPP обеспечивает механизм для решения этой задачи. PPP позволяет вам установить 'вымышленное имя' для удаленного (серверного) конца соединения, используя опцию remotename в pppd.
Позвольте нам предположить, что вы соединяетесь с двумя PPP серверами, используя username fred. Вы настриваете ваш /etc/ppp/pap-secrets примерно так
______________________________________________________________________ fred pppserver1 barney fred pppserver2 wilma ______________________________________________________________________
Теперь, чтобы установить соединение с pppserver1, вы использовали бы name fred remotename pppserver1 в ваших ppp-опциях, а для pppserver2 - name fred remotename pppserver2.
Поскольку вы можете выбирать файл опций для запуска pppd, используя опцию file filename, то вы можете настроить скрипт, чтобы соединяться с каждым из ваших PPP серверов, правильно выбирая файл опций для использования и, следовательно, выбирая правильную опцию remotename.