Как только связь PPP установлена, pppd ищет /etc/ppp/ip-up. Если этот сценарий
существует и может выполняться, PPP демон выполняет скрипт. Он позволяет вам
автоматизировать любые специальные команды маршрутизации, которые могут вам
понадобиться, и любые другие действия, которые вы хотите выполнить при
активизации PPP соединения.
Это только скрипт shell, и он может делать все, что может делать скрипт shell
(то есть фактически все что вы хотите).
Например, вы можете заставить sendmail послать исходящую почту, стоящую в
очереди.
Точно так же вы можете вставить команды в ip-up для забора почты
(используя POP), ждущий вас на вашем ISP.
Имеются ограничения на /etc/ppp/ip-up:
Он выполняется в преднамеренно ограниченном окружении, чтобы усилить защиту.
Это означает, что вы должны указыва полный путь к запускаемым файлам и т.д.
Технически /etc/ppp/ip-up - это программа, а не скрипт. Это означает, что он
может быть непосредственно выполнен - и следовательно требуется стандартный
магический файл (#!/bin/bash) в начале первой строки скрипта и он должен быть
читаем и выполним пользователем root.
Если вы связываете две LAN, вы будете должны установить специфические маршруты
к 'посторонним' LAN. Это легко выполняется, используя скрипт /etc/ppp/ip-up.
Единственая трудность возникает, если ваша машина работает с несколькими PPP
соединениями.
Это потому, что /etc/ppp/ip-up выполняется для КАЖДОГО ppp соединения, которое
устанавливается, так что вы должны тщательно выполнить правильные команды
маршрутизации для определенного устанавливаемого соединения - и не выполнять
их, когда устанавливается любое другое соединение!
Когда появляется связь между двумя LAN, вы можете захотеть удостовериться, что
почта, которая поставлена в очередь на обоих концах соединения, отправлена
адресату. Это выполняется добавлением соответствующего вызова sendmail.
Для этого используется выражения bash 'case' для соответствующего параметра,
передаваемого скрипту, запукающему pppd. Например вот скрипт /etc/ppp/ip-up,
который я использую, чтобы обработать наши WAN соединения и связь с моей LAN
ethernet (также обрабатывемую на том же самом ppp сервере).
Пример ниже обеспечивает ряд примеров использования.
______________________________________________________________________
#!/bin/bash
#
# Скрипт, выполняющий при необходимости задачи маршрутизации для pppd
# Только связь с Newman требует такой обработки.
#
# Когда ppp связь установлена, этот скрипт вызывается со следующими
# параметрами
# $1 имя интерфейса, используемое pppd (напр. ppp3)
# $2 имя устройства tty
# $3 скорость устройства tty
# $4 локальный IP адрес для интерфейса
# $5 удаленный IP адрес
# $6 параметр, указанный опцией 'ipparam' в pppd
#
case "$5" in
# Обработка маршрутизации для сервера Newman Campus
202.12.126.1)
/sbin/route add -net 202.12.126.0 gw 202.12.126.1
# and flush the mail queue to get their email there asap!
/usr/sbin/sendmail -q &
;;
139.130.177.2)
# Наше Internet соединение
# когда вязь будет установлена, запустить сервер времни и синхронизировать с
# миром. Предполагается, что он еще не запущен
if [ ! -f /var/lock/subsys/xntpd ]; then
/etc/rc.d/init.d/xntpd.init start &
fi
# Запуск сервера новостей (если еще не запущен)
if [ ! -f /var/lock/subsys/news ]; then
/etc/rc.d/init.d/news start &
fi
;;
203.18.8.104)
# Скачать почту на мою домашнюю машину при установлении связи
# Маршрутизция не требуется, так как мой домашний Ethernet обрабатывается IP
# masquerade и proxyarp маршрутизацией.
/usr/sbin/sendmail -q &
;;
*)
esac
exit 0
______________________________________________________________________
В результате поднятия ppp линка с нашим университетским городком Newman и
выполнения этого сценария, мы получаем таблицы маршрутизации со следующими
записями (эта машина явялется также нашим общим PPP сервером, и обрабатывает
нашу связь с Интернет). Я разнообразил комментарии в выводе, чтобы помочь
объяснить, чем является каждая запись):
______________________________________________________________________
[root@kepler /root]# route -n
Kernel routing table
Destination Gateway Genmask Flags MSS Window Use Iface
# HOST маршрут на наш удаленный шлюз в Интернет
139.130.177.2 * 255.255.255.255 UH 1500 0 134 ppp4
# HOST маршрут на наш Newman сервер студенческого городка
202.12.126.1 * 255.255.255.255 UH 1500 0 82 ppp5
# HOST маршрут на мой домашний ethernet
203.18.8.104 * 255.255.255.255 UH 1500 0 74 ppp3
# две наши основные коммутируемые PPP линии
203.18.8.64 * 255.255.255.255 UH 552 0 0 ppp2
203.18.8.62 * 255.255.255.255 UH 552 0 1 ppp1
# специальный сетевой маршрут в Newman LAN студенческого городка
202.12.126.0 202.12.126.1 255.255.255.0 UG 1500 0 0 ppp5
# маршрут в наш локальный Ethernet (суперсеть из двух сетей класса C)
203.18.8.0 * 255.255.254.0 U 1500 0 1683 eth0
# маршрут в устройство loop back
127.0.0.0 * 255.0.0.0 U 3584 0 483 lo
# маршрут по умолчанию в Internet
default 139.130.177.2 * UG 1500 0 3633 ppp4
______________________________________________________________________
Предыдущий раздел показывает, как обработать исходящую почту - просто,
очисткой (flushing) почтовой очереди, если связь установлена.
Если вы делаете WAN связь, то вы можете договориться с сетевым администратором
удаленной LAN, чтобы cделать то же самое. Например, настройка нашей стороны WAN
связи с Университетским городком Newman в файле /etc/ppp/ip-up выглядит так:
______________________________________________________________________
#!/bin/bash
#
# Скрипт, который занимается проблемами маршрутизации по мере
# необходимости для pppd
# Только связь с Hedland требует этой обработки.
#
# Когда связь ppp появляется, этот скрипт вызывается со следующими параметрами
# $1 имя интерфейса, используемого pppd (например ppp3)
# $2 имя устройства tty
# $3 скорость устройства tty
# $4 локальный IP адрес для интерфейса
# $5 удаленный IP адрес
# $6 параметр, указанный опцией 'ipparam' в pppd
#
case "$5" in
203.18.8.4)
/usr/sbin/sendmail -q
;;
*)
esac
exit 0
______________________________________________________________________
Если однако вы имеете с вашим ISP только динамический IP адрес по PPP связи,
вы должны получать ваш email с аккаунта на машине вашего ISP. Это обычно
делается с использованием POP (Протокол Почтового отделения). Этот процесс
может быть выполнен, используя программу 'popclient', - а ip-up скрипт может
автоматизировать этот процесс!
Просто создайте сценарий /etc/ppp/ip-up, который содержит соответствующий вызов
popclient. Для моей портативной ЭВМ, на которой работает Red Hat Linux
(которую я беру в любые путешествия), это
______________________________________________________________________
popclient -3 -c -u hartr -p <password> kepler.hedland.edu.au |formail -s procmail
______________________________________________________________________
Вы могли бы использовать slurp или что-то еще, чтобы сделать это же самое для
новостей и т.д. Помните, скрипт - это только стандартный скрипт bash и может
использоваться так, чтобы автоматизировать ЛЮБУЮ функцию, которую нужно
выполнять каждый раз при установлении соответствующей PPP связи.
Вперед
Назад
Содержание