(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