odiszapc Posted April 27, 2007 Posted April 27, 2007 Ситуация такова: в администрации ТЦ, уже имеющей досутп в интернет (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 как и раньше, плюс возможность авторизации как и ранее. Получается что если работает основной канал, то весь механизм входа в интернет должен остаться таким же как и был, а если резервный канал, тот тут уже все идет через нас и авторизация не требуется. Подскажите пожалуйста какие изменения нужно внести в данную схему для реализации такой возможности. Ихнее железо трогать запрещено, в общем изменений в хардварной части должно быть по минимум, ворочать проводами там никто не даст, единственное подключить наш роутер к ихней локалке. Из за недстатка опыта сам разрулить не могу. Спасибо. Вставить ник Quote
user_anonymous Posted April 27, 2007 Posted April 27, 2007 iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j SNAT --to-source 192.168.10.254 А ЭТО нахрена то? Вставить ник Quote
odiszapc Posted April 27, 2007 Author Posted April 27, 2007 iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j SNAT --to-source 192.168.10.254 А ЭТО нахрена то? Без нее увы доступ в инет не идет по резервному каналу. Попрошу поправить где я не прав, ибо опыта мало. Вставить ник Quote
Kirya Posted April 27, 2007 Posted April 27, 2007 Она вообще не должна влиять на работу резервного канала. tracert покажи в этом случае plz с клиентской машины. Вставить ник Quote
user_anonymous Posted April 27, 2007 Posted April 27, 2007 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 } Вставить ник Quote
Kirya Posted April 27, 2007 Posted April 27, 2007 user_anonymousА вот это как-раз - нет. Так сессии будут рваться постепенно, по мере работы приложений, а так сразу. И роутеру нагрузки меньше, и пользователям дискомфорта. Вставить ник Quote
user_anonymous Posted April 27, 2007 Posted April 27, 2007 user_anonymousА вот это как-раз - нет.Так сессии будут рваться постепенно, по мере работы приложений, а так сразу. И роутеру нагрузки меньше, и пользователям дискомфорта. Хмм. Возможно я чего-то недопонимаю. Но если у нас отвалился канал, по которому шла сессия - разве она при этом не порвется в любом случае? Вставить ник Quote
odiszapc Posted April 27, 2007 Author Posted April 27, 2007 Так ведь скрипт срабатывает раз в минуту, и когда в вашей схеме будет удалятся default gw не будут ли рватся сессии? Вот я и меняю метрики, если не прав поправьте. Вставить ник Quote
user_anonymous Posted April 27, 2007 Posted April 27, 2007 Так ведь скрипт срабатывает раз в минуту, и когда в вашей схеме будет удалятся default gw не будут ли рватся сессии? Вот я и меняю метрики, если не прав поправьте. Наверное неправ всетаки я. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.