Добрый день!Есть FreeBSD, на ней имеется например 3 интерефеса - 2 в инет смотрят и один в локальную сеть, имеется мечта написать скрипт, который будет запусаться кроном например раз в минуту, послыать пинг по одному каналу (основному) и если пакеты не идут то разворачивать НАТ на резервный канал, все вроде осуществимо. Но вот что то я не могу понять как можно поменять значение defaultrouter на-лету?
ткните плиз носом где это написаноЗа любой совет буду благодарен!
>Добрый день!
>
>Есть FreeBSD, на ней имеется например 3 интерефеса - 2 в инет
>смотрят и один в локальную сеть, имеется мечта написать скрипт, который
>будет запусаться кроном например раз в минуту, послыать пинг по одному
>каналу (основному) и если пакеты не идут то разворачивать НАТ на
>резервный канал, все вроде осуществимо. Но вот что то я не
>могу понять как можно поменять значение defaultrouter на-лету?
>ткните плиз носом где это написано
>
>За любой совет буду благодарен!Предположим 1-ый defaultrouter=212.106.20.90, 2-ой 212.107.12.12
тогда в скрипте который запускается из crontab
нужно добавить строкуsed \s/="212.106.20.90"/="212.107.12.12"/ > /etc/rc.conf
/etc/netstartну или наоборот адреса поменять местами в зависимости какой канал свободен
Только когда будешь эксперементировать сохране рабочий rc.conf куда-нибудь
>>Добрый день!
>>
>>Есть FreeBSD, на ней имеется например 3 интерефеса - 2 в инет
>>смотрят и один в локальную сеть, имеется мечта написать скрипт, который
>>будет запусаться кроном например раз в минуту, послыать пинг по одному
>>каналу (основному) и если пакеты не идут то разворачивать НАТ на
>>резервный канал, все вроде осуществимо. Но вот что то я не
>>могу понять как можно поменять значение defaultrouter на-лету?
>>ткните плиз носом где это написано
>>
>>За любой совет буду благодарен!
>
>Предположим 1-ый defaultrouter=212.106.20.90, 2-ой 212.107.12.12
>тогда в скрипте который запускается из crontab
>нужно добавить строку
>
>sed \s/="212.106.20.90"/="212.107.12.12"/ > /etc/rc.conf
>/etc/netstart
>
>ну или наоборот адреса поменять местами в зависимости какой канал свободен
>Только когда будешь эксперементировать сохране рабочий rc.conf куда-нибудьсенкс
>>>Добрый день!
>>>
>>>Есть FreeBSD, на ней имеется например 3 интерефеса - 2 в инет
>>>смотрят и один в локальную сеть, имеется мечта написать скрипт, который
>>>будет запусаться кроном например раз в минуту, послыать пинг по одному
>>>каналу (основному) и если пакеты не идут то разворачивать НАТ на
>>>резервный канал, все вроде осуществимо. Но вот что то я не
>>>могу понять как можно поменять значение defaultrouter на-лету?
>>>ткните плиз носом где это написано
>>>
>>>За любой совет буду благодарен!
>>
>>Предположим 1-ый defaultrouter=212.106.20.90, 2-ой 212.107.12.12
>>тогда в скрипте который запускается из crontab
>>нужно добавить строку
>>
>>sed \s/="212.106.20.90"/="212.107.12.12"/ > /etc/rc.conf
>>/etc/netstart
>>
>>ну или наоборот адреса поменять местами в зависимости какой канал свободен
>>Только когда будешь эксперементировать сохране рабочий rc.conf куда-нибудь
>
>сенксУдалось решить проблему или нет?
>>>>Добрый день!
>>>>
>>>>Есть FreeBSD, на ней имеется например 3 интерефеса - 2 в инет
>>>>смотрят и один в локальную сеть, имеется мечта написать скрипт, который
>>>>будет запусаться кроном например раз в минуту, послыать пинг по одному
>>>>каналу (основному) и если пакеты не идут то разворачивать НАТ на
>>>>резервный канал, все вроде осуществимо. Но вот что то я не
>>>>могу понять как можно поменять значение defaultrouter на-лету?
>>>>ткните плиз носом где это написано
>>>>
>>>>За любой совет буду благодарен!
>>>
>>>Предположим 1-ый defaultrouter=212.106.20.90, 2-ой 212.107.12.12
>>>тогда в скрипте который запускается из crontab
>>>нужно добавить строку
>>>
>>>sed \s/="212.106.20.90"/="212.107.12.12"/ > /etc/rc.conf
>>>/etc/netstart
>>>
>>>ну или наоборот адреса поменять местами в зависимости какой канал свободен
>>>Только когда будешь эксперементировать сохране рабочий rc.conf куда-нибудь
>>
>>сенкс
>
>Удалось решить проблему или нет?да я пока собирал информацию, скрипт еще не написан, еще нада отсроить алгоритм выполнения скрипта в голове :-)
и рутер стоит на моей второй работе...
>>Добрый день!
>>
>>Есть FreeBSD, на ней имеется например 3 интерефеса - 2 в инет
>>смотрят и один в локальную сеть, имеется мечта написать скрипт, который
>>будет запусаться кроном например раз в минуту, послыать пинг по одному
>>каналу (основному) и если пакеты не идут то разворачивать НАТ на
>>резервный канал, все вроде осуществимо. Но вот что то я не
>>могу понять как можно поменять значение defaultrouter на-лету?
>>ткните плиз носом где это написано
>>
>>За любой совет буду благодарен!
>
>Предположим 1-ый defaultrouter=212.106.20.90, 2-ой 212.107.12.12
>тогда в скрипте который запускается из crontab
>нужно добавить строку
>
>sed \s/="212.106.20.90"/="212.107.12.12"/ > /etc/rc.conf
>/etc/netstart
>
>ну или наоборот адреса поменять местами в зависимости какой канал свободен
>Только когда будешь эксперементировать сохране рабочий rc.conf куда-нибудьОтвет неверный.
переписовать rc.conf а как его потом перечитать, не перегружаясь?
лучше просто добавлять и удалять маршрут по умолчанию route add
а вообще как многие говорят попробуй zebra.
тут есть 3 проблемы:
1. Что пинговать? Адрес следующего хопа? а если у провайдера вышестоящий линк накрылся?
2. Как определить, что нужно переключать обратно на основной канал, если резервный работает исправно. Если пинговать тот-же IP то он и так пинговаться будет по резервному каналу. Прописать маршрут для этого IP на основной канал? тогда до него не достучаться будет по резервному каналу в случае необходимости (если например с него почта идет ил что-то еще). Хотя при некоторых обстоятельствах такой вариант подойдет.
3. На одной машине нормально работать может только один канал. Пакеты приходить могут по обеим каналам, а вот уходить по одному. И если source адрес будет не тот, который назначен провайдером, то он еще и порезаться может фильтром.
>тут есть 3 проблемы:
>1. Что пинговать? Адрес следующего хопа? а если у провайдера вышестоящий линк
>накрылся?
>2. Как определить, что нужно переключать обратно на основной канал, если резервный
>работает исправно. Если пинговать тот-же IP то он и так пинговаться
>будет по резервному каналу. Прописать маршрут для этого IP на основной
>канал? тогда до него не достучаться будет по резервному каналу в
>случае необходимости (если например с него почта идет ил что-то еще).
>Хотя при некоторых обстоятельствах такой вариант подойдет.
>3. На одной машине нормально работать может только один канал. Пакеты приходить
>могут по обеим каналам, а вот уходить по одному. И если
>source адрес будет не тот, который назначен провайдером, то он еще
>и порезаться может фильтром.Что посоветуешь?
>тут есть 3 проблемы:
>1. Что пинговать? Адрес следующего хопа? а если у провайдера вышестоящий линк
>накрылся?
>2. Как определить, что нужно переключать обратно на основной канал, если резервный
>работает исправно. Если пинговать тот-же IP то он и так пинговаться
>будет по резервному каналу. Прописать маршрут для этого IP на основной
>канал? тогда до него не достучаться будет по резервному каналу в
>случае необходимости (если например с него почта идет ил что-то еще).
>Хотя при некоторых обстоятельствах такой вариант подойдет.
>3. На одной машине нормально работать может только один канал. Пакеты приходить
>могут по обеим каналам, а вот уходить по одному. И если
>source адрес будет не тот, который назначен провайдером, то он еще
>и порезаться может фильтром.На одной машине могут нормально работать два канала, причем часть адресов ходит через один, другая через другой (natd+ipfw), причем если отключить один канал, то другие адреса этого незаметят и будут продолжать выходить в инет. Можно организовать полное разделение каналов (у меня так и сделано при помощи NATD+ipfw)
>>>Добрый день!
>>>
>>>Есть FreeBSD, на ней имеется например 3 интерефеса - 2 в инет
>>>смотрят и один в локальную сеть, имеется мечта написать скрипт, который
>>>будет запусаться кроном например раз в минуту, послыать пинг по одному
>>>каналу (основному) и если пакеты не идут то разворачивать НАТ на
>>>резервный канал, все вроде осуществимо. Но вот что то я не
>>>могу понять как можно поменять значение defaultrouter на-лету?
>>>ткните плиз носом где это написано
>>>
>>>За любой совет буду благодарен!
>>
>>Предположим 1-ый defaultrouter=212.106.20.90, 2-ой 212.107.12.12
>>тогда в скрипте который запускается из crontab
>>нужно добавить строку
>>
>>sed \s/="212.106.20.90"/="212.107.12.12"/ > /etc/rc.conf
>>/etc/netstart
>>
>>ну или наоборот адреса поменять местами в зависимости какой канал свободен
>>Только когда будешь эксперементировать сохране рабочий rc.conf куда-нибудь
>
>Ответ неверный.
>переписовать rc.conf а как его потом перечитать, не перегружаясь?
>лучше просто добавлять и удалять маршрут по умолчанию route add
>а вообще как многие говорят попробуй zebra./etc/netstart :)))
>Добрый день!
>
>Есть FreeBSD, на ней имеется например 3 интерефеса - 2 в инет
>смотрят и один в локальную сеть, имеется мечта написать скрипт, который
>будет запусаться кроном например раз в минуту, послыать пинг по одному
>каналу (основному) и если пакеты не идут то разворачивать НАТ на
>резервный канал, все вроде осуществимо. Но вот что то я не
>могу понять как можно поменять значение defaultrouter на-лету?
>ткните плиз носом где это написано
>
>За любой совет буду благодарен!2 natd на разных портах + набор статик (сеть ISP1 + ISP2 + default) на соответствующие интерфейсы. Весь исходящий трафик пропускать через соответствующий natd.
проверка работоспособности default - fping ЧЕГО_НИБУДЬ (за пределами сети провайдера, на которого записан default), если is alive - все OK, если is unreachable - route delete default && route add default IP_ВТОРОГО_ISP
+ изменить правила ipfw на предмет изменения распределения исходящего default через natd.
>>Добрый день!
>>
>>Есть FreeBSD, на ней имеется например 3 интерефеса - 2 в инет
>>смотрят и один в локальную сеть, имеется мечта написать скрипт, который
>>будет запусаться кроном например раз в минуту, послыать пинг по одному
>>каналу (основному) и если пакеты не идут то разворачивать НАТ на
>>резервный канал, все вроде осуществимо. Но вот что то я не
>>могу понять как можно поменять значение defaultrouter на-лету?
>>ткните плиз носом где это написано
>>
>>За любой совет буду благодарен!
>
>2 natd на разных портах + набор статик (сеть ISP1 + ISP2
>+ default) на соответствующие интерфейсы. Весь исходящий трафик пропускать через соответствующий
>natd.
>проверка работоспособности default - fping ЧЕГО_НИБУДЬ (за пределами сети провайдера, на которого
>записан default), если is alive - все OK, если is unreachable
>- route delete default && route add default IP_ВТОРОГО_ISP
>+ изменить правила ipfw на предмет изменения распределения исходящего default через natd.
>
Если поставить gated, будет еще проще и красивее.
резюмирую :-)короче вот мои соображения по этому поводу...
думаю что кроном будет запускаться скрипт например раз в минуту, при этом он будет пинговать ДНС-сервер провайдера и если пинг не будет доходить, то скрипт будет поварачивать нат на интерефейс на резервном канале, и переписывать правила ipfw для этого интерфеса и с помощью /etc/netstart менять defaultrouter... при этом нужно что б при восстановлении основного линка, все возращалась обратно... вот тут наверно придется руками это делать, что то соображений нет, как это сделать....
>резюмирую :-)
>
>короче вот мои соображения по этому поводу...
>думаю что кроном будет запускаться скрипт например раз в минуту, при этом
>он будет пинговать ДНС-сервер провайдера и если пинг не будет доходить,
>то скрипт будет поварачивать нат на интерефейс на резервном канале, и
>переписывать правила ipfw для этого интерфеса и с помощью /etc/netstart менять
>defaultrouter... при этом нужно что б при восстановлении основного линка, все
>возращалась обратно... вот тут наверно придется руками это делать, что то
>соображений нет, как это сделать....
У тебя, что адреса не рефальные в твоей сети, если да то
придется и пправиля ipfw менять
>>резюмирую :-)
>>
>>короче вот мои соображения по этому поводу...
>>думаю что кроном будет запускаться скрипт например раз в минуту, при этом
>>он будет пинговать ДНС-сервер провайдера и если пинг не будет доходить,
>>то скрипт будет поварачивать нат на интерефейс на резервном канале, и
>>переписывать правила ipfw для этого интерфеса и с помощью /etc/netstart менять
>>defaultrouter... при этом нужно что б при восстановлении основного линка, все
>>возращалась обратно... вот тут наверно придется руками это делать, что то
>>соображений нет, как это сделать....
>У тебя, что адреса не рефальные в твоей сети, если да то
>
>придется и пправиля ipfw менять
правила ipfw придется меняь только для внешних интерфейсов... тоесть менять их местами например via rl0 менять на via rl1
>>>резюмирую :-)
>>>
>>>короче вот мои соображения по этому поводу...
>>>думаю что кроном будет запускаться скрипт например раз в минуту, при этом
>>>он будет пинговать ДНС-сервер провайдера и если пинг не будет доходить,
>>>то скрипт будет поварачивать нат на интерефейс на резервном канале, и
>>>переписывать правила ipfw для этого интерфеса и с помощью /etc/netstart менять
>>>defaultrouter... при этом нужно что б при восстановлении основного линка, все
>>>возращалась обратно... вот тут наверно придется руками это делать, что то
>>>соображений нет, как это сделать....
>>У тебя, что адреса не рефальные в твоей сети, если да то
>>
>>придется и пправиля ipfw менять
>
>
>правила ipfw придется меняь только для внешних интерфейсов... тоесть менять их местами
>например via rl0 менять на via rl1Но тогда почему придется менять обратно все руками, нельзя написать скрипт в котром все противоположно первому скрипту
>Но тогда почему придется менять обратно все руками, нельзя написать скрипт в
>котром все противоположно первому скрипту
можно, но сложно представить как он будет осуществлять, не понятно что будет критерием для обратной перестановки, то есть при работе резервного канала будет и использоваться резервный defaultrouter, при этом одновременно сложно определить заработал ли оновоной линк, ведь тот же ДНС-сервер провайдера будет пинговаться через резервный канал... в голове немного не укладывается :-)
>
>>Но тогда почему придется менять обратно все руками, нельзя написать скрипт в
>>котром все противоположно первому скрипту
>
>
>можно, но сложно представить как он будет осуществлять, не понятно что будет
>критерием для обратной перестановки, то есть при работе резервного канала будет
>и использоваться резервный defaultrouter, при этом одновременно сложно определить заработал ли
>оновоной линк, ведь тот же ДНС-сервер провайдера будет пинговаться через резервный
>канал... в голове немного не укладывается :-)Извени, но пытаюсь разобраться в ситуации, у меня тоже были подобного рода проблемы
Т.е. у тебя два канала у разнфх провов,а DNS только у одного, или 2 канала у одного прова
а что если пинг вот так вот сделать,
ping -S адрес_сетевой_карты_смотрящей_на_прова адрес_прова
>>
>>>Но тогда почему придется менять обратно все руками, нельзя написать скрипт в
>>>котром все противоположно первому скрипту
>>
>>
>>можно, но сложно представить как он будет осуществлять, не понятно что будет
>>критерием для обратной перестановки, то есть при работе резервного канала будет
>>и использоваться резервный defaultrouter, при этом одновременно сложно определить заработал ли
>>оновоной линк, ведь тот же ДНС-сервер провайдера будет пинговаться через резервный
>>канал... в голове немного не укладывается :-)
>
>Извени, но пытаюсь разобраться в ситуации, у меня тоже были подобного рода
>проблемы
>
>Т.е. у тебя два канала у разнфх провов,а DNS только у одного,
>или 2 канала у одного прова
>
>а что если пинг вот так вот сделать,
>ping -S адрес_сетевой_карты_смотрящей_на_прова адрес_прова
Как было отмечено выше, хоршо если паде канал у прова до да можно пинговать ближлежащий адрес прова, пинг пойдет и так через интерфейс основного канала так как он и адрес прова лежать в одной сети, хотя не факт что при неответе пинг не пойдет через другой канал. а уж если канал лежит за провом тут пингом не проверишь никак
На самом деле, уже придумана динамическая маршрутизация. Что мешает применить zebra/gated?
Вот с firewall не знаю, как это будет соотноситься.
>На самом деле, уже придумана динамическая маршрутизация. Что мешает применить zebra/gated?
>Вот с firewall не знаю, как это будет соотноситься.С чего начать для подъёма gated?
Мне эта тема тоже интересна, но вот с чего начать?
>С чего начать для подъёма gated?
>Мне эта тема тоже интересна, но вот с чего начать?
Почитать.
http://www.citforum.ru/nets/ito/27.shtml
http://www.gated.org/
http://www.zebra.org/
>>С чего начать для подъёма gated?
>>Мне эта тема тоже интересна, но вот с чего начать?
>Почитать.
>http://www.citforum.ru/nets/ito/27.shtml
>http://www.gated.org/
>http://www.zebra.org/спасибо, но вот сунулся в порты net/gated на фре 4.8 и не увидел каталога этого :(
>>С чего начать для подъёма gated?
>>Мне эта тема тоже интересна, но вот с чего начать?
>Почитать.
>http://www.citforum.ru/nets/ito/27.shtml
>http://www.gated.org/
>http://www.zebra.org/
gated платная. я правильно понял?
>
>gated платная. я правильно понял?Нет. Где живет во ФРЕ - не знаю.
>>
>>gated платная. я правильно понял?
>
>Нет. Где живет во ФРЕ - не знаю.
наткнулся на лабороторную работу местных студентов по BGP, кому инетерсено гляньте - http://athena.vvsu.ru/net/labs/lab11_bgp.html
Из всего прочитанного понял - надо разбираться с зеброй, а там придумывать, что-нибудь с файрволом!