(Splitting ukrainian traffic when using two channels)

Нехай у нас є така ситуація: є один швидкий канал в інтернет з безкоштовним українським трафіком і дорогим (або заблокованим) закордонним трафіком. І другий, по якому хочеться пустити закордонний (модем, VPN).

Можна, звичайно, перемикати при потребі defaultroute з одного шлюзу на інший. Але це має значні незручності.

Спробуємо покращити ситуацію.

Для цього нам потрібен список українських мереж. Його можна взяти тут: http://noc.ix.net.ua/ua-list.txt. Список постійно оновлюється. У ньому деякі мережі дублюються, тому варто список відсортувати і прибрати однакові:

cat ua-list.txt | sort | uniq > /etc/rc.d/ualist.txt

Тепер треба написати скрипт, який автоматично додає у таблицю маршрутизації маршрути до цих мереж через перший шлюз. Наприклад, такий:

tikus@mainframe:~$ cat /etc/rc.d/rc.route
#!/bin/sh
uagw="192.168.0.1"
echo -n "Setting up routes..."

read net
while [ "$net" != "" ]
do
route add -net "$net" gw "$uagw"
read net
done
echo "Done" 

Тепер залишилось забезпечити виклик цього скрипта при завантаженні:

cat /etc/rc.d/rc.M

#...

if [ -x /etc/rc.d/rc.route ]; then
  . /etc/rc.d/rc.route < /etc/rc.d/ualist.txt
fi

Тепер треба вказати шлях за замовчуванням через другий шлюз. Це робиться відповідно до того, який другий канал. Якщо є відомий фіксований шлюз (наприклад 192.168.0.200) робимо

route add default gw 192.168.0.200

І додаємо цю строку кудись у скрипти завантаження.

Якщо ж другий канал — модем, треба додати строку

defaultroute

у файл /etc/ppp/options.

Ось і все. Тепер український трафік іде по каналу 1, інший — по каналу 2.

Андрій Головинський, tikus@(remove this)ukr.net