Від точки А до точки Б

Від точки А до точки Б. або що таке РРР

Закінчення. Початок у N№ 35, 36

Встановлюємо РРР з'єднання вручну

Тепер, коли ми створили файли /etc/ppp/options та /etc/resolv.conf, а також, у разі потреби, /etc/ppp/pap(chap)-secrets, ми можемо перевірити правильність налаштувань цих файлів, встановивши РРР з'єднання зі своїм сервером вручну. Як тільки ми переконаємось, що все працює, ми автоматизуємо цей процес. Щоб зробити це, Ваша комунікаційна програма повинна мати можливість завершення роботи без зміни режиму роботи модему. Minicom може робити це при натисканні клавіш (або для старих версій програми).

Увійдіть у систему як користувач root.

Тепер вийдіть із комунікаційної програми без скидання модему та введіть наступну команду:

pppd -d -detach /dev/ttySx 38400 &

Ключ -d включає режим налагодження, вся інформація, що проходить через послідовний порт, зберігатиметься у log-файлі. Це може бути корисним, якщо Ви зіткнетеся з проблемами.

Світлові індикатори на модемі (зовнішньому, зрозуміло) повинні блимати, і незабаром РРР-з'єднання буде встановлено. Тепер можна подивитися на Ваш РРР інтерфейс за допомогою команди:

На додаток до мережних контролерів та пристрою loopback, має з'явитися новий мережний інтерфейс:

ppp0 Link encap:Point-to-Point Protocol

inet addr:10.144.153.104 P-t-P:10.144.153.51 Mask:255.255.255.0

UP POINTOPOINT RUNNING MTU:552 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0

TX packets:0 errors:0 dropped:0 overruns:0

Якщо Ви не бачите нового мережевого пристрою або бачите щось подібне:

ppp0 Link encap:Point-Point Protocol

inetaddr:0.0.0.0 P-t-P:0.0.0.0 Mask:0.0.0.0

POINTOPOINT MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0

TX packets:0 errors:0 dropped:0 overruns:0

то Вам не вдалося встановити РРР з'єднання.

Якщо все працює нормально, можна переглянути таблиці маршрутизації за допомогою команди:

Kernel routing table

Destination Gateway Genmask Flags MSS Window Use Iface

10.144.153.3 * 255.255.255.255 UH 1500 0 1 ppp0

127.0.0.0 * 255.0.0.0 U 3584 0 11 lo

10.0.0.0 * 255.0.0.0 U 1500 0 35 eth0

default 10.144.153.3 * UG 1500 0 5 ppp0

Якщо Ви не бачите таблиці маршрутизації з двома маршрутами для РРР, то канал не працює. Наприклад, якщо РРР пристрій не "підхопив" маршрут за замовчуванням, defaultroute, і цей маршрут, як і раніше, належить Ethernet адаптеру. МОЖЕ ІСНУВАТИ ТІЛЬКИ ОДИН МАРШРУТ ЗА УМОВЧАННЯМ. Перевірте системні файли, пошукайте налаштування маршруту defaultroute (вона має вигляд команди: route add default..) Змініть її таким чином: route add net.

Тепер протестуємо наш канал зв'язку командою ping:

На екрані з'явиться результат виконання цієї програми:

PING 195.50.0.161 (195.50.0.161): 56 data bytes

64 bytes від 195.50.0.161: icmp_seq=0 ttl=124 time=199.9 ms

64 bytes від 195.50.0.161: icmp_seq=1 ttl=124 time=198.8 ms

64 bytes від 195.50.0.161: icmp_seq=2 ttl=124 time=234.8 ms

64 bytes від 195.50.0.161: icmp_seq=3 ttl=124 time=184.4 ms

64 bytes від 195.50.0.161: icmp_seq=4 ttl=124 time=162.1 ms

64 bytes від 195.50.0.161: icmp_seq=5 ttl=124 time=175.2 ms

64 bytes від 195.50.0.161: icmp_seq=6 ttl=124 time=162.0 ms

Нові рядки можуть з'являтися вічно, тому Ви можете перервативиконання програми, натиснувши знамениту комбінацію клавіш . Програма відрапортує:

-- 195.50.0.161 ping statistics --7 packets transmitted, 7 packets received, 0% packet loss

round-trip min/avg/max = 162.0/188.1/234.8 ms

PING sunsite.unc.edu (152.2.254.81): 56 data bytes

64 bytes від 152.2.254.81: icmp_seq=0 ttl=242 time=1031.0 ms

64 bytes from 152.2.254.81: icmp_seq=1 ttl=242 time=1175.1 ms

64 bytes від 152.2.254.81: icmp_seq=2 ttl=242 time=1079.1 ms

64 bytes від 152.2.254.81: icmp_seq=3 ttl=242 time=1053.3 ms- sunsite.unc.edu ping statistics -6 packets transmitted, 4 packets received, 33% packet lossround-trip min/av0 1175.1 ms

Якщо все працює добре, можна вимкнути РРР з'єднання командою:

Після короткої паузи модем має вимкнутись. Якщо не спрацює, можна вимкнути електроживлення модему або, знову запустивши комунікаційну програму, передати модему команди "+++" та "ATH0". Можливо, Вам доведеться видалити lock-файли, створені pppd при його роботі:

rm -f /var/lock/LCK..ttySx

Автоматизуємо процес з'єднання

Як тільки ми успішно з'єдналися з сервером РРР вручну, можна спробувати налаштувати програми для автоматичного з'єднання. Після цього будь-який користувач із групи ррр або root зможе керувати каналом зв'язку, виконуючи необхідні команди.

Якщо програма РРР встановлена ​​коректно, Ви можете знайти кілька файлів-шаблонів програм для управління ррр. Для РРР версії 2.1.2 вони перебувають у каталозі /usr/sbin, а РРР версії 2.2 - у каталозі /etc/ppp/scripts. Вони називаються:

Тепер, якщо Ви використовуєте РРР версії 2.1.2, я рекомендую видалити ці файли. Це потенційна можливість виникненняпроблем у Вашій системі, і не потрібно запевняти мене, що вони чудово працюють. До Ваших послуг тут найновіші версії цих файлів, які працюють краще.

Це перший скрипт, який встановлює з'єднання.

# Програма для запуску РРР з'єднання. Це перша частина

# Це параметри, які потрібно змінити:

ACCOUNT=george # ім'я для підключення

PASSWORD=gracie # пароль для підключення

# можна залишити 0.0.0.0

NETMASK=255.255.255.0 # відповідна маска підмережі

# Експортуємо їх, щоб вони могли використовуватись іншими

EXPORT TELEPHONE ACCOUNT PASSWORD

# Це шлях до другої частини скрипту, яка

# Будь ласка, використовуйте повний шлях до цього файлу

exec/usr/sbin/pppd debug /dev/ttySx 38400 \

# Це друга частина програми,

ABORT '\nNO ANSWER\r' \

Chat скрипт - це послідовність "очікуваних повідомлень" і "повідомлень, що відправляються", які згруповані попарно. Врахуйте, що ми ЗАВЖДИ чекаємо чогось перед тим, як відправити черговий рядок. Якщо ми хочемо надіслати дані, не чекаючи запиту, ми використовуємо "порожній рядок" очікування (''). Якщо рядок містить кілька слів (наприклад, NO CARRIER), ми повинні взяти його в лапки.

Насамперед відбувається виклик програми /usr/sbin/chat, ключ "-v" забезпечує запис ВСЬОГО введення-виведення в системний лог-файл, зазвичай це файл /var/log/messages. Коли канал запрацює нормально, видаліть цей ключ "-v", щоб не засмічувати цей файл зайвими повідомленнями.

Далі встановлюється параметр часу очікування на введення інформації в три секунди. Це значення можна збільшити до 5-10 секунд, якщо Ви використовуєте повільний модем.

Наступний рядок програми говорить про те, що ми очікуємо на відповідь модему "ОК", але, вякщо модем перебуває у режимі передачі і не видає очікуваного відповіді, відправляємо йому команду переходу у режим команд "+++" (ця команда може застосовуватися всім Hayes - сумісних модемів) і знову очікуємо відповіді модему "ОК" і даємо йому команду "скидання" - ATH0.

Чекаємо на реакцію модему "CONNECT", яка приходить після відповіді викликаного модему, і не відправляємо модему жодних команд, але терпляче чекаємо запрошення на вхід до системи "ogin:". Якщо до часу очікування нічого не приходить, відправляємо символ "повернення каретки" і чекаємо далі. Отримавши очікуване, надсилаємо в лінію своє ім'я, яке зберігає змінна $ACCOUNT. У відповідь на запрошення ввести пароль (assword:) посилаємо його (він зберігається в змінній $PASSWORD). Якщо РРР сервер використовує протокол РАР/СНАР для ідентифікації користувачів, ppp-on-dialer скрипт буде коротшим на два останні рядки.

Цей ppp-on-dialer скрипт чудово працюватиме з серверами, які автоматично запускають ррр відразу після Вашого підключення. Але є сервери, при підключенні до яких потрібно запускати програму ррр вручну. У цьому випадку слід додати ще один, останній рядок у скрипт:

Тут пара "user-user" замінюється Вашим іменем користувача, а "ррр" - команда запуску ррр на сервері. Стандартний рядок підказки, який видається сервером після успішного підключення, має містити Ваше ім'я, під яким Ви зареєстровані на сервері свого провайдера. Крім нього, цей рядок може містити деякі спеціальні символи (наприклад "[", "]" або "$"), які мають особливе значення для шелла, і використовувати їх у нашому скрипті не рекомендується.

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

На жаль, різні сервери можуть по-різному формувати "рядок підказки", на який ми очікуємо, тому слід звернути увагу на її вигляд при тестуванні ррр каналу зв'язку вручну.

Для PPP-2.2 скрипт ppp-off має такий вигляд:

# Визначення пристрою, що відключається.

# Якщо файл процесу pppіснує, значить програма

# працює. Зупиняємо її.

if [-r /var/run/$DEVICE.pid]; then

kill -INT 'cat /var/run/$DEVICE.pid'

# Якщо процес з таким номером не існує, його вбити

# неможливо. Це може означати, що зберігся lock

файл, який потрібно видалити.

rm -f /var/run/$DEVICE.pid

echo "ERROR: Removed stale pid file"

# Успішне завершення. pppd сам видалить свої робітники

echo "PPP link to $DEVICE terminated."

# Процес ррр не активний на цьому пристрої

echo "ERROR: PPP link не є активним на $DEVICE

Як ми вже знаємо, можна запустити ррр у режимі налагодження з ключем "-d" або включити параметр "debug" для того, щоб отримати повний протокол всіх подій, що відбуваються на нашому каналі зв'язку і зберегти інформацію, яку приймає та передає модем у спеціальному log- файл. Не забувайте, що файл буде зростати дуже швидко, і якщо на жорсткому диску є обмежений вільний простір, існує можливість зведення цього вільного простору до нуля. Як тільки ми з радістю переконаємось, що все працює нормально, режим налагодження можна вимкнути.