Имеется 2 телефона с 3G. Надо сделать так, чтобы одновременно можно было использовать 2 интернет подключения. Интерфейсы поднимаю так dhcpcd wwan0 и dhcpcd wwan1.
Погуглив нашел Практическое руководство по применению iproute2, в нем приводится пример Маршрутизации через несколько каналов/провайдеров. Собственно по нему и составил следующий скрипт
IF1=wwan0
IF2=wwan1
IP1="`ip addr show $IF1 | grep 'inet ' | awk '{print $2}' | sed 's/'.29'//'`"
IP2="`ip addr show $IF2 | grep 'inet ' | awk '{print $2}' | sed 's/'.28'//'`"
P1="`ip addr show $IF1 | grep 'inet ' | awk '{print $4}'`"
P2="`ip addr show $IF2 | grep 'inet ' | awk '{print $4}'`"
P1_NET="`ifconfig $IF1 | grep 'inet ' | awk '{print $4}' | sed 's/'Mask:'//'`"
P2_NET="`ifconfig $IF2 | grep 'inet ' | awk '{print $4}' | sed 's/'Mask:'//'`"
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
ip route add default via $P1
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
nexthop via $P2 dev $IF2 weight 1
RTNETLINK answers: File exists
RTNETLINK answers: Invalid argument
RTNETLINK answers: File exists
RTNETLINK answers: Invalid argument
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument