LINUX.ORG.RU
решено ФорумAdmin

добавление роута после разрыва связи

 , ,


0

1

Профи, подскажите как быть.
Сервер Debian 6.0.
В него подключен 3G модем (соединение с интернетом - ppp0), далее подключаемся через VPN к другому серверу (поднимается ppp1) и добавляем маршрут на подсеть 192.168.10.0/24 через этот новый ppp1 интерфейс.

Тут всё достаточно просто. А теперь вопрос.

Пропадает связь. Валится VPN интерфейс а с ним пропадает роут на удалённую подсеть. Когда VPN восстанавливается, а у него в настройках прописано persist, то нужно бы вновь прописать маршрут на удалённую подсеть. Но этого не происходит.
Скрипты up/down post-up/pre-down из interfaces выполняются только разово при запуске или остановке интерфейса. Из /etc/network/if-up.d тоже разово.

Как быть? Что делаю не так? Вроде же задача простая.

# cat /etc/ppp/peers/am

pty «pptp xx.xx.xx.xx --nolaunchpppd»
lock
noauth
nobsdcomp
nodeflate
require-mppe
persist
maxfail 0
holdoff 10
lcp-echo-interval 30
lcp-echo-failure 5
name am
remotename am
ipparam am

# cat /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual

# Bridge
auto br0
iface br0 inet static
    address 192.168.1.5
    netmask 255.255.255.0
    #gateway 192.168.1.1
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0
    
# Internet
auto mts
iface mts inet wvdial
    provider mts
    post-up /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    pre-down /sbin/iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
    
# VPN
auto am
iface am inet ppp
    provider am
    up /sbin/route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.90.1 dev ppp1


-up /sbin/route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.90.1 dev ppp1
+post-up /sbin/route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.90.1 dev ppp1

попробуй так

uspen ★★★★★
()
Ответ на: комментарий от uspen

Пробавал я и up и post-up.
На самом деле они так быстро отрабатывают, что VPN соединение ещё только устанавливается, а в консоль уже валится ответ:

# ifup am
SIOCADDRT: No such process
Failed to bring up am.
Всё тю-тю. Маршрутов. По мнению системы интерфес не запустился.
# ifdown am
ifdown: interface am not configured
Хотя он запущен. И опустить его можно командой poff:
# poff am
# poff am
/usr/bin/poff: I could not find a pppd process for provider 'am'. None stopped.
Выкрутился тем, что написал в /etc/network/if-up.d такой вот костыль:
# cat /etc/network/if-up.d/routes-ppp1
#!/bin/sh
if [ «$IFACE» = am ]; then
    sleep 5
    /sbin/route add -net 192.168.10.0 netmask 255.255.255.0 dev ppp1
    exit 0
fi
exit 0
Это хоть позволяет запустить его без ошибок.
А теперь вспомним, что скрипты _не_выполняются_ при автоматическом переподключении, которое инициирует pppd. Короче, проблема всё ещё актуальна :)

init3
() автор топика
Ответ на: комментарий от init3

Нашёл решение.
Скрипт с маршрутами нужно класть не в /etc/network/if-up.d а в /etc/ppp/if-up.d
Положил туда
# cat /etc/ppp/if-up.d/routes-ppp1

#!/bin/sh
if [ «$1» = ppp1 ]; then
    /sbin/route add -net 192.168.10.0 netmask 255.255.255.0 dev ppp1
    exit 0
fi
exit 0
И всё заработало как задумано.

init3
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.