Некоторое время назад провайдер, к которому я был подключен наверное больше 4 лет (IpNET) стал совсем уж слабо удовлетворять моим требованиям. По этому я решил сменить его. Но у ИпНета есть один довольно существенный плюс - его внутренняя сеть. И как-то не хотелось терять возможность качать со скоростью 5-6мб/сек. Да и покупка ноутбука с WiFi добавила ещё одну причину поменять рутер.
Недолго думая, я остановился на Asus WL500g Premium. Он сравнительно недорогой (~$90), но, судя по описанию, вполне мог обеспечить необходимый функционал - два WAN(MAN) подключения + WiFi.
Попробовал сначала прошивку от Олега, но мне она всё-таки немного не понравилась - получается просто комбинация стандартного интерфейса Asus и OpenWRT. Так что решил я сразу перейти на OpenWRT, но только с неплохим интерфейсом. По этому, остановил я свой выбор на X-WRT.
Как базовую документацию по созданию двух WAN-ов я взял статейку вики на самом сайте OpenWRT. Но там конфигурация намного сложней, чем мне нужна была - там полноценный load balancing, который мне не нужен был.
По этому, я модифицировал скрипты просто добавив в /usr/share/udhcpc/default.script при инициализации рутинга вызов некоторого кастом-скрипта:
[ -n "$router" ] && {
#remove previous rule/table
ip route flush table $interface
for i in $router ; do
echo "adding router $i"
#route add default gw $i dev $interface
ip rule add from $ip table $interface
ip route add $TT dev $interface src $ip table $interface
ip route add 192.168.1.0/24 dev eth0.0 table $interface
ip route add default via $i table $interface
valid="$valid|$i"
done
#add the default route with equalize mpath
#echo "deleting and updating routes"
#while route del default >&- 2>&- ; do :; done
#P1=`ip route list table eth0.1 | grep via | cut -d" " -f 3`
#P2=`ip route list table eth0.2 | grep via | cut -d" " -f 3`
#ip route add default scope global \
# nexthop via $P1 dev eth0.1 weight 1 \
# nexthop via $P2 dev eth0.2 weight 1
#echo "deleting old routes"
#$(route -n | awk '/^0.0.0.0\W{9}('$valid')\W/ {next} /^0.0.0.0/ {print "route del -net "$1" gw "$2";"}')
#flush previous route
[ -f /etc/$interface.dhcp ] && . /etc/$interface.dhcp
ip route flush cache
}
После чего, создал файлик /etc/eth0.1.dhcp в котором прописал статические подсетки, которые я хотел рутить на WAN интерфейс eth0.1:
ip route add 172.16.0.0/18 dev $interface src $ip table $interface
ip route add 172.16.140.0/22 dev $interface src $ip table $interface
ip route add 82.193.96.0/20 dev $interface src $ip table $interface
ip route add 82.193.96.0/19 dev $interface src $ip table $interface
ip route add 82.193.96.232/29 dev $interface src $ip table $interface
Ну и так, как eth0.2 у меня нужен был как дефолтный, я прописал в /etc/firewall.user (может надо в другом файле, но я не знаю точно в каком) инициализацию дефолтного гейтвея:
......
# Default route
ip route add default scope global via 194.0.91.193
Таким образом я получил, что подсетки, указанные в eth0.1.dhcp идут через eth0.1, а всё остальное - через eth0.2, что и требовалось.
Пользовательская оболочка довольно приятная. Хорошая фича - рисование графиков загружености в реальном времени.
Вот примеры рисования графиков: