CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Пингвин провайдер

Роман ЕПИШЕВ rtg@bk.ru

Хотелось ли вам хоть когда-нибудь стать провайдером? Представьте — вы выдаете кому-то логин, пароль, этот кто-то подключается... Давайте попробуем создать рабочий dial-up сервер, поддерживающий подключение Linux/Windows-машин как через терминал, так и в PPP-сессии.

Что нам нужно:

1. Модем, работающий в Linux;

2. Поддержка PPP в ядре;

3. PPPD (Point-to-Point Protocol Daemon) — демон PPP;

4. Mgetty.

Несколько замечаний. В комплект практически любого дистрибутива по умолчанию ядро входит с поддержкой PPP; если этой поддержки нет, PPPD не заработает. Мой модем подключен к ttyS0 (COM1) — обязательно узнайте, куда он подключен у вас. Настоятельно рекомендую либо во всех программах использовать символические ссылки типа /dev/modem, либо просто /dev/ttyS0, но не смешивать ссылки и файлы! Почему — узнаете далее. Практически все конфигурационные действия потребуется выполнять от имени root.

Для начала все установим и посмотрим, что к чему.

PPPD

Если вы уже входили в Интернет через Linux, то данный пакет у вас установлен. Если не уверены, тогда запустите (под любым пользователем):

Если вам скажут Not found или вообще ничего не скажут, то пакет PPP еще потребуется установить.

Mgetty

Эта программа будет отвечать у нас на входящие звонки. Это не единственная ее функция — еще она может принимать/отправлять факсы и даже работать с voice-модемом, как с автоответчиком. Mgetty можно найти на дисках вашего дистрибутива, в этом случае файлы конфигурации будут находиться в /etc/mgetty+sendfax. Также можно скачать исходники mgetty в Интернете: http://www.leo.org/~doering/mgetty. Если вы планируете пользоваться автоответчиком, последние очень будут кстати. Внимательно прочитайте все инструкции и соберите программу, в makefile в CFLAGS= обязательно допишите -DAUTO_PPP. В случае успешной сборки по умолчанию файлы конфигурации будут находиться в /usr/local/etc/mgetty+sendfax. С помощью вашего любимого текстового редактора открываем файл mgetty.config. Здесь мы поставим на максимум скорость доступа к модему (если ваш модем не поддерживает скорость 115200 бит/c, пропишите корректное значение):

и настройки порта:

Дальше идем в login.config, там находим строчку, начинающуюся с #/AutoPPP/ и снимаем с нее комментарий (убираем # вначале). Mgetty настроена и уже готова к тому, чтобы вы ее запустили. Теперь проверим, правильный ли порт выбран:

Если в течение примерно полминуты программа завершилась, значит, не все в порядке с настройками. Взгляните на файл /var/log/mgetty.log.ttyS0 (или mgetty.ttyS0) и проверьте последние записи — возможно, там будет описание ошибки. В идеальном случае программа не должна завершаться вообще (без помощи Ctrl+C). Но таким образом получить dial-in соединение не получится — mgetty не сможет нормально контролировать порт и вылетит при первом же звонке. Поэтому, как и сказано в инструкции, запуск программы будет происходить через /etc/inittab.

В конце данного файла допишите:

или

в зависимости от того, где лежит исполняемый файл mgetty. (-n 3 означает, что модем будет «брать трубку» после третьего звонка)

Все, теперь вам осталось сохранить inittab и скомандовать:

Теперь init увидит изменения.

На этом этапе у вас должно заработать простое соединение.

Терминальный доступ

Создайте полноценного пользователя (например, dialup), который будет подключатся через модем. Измените ему пароль (passwd dialup) и передайте эти сведения своему «клиенту». Тот со своей машины в Hyper-Terminal'е дозвонится к вам и получит рабочую Linux-консоль (Рис. 1). Теперь он является полноправным пользователем вашей машины. Будьте внимательны — если до этого вы не беспокоились о правах пользователей и не контролировали доступ, сейчас самое время изменить свое отношение к безопасности файлов на своем компьютере. Также советую установить пароли на вход всех пользователей и особенно root, ведь одно неверное движение... Также советую просматривать системные логи, хранящиеся в /var/log — там можно найти очень много полезной информации о системе: кто и откуда входил в систему, какие были сообщения ядра и т.д. Заходите, не пожалеете.

Рис. 1.

Уверен, что вам захочется поговорить с подключенным пользователем. Для этих целей будем использовать talk. Синтаксис команды таков:

Окно терминала разделится на две части, и, если ваш пользователь запустит talk <ваше имя>, вы сможете вести разговор. Для того чтобы заработал talk, нужно установить 2 пакета —talk и talk-server, после чего включить запуск сервиса в xinetd. С последним пунктом поступаем так: идем в /etc/xinetd.d и открываем файл talk. Изменяем параметр disable=yes на disable=no, и при следующем перезапуске xinetd talk начнет ожидание входящих соединений.

Если вы хотите, чтобы удаленный пользователь мог что-то скачивать или закачивать на ваш компьютер, нужно установить пакет с веселым названием lrzsz, в котором находятся утилиты для передачи файлов по протоколам X/Y/ZModem. Использовать мы будем только последний (поддержка докачки), а для того чтобы пользователь не утруждал себя запоминанием строчки:

создадим скриптик:

сохраним его как dl, сделаем исполняемым (chmod +x dl) и положим в /usr/local/.

Теперь, если юзер увидит файл и захочет его скачать, он просто наберет:

(Разумеется, если /usr/local/bin будет присутствовать в переменной окружения $PATH), после чего запрошенный файл медленно (это же модем!) перетечет на его компьютер. Параметр -b указывает, что данные нужно передавать в двоичном виде, а -r позволяет докачивать файл после разрыва.

Чтобы закачать файл на ваш сервер, потребуется выполнить такую команду:

После этого терминал как бы зависнет, ожидая начала передачи.

Сейчас все сетевые операции происходят через lo-интерфейс вашей системы, поэтому настройки firewall'а изменять нет необходимости; но как только мы сконфигурируем PPPD, вам потребуется разрешить соединения с адреса, который вы присвоите своему пользователю.

PPP-доступ

Полагаю, что его используют большинство наших провайдеров. Настала и ваша очередь.

Предположим, что PPPD уже установлен. Тогда начнем его конфигрурировать. Переходим в папку /etc/PPP.

В конец файла pap-secrets дописываем такое:

(звездочка звездочка две_кавычки звездочка)

что значит: «позволить любому зарегистрированному пользователю подключатся к серверу, не думая о пароле и IP-адресе».

Теперь осталось присвоить вам и вашему пользователю IP-адреса. Их можно задать, например в файле options в виде ваш_IP:IP_клиента, т.е. 192.168.1.1:192.168.1.254. Вы можете присваивать абсолютно любые адреса. Внимание! Если вы собираетесь через данный компьютер выходить в Интернет, перед выходом обязательно уберите эти настройки IP-адресов, т.к. при подключении к провайдеру ваша система попытается сама присвоить адреса. Серверу это не понравится, и Интернета не будет. Самый простой выход — создать скрипт:

и сохранить его в /usr/local/sbin/dialin, права на использование дать только root'у (chmod 0700 dialin). Запускать этот скрипт root'ом до выхода в сеть с параметром off, а если нужно, то разрешить входящие соединения —dialin on (наличие файла /etc/nologin.ttyS0 сигнализирует mgetty о том, что трубку брать не требуется). Теперь вот еще что: в ваших настройках интернет доступа обязательно должен быть включен пункт Использовать lock-файл, или же в /etc/PPP/options должен значиться параметр lock. Если вы этого не сделаете, в Интернет через модем вы опять же не попадете — программа дозвона начнет набирать номер, mgetty заметит, что с модемом что-то не то, и заново переинициализирует его. В итоге никто не получит эксклюзивных прав доступа к модему. Если lock-файл будет создан (где-то в /var/lock) с именем LCK..ttyS0, mgetty не будет обращаться к модему до момента снятия блокировки. В начале статьи я предупредил, что не надо в одной программе ставить /dev/ttyS0, а в другой —/dev/modem. Файл LCK..modem скажет mgetty, что использовать /dev/modem нельзя, он ведь использует /dev/ttyS0, а значит — «никаких проблем». Это также применимо и к другим программам, работающим с модемом (minicom, например).

Ну вот, теперь уже от удаленного пользователя требуется создать удаленное соединение, установить в качестве типа сервера PPP (не SLIP!); из протоколов оставляем только TCP/IP, выбрать IP-адрес назначается сервером, логин и пароль остались прежними.

Подключение

Предположим, у вас установлен Apache — тогда, подключившись и набрав http://192.168.1.1, юзер получит вашу страничку (Рис. 2). В Apache можно выставить опцию Indexes, чтобы список файлов генерировался автоматически. Файлы теперь можно скачивать, используя различные менеджеры закачек (FlashGet, ReGet, wget), без вашего непосредственного участия. Еще можно поговорить с подключившимся, но для этого потребуется разрешить входящие соединения на 23 порт и установить пакет telnet-server. Для включения сервиса telnet вам потребуется произвести изменения в файле /etc/xinetd.d/telnet (см. настройку talk) — если firewall не будет препятствовать, удаленный пользователь с помощью telnet сможет войти в вашу систему и там уже запустить talk. Если во время разговора будут передаваться файлы, это заметно скажется на скорости передачи букв, задержки будут до нескольких секунд (в зависимости от линии и модемов), но главная же задача — файл передать!

Рис. 2.

Дополнительно

Благодаря такой схеме не составит большого труда администрировать ваш компьютер с любого другого. Только внимание: в файле /etc/securetty находится список устройств (без /dev/), через которые разрешен вход root'а — последний по умолчанию может входить в систему только с локальных терминалов (если и вовсе удалить этот файл, то будет разрешен вход с ЛЮБОГО устройства; чтобы запретить вход root’а, потребуется удалить все записи из файла). Если вы захотите стать суперпользователем, вам сначала придется войти как простой пользователь, а потом исполнить команду su.

Выражаю благодарность Оксане Журавлевой за помощь в подготовке статьи.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov