ip route replace
$INET_IFACE
Если в interfaces я пишу:
up ip route add 192.168.0.0/24 via 192.168.0.1
То ppp0 поднимается, но шлюз прописывается на интерфейс venet0, а не ppp0.
Если в interfaces я пишу:
up ip route add 192.168.0.0/24 via 192.168.0.1 dev ppp0
То ppp0 не поднимается, нет такого интерфейса на тот момент.
Если в interfaces я пишу:
up ip route replace 192.168.0.0/24 via 192.168.0.1
То ppp0 не поднимается, нет такого правила на замену на тот момент.
Пока что у меня рабочий вариант такой, interfaces:
auto ppp0
iface ppp0 inet ppp
provider провайдер
ip-up.d/скрипт, который всё так же по неведомой причине выполняется только 1 раз на моей машине:
ip route add 192.168.0.0/24 via 192.168.0.1
В crontab прописан скрипт (раз в 1 минуту):
#!/bin/bash
ppp_up=$(/sbin/ifconfig | grep -o "ppp0")
ppp0_gw=$(/sbin/route | grep "ppp0" | grep "^192.168.0.0" | grep -o "192.168.0.1")
venet_gw=$(/sbin/route | grep "venet0" | grep "^192.168.0.0" | grep -o "192.168.0.1")
if [ "$ppp_up" = "ppp0" ]; then # если ppp0 соединение установлено
echo "ppp0 up"
if [ "$ppp0_gw" = "192.168.0.1" ]; then # если шлюз установлен правильно
echo "gw ok"
else # если шлюз установлен НЕправильно
echo "gw error"
if [ "$venet_gw" = "192.168.0.1" ]; then # если шлюз установлен НЕправильно на venet0
echo "gw wrong dev venet0"
ip route replace 192.168.0.0/24 via 192.168.0.1
else # если шлюз установлен НЕправильно
echo "gw not set"
ip route add 192.168.0.0/24 via 192.168.0.1
fi
fi
else
echo "ppp0 down"
fi