Персональный
сайт
Игоря
Сысоева


 
english
обо мне
 
sysoev.ru
 
nginx
 
mod_accel
mod_realip
mod_deflate
программирование
всякая всячина
windows
freebsd
apache
pppd
unix
web
 
 

Dial on demand или соединение по требованию

 

16.06.1999

И, наконец, последний способ соединения — установление соединения по требованию (dial on demand):

pppd cuaa0 57600 lock connect '/etc/ppp/dial'           \
        demand 192.168.10.200:192.168.10.1              \
        idle 120 holdoff 5                              \
        defaultroute noipdefault debug

Параметр demand указывает pppd при запуске присвоить интерфейсу ppp0 адрес 192.168.10.200 и установить default route на адрес 192.168.10.1, создавая иллюзию соединения. Всё это Вы можете проверить с помощью команды netstat. Но при этом pppd не будет пытаться установить соединение. Только когда на адрес 192.168.10.1 кто-либо пошлёт IP-пакет, pppd начнёт звонить и установит реальное соединение. Параметр idle 120 указывает pppd разорвать реальное соединение, если в течение 120 секунд по линии ничего не передавалось. Иллюзия соединения, тем не менее, остаётся. Как и в режиме постоянного соединения, параметр holdoff 5 указывает pppd возобновить попытку соединиться через 5 секунд после обрыва соединения. Однако, если разрыв произошёл из-за простоя линии, pppd игнорирует это указание.

В принципе, этот вариант запуска можно поместить в файл /usr/local/etc/rc.d/pppd.sh, тогда он будет запускаться при загрузке системы.

Во FreeBSD 3.x и выше эту строку лучше записать в файл /etc/start_if.ppp0.

В нашем примере провайдер выделил нам статический адрес. Если Вам не повезло и у Вас динамически выделяемый адрес, Вы можете опустить локальный адрес:

pppd cuaa0 57600 lock connect '/etc/ppp/dial'           \
        demand :192.168.10.1                            \
        idle 120 holdoff 5                              \
        defaultroute debug

В этом случае, в качестве адреса интерфейса ppp0 pppd выберет один из адресов, назначенных данному компьютеру, или 0.0.0.0, если таких адресов нет:

Name  Mtu   Network  Address    Ipkts Ierrs    Opkts Oerrs  Coll
...
ppp0  1500  <Link>                  0     0        0     0     0
ppp0  1500  0        0.0.0.0        0     0        0     0     0
...

Но такой способ соединения имеет существенный недостаток — если при повторном соединении адрес изменится, то существующие TCP-соединения будут разорваны.

(C) Игорь Сысоев
http://sysoev.ru