Задача: сделать так, чтобы «дефолтный шлюз» заменялся
после установления соединения по модему,
а после дисконнекта — восстанавливался.
/etc/ppp/ip-up выполняется после поднятия интерфейса,
/etc/ppp/ip-down — после опускания.
/etc/ppp/ip-*.dns заменяют /etc/resolv.conf,
и скопированы из примеров pppd, поэтому здесь не приведены.
/etc/ppp/ip-up:
1 #!/bin/bash
2
3 IFACE=$1
4
5 . /etc/ppp/ip-up.dns
6 . /etc/ppp/ip-up.gw
7
/etc/ppp/ip-down:
1 #!/bin/bash
2
3 . /etc/ppp/ip-down.dns
4 . /etc/ppp/ip-down.gw
5
/etc/ppp/ip-up.gw:
1
2 gw=$(/sbin/ip route | grep ^default)
3 if [ -n "$gw" ]; then
4 echo "$gw" > /etc/ppp/gateway.prev
5 /sbin/ip route del default
6 /sbin/ip route add default dev $IFACE
7 fi
8 # If default route is not present, pppd adds it automatically
9
/etc/ppp/ip-down.gw:
1
2 /sbin/ip route del default
3
4 if [ -f "/etc/ppp/gateway.prev" ]; then
5 /sbin/ip route add $(cat /etc/ppp/gateway.prev)
6 rm -f /etc/ppp/gateway.prev
7 fi
8