# Настройка шлюза

## Sindar

Я полный нуб в Linux.

Прошу не пинать ногами сильно, знаю сейчас будет отправление в man и прочее.

Но времени изучить сейчас нет - кое что попытался, результаты ниже.

Имеется комп который должен стать шлюзом для локальной сети.

Ось CentOS 5.5 ( знаю что это к RedHat, но толлерантности у вас судя по форуму больше )

3 сетевых карты

1)  провайдер 1

2)  провайдер 2

   DSL модем

3)  Локальная сеть 192.168.0.xxx

DHCP, DNS сервис не установлен.

режим только консоль.

требуется: локальные пользователи должны ходить в инет. Работать должен только один канал и при падении переключаться на запасной. Балансировка Не нужна, только переключение при падении.

собственно тема поднималась кучу раз и рассматривалась тоже.

Но в данном случае нет физического доступа к серверу- только ssh.

страшно потерять линк к нему во время манипуляций.

Читал что можно всё сделать 1 скриптом который будет делать:

 чистку старых настроек,

 внесение новых настроек

И похоже отдельные скрипты на пинг внешних адресов и преключение интерфейса при падении.

то что навоял. Но в какой скрипт вставить не знаю и не уверен правильно ли.

$IP_LOCAL="192.168.0.1"              #адрес нашего маршрутизатора в локальной сети.

$IP1="xx.xxx.xxx.14"                     #адрес нашего маршрутизатора в сети первого провайдера.

$IP2="192.168.1.2"                         #адрес нашего марщрутизатора в сети второго провайдера.

$IF_LOCAL="eth0"                          #имя интерфейса на локальную сеть

$IF1="eth1"                                     #имя интерфейса на первого провайдера.

$IF2="eth2"                                     #имя интерфейса на второго провайдера.

$NET_LOCAL="192.168.0.0/24"     #локальная сеть.

$NET1="xx.xxx.xxx.12/30"            #адрес сети в которой гейт нашего первого провайдера.

$NET2="192.168.1.0/24"                #адрес сети в которой гейт нашего второго провайдера.

$GW1="xx.xxx.xxx.13"                 #гейт первого провайдера.

$GW2="192.168.1.1"                     #гейт второго провайдера.

ip route add $NET1 dev $IF1 src $IP1 table T1

ip route add default via $GW1 table T1

ip route add $NET2 dev $IF2 src $IP2 table T2

ip route add default via $GW2 table T2

ip route add $NET1 dev $IF1 src $IP1

ip route add $NET2 dev $IF2 src $IP2

ip route add default via $GW1

ip rule add from $IP1 table T1

ip rule add from $IP2 table T2 

ip route add $NET_LOCAL dev $IF_LOCAL table T1

ip route add $NET2 dev $IF2 table T1

ip route add 127.0.0.0/8 dev lo table T1

ip route add $NET_LOCAL dev $IF_LOCAL table T2

ip route add $NET1 dev $IF1 table T2

ip route add 127.0.0.0/8 dev lo table T2  

----------------

просьба откликнуться.

----------

## fank

вопрос-то в чем собственно?

----------

## Sindar

Но в какой скрипт вставить не знаю и не уверен правильно ли.

Помимо этого надо же еще для внутренней сети делать NAT.

Как правильно организовать?

----------

## fank

делаешь так:

в крон втыкаешь очистку всех правил и удаление всех цепочек каждые полчаса или того меньше

и экспериментируешь

переключение на запасного прова можно сделать двумя способами: "честный" failover, я как-то искал, но вменяемых надежных решений так и не нашел, или не понял, что такое было =)

второй способ - простой и надежный

пинговать основного прова, как только нет пинга - переключать на второго - просто удаляешь default gw и добавляешь на интерфейс второго

скрипт кладешь куда-нить на диск, например /scripts

запуск добавляешь в local.start

хотя правильнее будет все же сделать его сервисом

пример - здесь 

----------

