16.06.1999, © Igor Sysoev, igor@nitek.ru

 

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

 

И, наконец, последний способ соединения - установление соединение по требованию (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, тогда он будет запускаться при загрузке системы.

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

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-соединения будут разорваны.