Иногда бывает необходимо отвести трафик одного или нескольких машин внутри локальной сети через другой шлюз.Например нам надо что бы кто то вышел в мир по другому каналу и другому IP адресу соответственно.Ну или там что б любители ютуба и порнухи не нагружали основной канал в рабочее время.И соответственно мы имеем например один основной канал быстрого и хорошего провайдера,и второй канал ADSL - так,больше как резерв.Вот сейчас через этот второй канал и будет пробрасывать юзера в нашей сети.

Делается это довольно просто.Для начала создадим таблицу с именем например adsl:

echo "10 adsl" >> /etc/iproute2/rt_tables

Теперь укажим дефолтный шлюз для новой таблицы(IP адрес нашего модема):

ip route add default via 46.x.x.x table adsl

Теперь отводим трафик с локальной машины с адресом 192.168.0.30:

ip rule add from 192.168.0.30 table adsl pref 10

Проверим: ip r s t adsl

должно показать одну только запись дефолтного маршрута,а нам надо заполнить ее как и дефолтную.Смотрим

ip r l

видим например

195.5.х.х dev ppp0 proto kernel scope link src 46.х.х.х 
193.х.х.х/27 dev eth0 proto kernel scope link src 193.х.х.х 
192.168.3.0/24 dev eth4 proto kernel scope link src 192.168.3.1
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.2
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.2
192.168.0.0/24 dev eth3 proto kernel scope link src 192.168.0.1
193.х.х.0/24 via 46.х.х.х dev ppp0
default via 193.х.х.х dev eth0

Затем дописываем в новую таблицу такие же правила как и в дефолтной,все,кроме последнего default. Например первое правило:

ip route add table adsl 195.5.х.х dev ppp0 proto kernel scope link src 46.х.х.х и так далее

Так можно разводить сколько угодно клиентов или подсетей через разные шлюзы.

Готово! Теперь в течении минуты у нашего клиента соединения сбросятся и восстановятся уже через новый маршрут.Что б было быстрее можно сделать(но лучше не делайте)

ip route flush cache

Добавить комментарий

%d такие блоггеры, как: