Россия, Казань, Казанский Национальный Исследовательский Технический Университет |
Поддержка удаленных клиентов
Настройка mgetty для автоматической поддержки РРР-соединений
Разрешение автоматического обслуживания удаленных клиентов на базе ОС Windows осуществляется в файле конфигурации mgetty. По умолчанию в операционной системе Linux это файл /etc/mgetty+sendfax/login.config. Если вы самостоятельно создавали выполняемый файл для mgetty из исходного кода, то местоположение файла конфигурации можно изменить.
Файл login.config указывает, как программа mgetty должна вести себя в той или иной ситуации при обнаружении попытки соединения с сервером. В листинге 16.4 представлен пример файла login.config.
1 # login.config 2 # 3 # This is a sample "login dispatcher" configuration file for mgetty 4 # 5 # Format: 6 # username userid utmp_entry login_program [arguments] 7 # 8 # Meaning: 9 # for a "username" entered at mgettys login: prompt, call 10 # "login_program" with [arguments], with the uid set to "userid", 11 # and a USER_PROCESS utmp entry with ut_user = "utmp_entry" 12 # 13 # username may be prefixed / suffixed by "*" (wildcard) 14 # 15 # userid is a valid username from /etc/passwd, or "-" to not set 16 # a login user id and keep the uid/euid root (needed for /bin/login) 17 # 18 # utmp_entry is what will appear in the "who" listing. Use "-" to not 19 # set an utmp entry (a must for /bin/login), use "@" to set it to the 20 # username entered. Maximum length is 8 characters. 21 # 22 # login_program is the program that will be exec()ed, with the arguments 23 # passed in [arguments]. A "@" in the arguments will be replaced with the 24 # username entered. Warning: if no "@" is given, the login_program has 25 # no way to know what username the user entered. 26 # 27 # 28 # SAMPLES: 29 # Use this one with my Taylor-UUCP and Taylor-UUCP passwd files. 30 # (Big advantage: tuucp can use the same passwd file for serial dial-in 31 # and top dial-in [uucico running as in.uucpd]). Works from 1.05 up. 32 # 33 #U* uucp @ /usr/lib/uucp/uucico -1 -u @ 34 35 # 36 # Use this one for fide calls (login name /FIDO/ is handled specially) 37 # 38 # You need Eugene Crosser's "ifmail" package for this to work. 39 # mgetty has to be compiled with "-DFIDO", otherwise a fido call won't 40 # be detected. 41 # 42 /FIDO/ uucp fido /usr/local/lib/fnet/ifcico @ 43 44 # 45 # Automatic PPP startup on receipt of LCP configure request (AutoPPP). 46 # mgetty has to be compiled with "-DAUTO^PPP" for this to work. 47 # Warning: Case is significant, AUTOPPP or autoppp won't work! 48 # Consult the "pppd" man page to find pppd options that work for you. 49 # 50 # NOTE: for *some* users; the "-detach" option has been necessary, for 51 # others, not at all. If your pppd doesn't die after hangup, try it. 52 # 53 # NOTE2: "kdebug 7 debug" creates lots of debugging info. If all works, 54 # remove those ! 55 # 56 /AutoPPP/ - ppp /usr/sbin/pppd auth -chap +pap login modem crtscts lock 57 proxyarp 58 59 # 60 # 61 # An example where no login name in the argument list is desired: 62 # automatically telnetting to machine "smarty" for a given login name 63 # 64 #telnet-smarty gast telnet /usr/bin/telnet -8 smarty 65 # 66 # This is the "standard" behavior - *dont* set a userid or utmp 67 # entry here, otherwise /bin/login will fail! 68 # This entry isn't really necessary: If it's missing, the built-in 69 # default will do exactly this. 70 # 71 * - - /bin/login @Листинг 16.4. Пример файла /etc/mgetty+sendfax/login.config
В строке 56 листинга 16.4 программе mgetty дается указание автоматически обнаруживать РРР-соединение. Все символы в файле конфигурации чувствительны к регистру, поэтому убедитесь в правильности задания заголовка /AutoPPP/ (он должен быть введен именно так, в противном случае mgetty не распознает его). Далее, как видите, эта строка содержит команду pppd в том виде, в котором она вводится при запуске из командной строки. Если до этого вы уже задали все необходимые параметры в файле конфигурации pppd, то здесь вы можете опустить их. Строка 71 является самой важной. В ней содержится инструкция о том, как поступать программе mgetty, если при установлении соединения не был принят сигнал, идентифицирующий РРР- или факсовое соединение. В этом случае mgetty решает, что это обычное терминальное соединение и передает управление программе login, которая выдает приглашение для входа в систему.
Следующим шагом к разрешению автоматического обслуживания РРР-соединений является обеспечение автоматической аутентификации с помощью идентификаторов пользователей и паролей. Возможно, вы уже обратили внимание, что в строке 56 листинга 16.4 для pppd задан параметр +pap. С его помощью программе mgetty указывается на необходимость использовать метод аутентификации РАР при установке РРР-соединения. Более детально этот метод аутентификации рассмотрен в "Протокол РРР" .
При применении аутентификации необходимо наличие файла паролей, где будут содержаться все имена и пароли пользователей, допущенных для входа на сервер электронной почты под управлением ОС Linux. По умолчанию это файл /etc/ppp/pap-secrets. Пример этого файла приведен в листинге 16.5.
1 # Secrets for authentication using PAP 2 # client server secret IP addresses 3 rich * guitar 192.168.1.100 4 barbara * aslsign 192.168.1.100 5 katie * boxcar 192.168.1.100 6 jessica * clifford 192.168.1.100Листинг 16.5. Пример файла /etc/ppp/pap-secrets
В каждой строке файла описывается один пользователь системы. Формат записи в файле следующий:
client server secret addresses,
где client — имя пользователя, server — сервер, к которому производится подключение, secret — пароль, который вводится в приглашении программного обеспечения для работы с удаленным клиентом, а addresses — это IP-адрес, используемый клиентом во время сеанса. Наличие символа "звездочка" ( * ) говорит о том, что клиент может подключаться к любым серверам, используя данное имя пользователя. Эта функция используется в основном в ситуации, когда клиент регистрируется на разных серверах с одним и тем же именем пользователя, но с различными паролями. В поле, где указывается IP-адрес, вы также можете оставить пропуск, если заранее не известно, какой адрес будет назначаться тому или иному удаленному клиенту (например, если имеется несколько параллельных телефонных линий, по которым он может устанавливать соединение).