# Запитання і відповіді

&reporting.bugs;

## Питання щодо додзвону

Не можу змусити &kppp; працювати. &kppp; повідомляє мені, що програма pppd аварійно завершила роботу (died) і час очікування вичерпано. Що відбувається?

Ви уважно прочитали цей підручник? Ось ще раз найпоширеніші причини помилок:

- Натисніть кнопку Подробиці. &kppp; покаже вам частину з повідомлень журналу від PPP (ця можливість може не працювати на не-&Linux; системах або навіть у деяких дистрибутивах &Linux;). За допомогою журналу ви зможете виявити причину помилки.

- Переконайтеся, що pppd є справді виконуваним файлом pppd, а не якимось скриптом

- Переконайтеся, що файл програми pppd має атрибут setuid root. Вказати такий атрибут можна за допомогою команди ``chmod` `u+s pppd``, відданої від імені користувача root (адміністратора).

- Переконайтеся, що існує файл `/etc/ppp/options`, і що у цьому файлі немає суперечливих інструкцій. Якщо ви не певні, спорожніть цей файл.

- Переконайтеся, що ви не використовуєте параметр `lock` під час виклику pppd (програма &kppp; сама подбає про блокування пристрою).

- Вилучіть параметр `lock` з обох файлів, `/etc/ppp/options` і `˜/.ppprc`!

- Використання символічного посилання `/dev/modem` може спричинити певні конфлікти. Спробуйте позбутися цього джерела проблем за допомогою використання справжнього імені пристрою, тобто `/dev/cuaX` або `/dev/ttySX`.

  COM1 відповідає `ttyS0`, COM2 — це `ttyS1` тощо.

- Переконайтеся, що ви встановили належні правила доступу до файлів. Якщо виникатимуть проблеми, спробуйте запустити програму від імені користувача root, а згодом, якщо все працюватиме як треба, надайте програмі обмеженіший доступ, якщо ви не можете запускати &kppp; від імені root. Розпочати встановлення правил доступу, ймовірно, слід зі створення групи modem.

- Можливо, ви запустили pppd зарано, тобто до того, як віддалений сервер підготувався до встановлення з’єднання PPP. Якщо ви користуєтеся скриптом реєстрації, вам слід скористатися вбудованим терміналом для перевірки процедури вашої реєстрації. Деякі з серверів постачальників послуг потребують команди `Send` або `Send ppp` для запуску PPP. Деякі користувачі навіть повідомляли про те, що їм доводилося додавати команди `Pause 1` або `Pause 2` до власних скриптів, щоб розв’язати проблему часового конфлікту.

Якщо нічого з наведеного вище не допомагає, ви можете дістати деякі відомості для усування вад з системних журналів за допомогою команди:

    # tail /var/log/messages

Аварійне завершення (pppd died - The remote system is required to authenticate itself ...)

Типове повідомлення про помилку у системному журналі:

    pppd[699]: The remote system is required to authenticate itself
    pppd[699]: but I couldn't find any suitable secret (password) for it to use to do so.
    pppd[699]: (None of the available passwords would let it use an IP address.)

Наскільки відомо авторові цієї програми, у цієї проблеми може бути дві причини.

- `/etc/ppp/options` містить параметр `auth`. Просто поставте на початку відповідного рядка символ # і спробуйте з’єднатися ще раз.

- У вашій системі вже є типовий маршрут. Чи налаштовували ви локальну мережу? Якщо ви це робили, останні версії pppd будуть поводити себе так, наче ви вказали параметр `auth`. Щоб скасувати дію цього параметра додайте `noauth` до параметрів pppd у діалоговому вікні налаштування &kppp;. Крім того, ви можете вимкнути локальну мережу перед процедурою додзвону. Автор був би вдячний за настанови щодо того, як можна мирно сполучити ці два типи мережевих з’єднань.

pppd аварійно завершує роботу Linux з ядром 2.4.x

Типові повідомлення про помилку у системному журналі:

    pppd[1182]: pppd 2.3.11 started by user, uid 500
    pppd[1182]: ioctl(PPPIOCGFLAGS): Invalid argument
    pppd[1182]: tcsetattr: Invalid argument
    pppd[1182]: Exit.

Встановіть pppd 2.4.0b1 або пізнішу версію. Докладніші відомості можна отримати з розділу `Documentation/Changes` у каталозі вихідних кодів ядра.

Чому &kppp; повідомляє мені Unable to open the modem (Не можу відкрити модем)?

Це означає, що &kppp; не має дозволів на відкриття пристрою модема або той пристрій, який ви обрали на вкладці Модем діалогового вікна налаштування програми. Спочатку переконайтеся, що ви обрали правильний пристрій модема. Якщо ви певні, що обрали належний пристрій модема, вам слід надати &kppp; потрібні права доступу до пристрою модема, а також права на зміну файла `/etc/resolv.conf`, якщо ви бажаєте, щоб програма &kppp; коректно налаштовувала DNS. Якщо ви можете надати &kppp; адміністративні права (root), це вирішить всі проблеми з доступом, якщо в не бажаєте розбиратися, які дозволи потрібні у вашому випадку. Щоб надати програмі &kppp; права доступу root, виконайте такі команди:

    % su root
    # chown root:root &dollar;KDEDIR/bin/kppp
    # chmod +s &dollar;KDEDIR/bin/kppp
    # exit

Чому &kppp; повідомляє мені, що програма не може створити файл замка для модема?

Таке повідомлення у більшості випадків означає, що ви встановили &kppp; без прав доступу адміністратора (біта setuid), а ваш користувач, від імені якого запущено &kppp;, не має прав доступу на запис до теки файла блокування, типово, цією текою є `/var/lock`. Таке, наприклад, трапляється у системах &RedHat;. Точне розташування теки можна знайти у діалоговому вікні налаштування модема. Вирішення проблеми просте: або запускайте &kppp; з бітом setuid, якщо ви можете це дозволити у вашій системі, надайте звичайним користувачам право доступу на запис до теки `/var/lock` або створіть групу modem, користувачі якої матимуть доступ на запис до теки `/var/lock`.

Чому &kppp; встановлюється з увімкненим бітом setuid?

Потреби у біті setuid не буде, якщо ви хоч трохи знайомі з принципами адміністрування систем &UNIX;. Просто створіть групу modem, додайте до неї всіх користувачів, яким ви бажаєте надати доступ до модема і зробіть файл пристрою модема доступним на читання і запис для цієї групи. Якщо вам також потрібно, щоб у &kppp; працювало налаштування DNS, файл `/etc/resolv.conf` також має бути придатним для читання і запису для членів вашої групи modem. Те саме стосується і файлів `/etc/ppp/pap-secrets` та `/etc/ppp/chap-secrets`, якщо ви бажаєте скористатися вбудованою підтримкою PAP або CHAP, відповідно.

Команда &kppp; виконала великий обсяг роботи, щоб зробити &kppp; незалежним від setuid. Але саме вам вирішувати, чи встановлюватимете ви програму, і як саме ви її встановлюватимете.

Можливо, вам варто прочитати розділ Безпека.

Що мені робити, якщо &kppp; просто нічого не робить і очікує після виведення повідомлення: `Expecting OK`

Чи намагалися ви змінити параметр CR/LF? Спробуйте встановити різні значення: CR, LF або CR/LF.

Крім того, ймовірно, що для ініціалізації вашого модема потрібен певний час. Відкрийте діалогове вікно Команди модема на вкладці Модем і встановіть затримки перед ініціалізацією і після ініціалізації. Спочатку спробуйте радикально збільшити відповідні значення, а потім, якщо все буде добре, поступово зменшуйте значення.

З’єднання працює як годиться, але я не можу запустити жодної програми!

Ймовірно, ви позначили пункт Автоматичне налаштування назви вузла, і тепер сервер X має проблеми зі з’єднанням з вашим вузлом, назва якого змінилася. Якщо вам справді потрібен цей параметр (а є підстави вважати, що він не потрібен), на жаль, вам доведеться власноруч налаштовувати відповідні розпізнавання. Виконання команди ``xhost` `+`` перед початком процедури з’єднання виконає потрібну роботу, але пам’ятайте про небезпеку, яку несе ця команда, оскільки вона надає будь-кому доступ до вашого сервера X.

&kppp; повідомляє про успішне з’єднання, але &konqueror; показує повідомлення Unknown host назва вузла, а &Netscape; виводить сторінку з написом The server does not have a DNS entry.

Спробуйте надіслати луна-імпульс (ping) до іншого сервера за його IP-адресою, наприклад ``ping` `195.0.254.76``. Якщо все працюватиме як треба, ви можете спробувати виконати такі дії:

- Перевірте, чи повідомили ви &kppp; хоча б про одну адресу DNS.

- Перевірте вміст файла `/etc/host.conf`. У ньому має бути рядок, подібний до такого: `order hosts, bind`. Ключове слово `bind` радить бібліотеці визначення адрес вмикати під час виконання пошуку адреси запит до сервера імен. Якщо такого рядка у файлі немає, спробуйте його додати.

Як змусити &kppp; надіслати \n або \r?

Просто надішліть порожній рядок, такий, як у наведеному нижче скрипті:

    Send                            # надіслати порожній рядок
    Expect           ID:
    Send             itsme
    Expect           word:
    Send             forgot
    Expect           granted
    Send             ppp

Як мені запобігти появі повідомлень &kppp;: Can't create lock file (Не можу створити файл блокування)?

Причиною таких повідомлень є те, що ваш користувач не має дозволів на створення файла блокування. Якщо ви вказали, що слід використовувати файл блокування, вашому користувачеві потрібен дозвіл на запис до відповідної теки (зазвичай, `/var/lock`). Звичайно ж, це не є проблемою, якщо ви надали права доступу адміністратора програмі &kppp;. Будь ласка, прочитайте розділ щодо файлів блокування.

Чому мій модем працює так голосно під час з’єднання?

Натисніть кнопку Налаштувати, а потім позначку Модем. У відповідному діалоговому вікні ви можете встановити гучність динаміка вашого модема у три позиції: вимкнути, середня і висока. Для більшості модемів середня і висока гучність дають однакові результати. Якщо налаштування за допомогою повзунка не працюватиме, переконайтеся, що ви вказали правильні налаштування для вашого модема у вікні Налаштувати, Модем, Команди модема.

Я вимкнув (вимкнула) звук на модемі і перевірив (перевірила) команди модема, але все ще чую цей жахливий звук під час з’єднання. Чому?

Рядок ініціалізації гучності може бути втрачено, якщо ваш модем не може впоратися зі швидкістю, з якою до нього надходять команди від &kppp;. Збільште значення параметра Затримки після ініціалізації у вікні Налаштувати, Модем, Команди модема.

&kppp; постійно повідомляє про неймовірні швидкості модемного зв’язку на зразок 115200 або 57600

Значна кількість модемів, типово, повідомляють програмі лише про швидкість послідовного порту, а не про швидкість передавання даних телефонною лінією. Вам слід налаштувати такі модеми, щоб вони повідомляли про справжню швидкість лінії зв’язку додаванням певних команд до рядків ініціалізації або додзвону модема. У багатьох модемів цією командою буде команда `ATW2`. Якщо ви бажаєте додати цю команду до рядка додзвону (рядка, який зазвичай починається з `ATD`), новою командою додзвону має бути `ATW2D`.

Чому &kppp; повідомляє про Невідому швидкість?

Новітні модеми часто виводять дуже складі повідомлення про з’єднання на зразок `CONNECT LAP.M/V42.bis/115000:RX/31200:TX`, отже, &kppp; не може правильно їх обробити. Позначте пункт Показувати вікно журналу, і ви дізнаєтеся про швидкість з’єднання.

З’єднання занадто повільне

Якщо ви не задоволені швидкістю роботи модема, переконайтеся, що ви встановили швидкість з’єднання (доступ до відповідного пункту можна отримати натисканням кнопок Налаштувати, Пристрій, Швидкість з’єднання) у значення 57600 або вище. Переконайтеся, що послідовні порти вашого комп’ютера підтримую високі швидкості. Значна кількість застарілих системи на основі i486 не працюють належним чином, якщо ви встановите швидкість 115200. Якщо на комп’ютері встановлено застарілу мікросхему 8250 UART, вона не працюватиме. Якщо встановлено 16550 або 16550A, все має працювати.

Крім того, вам слід зазирнути до інструкції вашого модема і пошукати рядки ініціалізації високошвидкісного режиму.

Швидкість з’єднання на моєму комп’ютері ДУЖЕ мала!

Якщо дані надходять на ваш комп’ютер зі швидкістю декілька байтів на секунду, вам слід перевірити налаштування вашого обладнання. Якщо пересування вказівника миші підвищує швидкість передавання, проблеми точно пов’язано з вашим обладнанням!

Ви можете отримати відомості щодо послідовного порту вашого комп’ютера можна за допомогою команди ``setserial` `-a /dev/ttySx`` і перевірити, чи немає конфліктів переривань з іншими компонентами вашої системи.

Дзвінки моєю телефонною лінією слід здійснювати за допомогою імпульсного набору, а не тонового (або навпаки). Як змінити спосіб набору номера?

Вам слід змінити рядок набору номера вашого модема. Майже всі модеми підтримують такі AT-команди:

`ATDT`

  Визначає тоновий набір

`ATDP`

  Визначає імпульсний набір

## Питання щодо правил обліку телефонних рахунків

Як мені написати файл правил обліку телефонних рахунків власноруч?

Просто скористайтеся правилами шаблону з файла `TEMPLATE`, який постачається разом з &kppp;. Копію цього файла можна знайти у каталозі `$KDEDIR/doc/HTML/ваша_мова/kppp/`. Скористайтеся параметром командного рядка `-r`, переданим програмі &kppp;, щоб перевірити синтаксис створеного вами файла правил.

Я написав (написала) правила обліку телефонних рахунків для мого постачальника послуг. Куди слід надіслати ці правила, щоб ними могли користуватися інші люди?

Чи можуть у моєму файлі правил обліку телефонних рахунків міститися нецілі одиниці часу на зразок «(0.17, 45.5)»?

Так, такі числа можна використовувати. Але вам не слід використовувати надзвичайно малих одиниць часу, менших за десяту долю секунди, оскільки використання таких одиниць призведе до більшого навантаження на процесор, якого, втім, ви можете і не помітити на сучасних процесорах.

У моїй країні існують інші мандрівні свята, окрім Великодня.

У такому випадку, вам слід написати новий код, який надасть програмі змогу обчислювати дату цього свята. Будь ласка, зазирніть до коду у файлі `ruleset.cpp` і адаптуйте приклад easter. Після цього надішліть авторові латку!..

## Питання щодо системних журналів

Програма показує повідомлення Serial line is looped back (лінію послідовного передавання зациклено). Що це означає?

Коротка відповідь: ви не запустили програмне забезпечення PPP на системі вузла.

У журналі показано Signal 15

Якщо ви бачите подібні рядки у журналі, ймовірно, ваш комп’ютер отримав повідомлення про перевищення часу очікування від &kppp;. Програма &kppp; очікувала на підняття інтерфейсу PPP, вказаний час очікування минув, а інтерфейс не було піднято. Програма pppd отримала сигнал на завершення роботи з номером 15, тобто SIGTERM.

    pppd[26921]: pppd 2.3.5 started by me, uid 500
    pppd[26921]: Using interface ppp0
    pppd[26921]: Connect: ppp0 <--> /dev/ttyS0
    pppd[26921]: Terminating on signal 15.
    pppd[26921]: Connection terminated.
    pppd[26921]: Exit.

Як щодо Receive serial link is not 8-bit clean

Фоновій службі PPP нагадали про той факт, що всі дані, які вона отримує мають біт 8 встановлений у значення 0. У більшості випадків це просто означає, що віддалений сервер PPP ще не запущено. Ви також могли зіткнутися з запрошенням на введення ідентифікатора користувача, яке відлунює всі дані, надіслані вашим pppd.

і can't locate module ppp-compress? Що це означає?

Бачите наведені нижче повідомлення?

    modprobe: can't locate module ppp-compress-21
    modprobe: can't locate module ppp-compress-26
    modprobe: can't locate module ppp-compress-24

Просто додайте такі рядки:

    alias ppp-compress-21 bsd_comp
    alias ppp-compress-24 ppp_deflate
    alias ppp-compress-26 ppp_deflate

до вашого файла `/etc/conf.modules`.