Пример настройки dir-320 на использование Yota и резервного кабельного провайдера.
При падении wimax0 скрипт 1) переписывает маршрут по умолчанию 2) заменяет NAT шлюз 3) переписывает адреса DNS серверов и наоборот.
Кабельный пров даёт статику.
Более подробно описано в комментариях.
$ cat /tmp/local/opt/etc/madwimax/event.sh
#!/bin/sh
# Usage: event.sh <event> <if-name>
case "$1" in
if-create)
iptables -I FORWARD -o "$2" -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
;;
if-up)
route delete default #удаляем шлюз по умолчанию
udhcpc -b -p /var/run/udhcpc."$2".pid -i "$2" -s /opt/etc/udhcpc/udhcpc.script #добавляем шлюз по умолчанию, выданный dhcp Yota
iptables -t nat -D POSTROUTING -o ppp0 ! -s $(ifconfig ppp0 | sed -n 's/^.*inet addr:\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\) .*$/\1/p') -j MASQUERADE #удаляем старый NAT
iptables -t nat -A POSTROUTING -o "$2" ! -s $(ifconfig "$2" | sed -n 's/^.*inet addr:\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\) .*$/\1/p') -j MASQUERADE #добавляем NAT через wimax0 интерфейс
;;
if-down)
route delete default #удаляем шлюз по умолчанию
iptables -t nat -D POSTROUTING -o "$2" ! -s $(ifconfig "$2" | sed -n 's/^.*inet addr:\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\) .*$/\1/p') -j MASQUERADE #удаляем старый NAT
kill -TERM `cat /var/run/udhcpc."$2".pid`
route add default ppp0 #добавляем шлюз по умолчанию для кабельного провайдера
cat /tmp/ppp/resolv.conf >> /tmp/resolv.conf #копируем адреса DNS серверов, выданные кабельным провайдером
iptables -t nat -A POSTROUTING -o ppp0 ! -s $(ifconfig ppp0 | sed -n 's/^.*inet addr:\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\) .*$/\1/p') -j MASQUERADE #добавляем NAT через ppp0 интерфейс
;;
if-release)
iptables -D FORWARD -o "$2" -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
;;
*)
echo "Usage: $0 { if-create | if-up | if-down | if-release }" >&2
exit 3
;;
esac