#1. set ip rules
ip rule flush
ip rule del table main
ip rule del table default
ip rule add lookup main prio 32766
ip rule add lookup default prio 32767
# WAN1 DNS Rule
WAN1_GET_DNS=$(nvram get wan_get_dns)
for WAN_DNS in $WAN1_GET_DNS
do
$LOGGER "set WAN1 route($WAN1_GATEWAY) for DNS:$WAN_DNS"
if [ ! "$WAN_DNS" = "0.0.0.0" ]; then
ip rule add to $WAN_DNS table 100 prio 150
fi
done
# WAN2 DNS Rule
WAN2_GET_DNS=$(nvram get wan2_get_dns)
for WAN_DNS in $WAN2_GET_DNS
do
$LOGGER "set WAN2 route($WAN2_GATEWAY) for DNS:$WAN_DNS"
if [ ! "$WAN_DNS" = "0.0.0.0" ]; then
ip rule add to $WAN_DNS table 200 prio 150
fi
done
# PPTP DNS Rule
USE_PEERDNS=$(nvram get pptp_client_peerdns)
if [ "$USE_PEERDNS" = "1" ]; then
PPTP_GET_DNS=$(nvram get pptp_client_get_dns)
for PPTP_DNS in $PPTP_GET_DNS
do
if [ ! "$PPTP_DNS" = "0.0.0.0" ]; then
ip rule add to $PPTP_DNS table 250 prio 149
fi
done
fi
#2. set fixed route rule
$LOGGER "set QQ&MSN via WAN1..."
if [ -f $NETLIST ]; then
MY_LINE_NO=1
while read MY_LINE
do
ip rule add to $MY_LINE table 100 prio 200
MY_LINE_NO=$((MY_LINE_NO+1))
done < $NETLIST
fi
#3. set WAN1 route table
$LOGGER "set route table 100..."
ip route flush table 100
ip route | while read ROUTE
do
if [ ! "$ROUTE" = "default" ]; then
ip route append table 100 to $ROUTE
fi
done
ip route del table 100 default
ip route del table 100 default
ip route del table 100 default
ip route del table 100 default
ip route del table 100 default
ip route add table 100 default via $WAN1_GATEWAY dev $WAN1_IFACE src $WAN1_IP
ip rule add from $WAN1_IP table 100 prio 100
#3. set WAN2 route table
$LOGGER "set route table 200..."
ip route flush table 200
ip route | while read ROUTE
do
if [ ! "$ROUTE" = "default" ]; then
ip route append table 200 to $ROUTE
fi
done
ip route del table 200 default
ip route del table 200 default
ip route del table 200 default
ip route del table 200 default
ip route del table 200 default
ip route add table 200 default via $WAN2_GATEWAY dev $WAN2_IFACE src $WAN2_IP
ip rule add from $WAN2_IP table 200 prio 100
#10. BBE F6E ED8 BA4 DEF 531 E3A D1F F7D 747 861
$LOGGER "set default router with load-balance"
ip route del default
ip route del default
ip route del default
ip route del default
ip route del default
ip route add default scope global nexthop via $WAN1_GATEWAY dev $WAN1_IFACE weight 1 nexthop via $WAN2_GATEWAY dev $WAN2_IFACE weight 1
$LOGGER "clear route cache..."
ip route flush cache
#common-stop.sh:
#!/bin/ash
# common-stop Script VER 0.4 by rightzd 20090301
LOGGER=logger
LOCK_FILE=/var/policyroute-unset.lock
$LOGGER "Stop PolicyRouting ..."
WAN1_GATEWAY=$(nvram get wan_gateway)
WAN2_GATEWAY=$(nvram get wan2_gateway)
WAN1_IFACE=$(nvram get wan_iface)
WAN2_IFACE=$(nvram get wan2_iface)
if [ -f $LOCK_FILE ]; then
$LOGGER "Stop PolicyRouting exit, other process stoping."
exit
fi
echo "SETTING" > $LOCK_FILE
# when line disconnected, system is auto remove routes
if [ "$WAN1_IFACE" != "" ]; then
ip route append default via $WAN1_GATEWAY dev $WAN1_IFACE
else
$LOGGER "WAN1 disconnectd!"
ip route flush table 100
fi
if [ "$WAN2_IFACE" != "" ]; then
ip route append default via $WAN2_GATEWAY dev $WAN2_IFACE
else
$LOGGER "WAN2 disconnectd!"
ip route flush table 200
fi
$LOGGER "clear route cache..."
ip route flush cache
Comment