Jump to content

Recommended Posts

Posted

Ситуация такова: в администрации ТЦ, уже имеющей досутп в интернет (DSL) необходимо поставить резервный канал, включающийся при падении основного. Поставили беспроводной канал с реальным ip. Опишу архитектуру.

 

В администрации уже имеется сеть 192.168.10.0/24 из 5 машин, одна из которых (192.168.10.55) является шлюзом, с установленным Kerio Winroute Firewall 6.0 и авторзацией входа в интернет по паролям. Соответственно все машины сети имеют в настройках локального соединения адреса шлюза и днс, равные 192.168.10.55.

Кроме того, имеется наш шлюз под управлением Windows XP с двумя интерфейсами, один из них смотрит в радиомодем, второй пока никуда не сморит (шлюз используется также для решения других задач, с сетями никак не связанных). На шлюзе стоит Kerio Winroute.

 

Что нужно: интернет из сети должен идти по DSL, а в случае его поломки переключатся на Радио-канал.

 

Что решил сделать:

Ставлю PC-роутер (Linux), один интерфейс которого смотрит в локальную сеть админстарции и имеет адрес 192.168.10.254 - eth1, а другой соединен с интерфейсом нашего шлюза и имеет адрес 192.168.8.2 - eth0 (интерфейс на шлюзе имеет адрес 192.168.8.1). Шлюз по умолчанию на компьютерах пользователей меняется на адрес нашего роутера: 192.168.10.254. На роутере разрешается форвардинг. Таблица маршрутов на роутере выглядит так:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    *               255.255.255.0   U     0      0        0 eth1
192.168.8.0     *               255.255.255.0   U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth1
default         192.168.10.55   0.0.0.0         UG    0      0        0 eth1
default         192.168.8.1     0.0.0.0         UG    1      0        0 eth0

 

Цепочка POSTROUTING iptables'a дополнена командами:

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to-source 192.168.8.2
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j SNAT --to-source 192.168.10.254

 

На DSL шлюзе разрешается доступ в инет для адреса 192.168.10.254, на нашем шлюзе для адреса 192.168.8.2.

 

Кроме того, CRON'ом запускается скрипт автоматического переключения каналов путем пинга внешних адресов и изменения метрик двух дефолтных маршрутов (два нижних в вышеприведенной таблице) следующего содержания:

 

#!/bin/bash
GTW1="XX.XXX.XX.X"
INT1="eth1"

GTW2="XX.XXX.XX.X"
INT2="eth0"

if ping -I $INT1 -c5 -W2 $GTW1 2>&1 | grep "64 bytes from" > /dev/null && ping -I $INT2 -c5 -W2 $GTW2 2>&1 | grep "64 bytes from" > /dev/null
    then
    echo "Both channel UP. Route via $INT1";
    ip route change default via 192.168.10.55 metric 0 && ip route change default via 192.168.8.1 metric 1
elif ping -I $INT1 -c5 -W2 $GTW1 2>&1 | grep "64 bytes from" > /dev/null
    then echo "First channel UP. Route via $INT1";
    ip route change default via 192.168.10.55 metric 0 && ip route change default via 192.168.8.1 metric 1
elif ping -I $INT2 -c5 -W2 $GTW2 2>&1 | grep "64 bytes from" > /dev/null
    then echo "Second channel UP. Route via $INT2";
    ip route change default via 192.168.10.55 metric 1 && ip route change default via 192.168.8.1 metric 0
else
    echo "All channels DOWN";
fi

 

В итоге все отлично работает, ходит то по одному то по другому маршруту, но есть одно НО: адреса всех машины, доходя до роутера, сворачиваются в один адрес, для нашего шлюза это 192.168.8.2, для ихнего DSL-шлюза - 192.168.10.254. Нам без разницы, а они хотят видеть статистику на каждого пользователя в удобочитаемом виде в Winroute как и раньше, плюс возможность авторизации как и ранее. Получается что если работает основной канал, то весь механизм входа в интернет должен остаться таким же как и был, а если резервный канал, тот тут уже все идет через нас и авторизация не требуется.

 

Подскажите пожалуйста какие изменения нужно внести в данную схему для реализации такой возможности. Ихнее железо трогать запрещено, в общем изменений в хардварной части должно быть по минимум, ворочать проводами там никто не даст, единственное подключить наш роутер к ихней локалке. Из за недстатка опыта сам разрулить не могу. Спасибо.

Posted
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j SNAT --to-source 192.168.10.254

 

А ЭТО нахрена то?

Без нее увы доступ в инет не идет по резервному каналу. Попрошу поправить где я не прав, ибо опыта мало.

Posted

Она вообще не должна влиять на работу резервного канала.

tracert покажи в этом случае plz с клиентской машины.

Posted

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j SNAT --to-source 192.168.10.254

 

А ЭТО нахрена то?

Без нее увы доступ в инет не идет по резервному каналу. Попрошу поправить где я не прав, ибо опыта мало.

Вообще то это очень странно. И непонятно, зачем вообще было заморачиваться с метриками. Мне кажется, что в вашей схеме можно все проще сделать. На С-одразном псевдокоде это может выглядеть так:

if( нет пинга до провайдера 1 )

{

route del default gw a.b.c.d

route add default gw k.l.m.n

}

else

if( default gw ! a.b.c.d )

{

route del default gw k.l.m.n

route add default gw a.b.c.d

}

Posted

user_anonymousА вот это как-раз - нет.

Так сессии будут рваться постепенно, по мере работы приложений, а так сразу. И роутеру нагрузки меньше, и пользователям дискомфорта.

Posted
user_anonymousА вот это как-раз - нет.

Так сессии будут рваться постепенно, по мере работы приложений, а так сразу. И роутеру нагрузки меньше, и пользователям дискомфорта.

Хмм. Возможно я чего-то недопонимаю. Но если у нас отвалился канал, по которому шла сессия - разве она при этом не порвется в любом случае?
Posted

Так ведь скрипт срабатывает раз в минуту, и когда в вашей схеме будет удалятся default gw не будут ли рватся сессии? Вот я и меняю метрики, если не прав поправьте.

Posted

Так ведь скрипт срабатывает раз в минуту, и когда в вашей схеме будет удалятся default gw не будут ли рватся сессии? Вот я и меняю метрики, если не прав поправьте.

Наверное неправ всетаки я.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.