Автор Тема: 2 провайдера на школьный сервер.  (Прочитано 4725 раз)

Оффлайн valobasoff

  • Завсегдатай
  • *
  • Сообщений: 399
Добрый день, так получается что нужно завести интернет канал от "образования", так как иначе нет доступа к ЕАИСТ, текущий канал убирать не хочется и на нём сайт с школьным "документооборотом" висит.
желательно сделать так, чтобы в сервер были подключены оба внешних канала, весь трафик из школы например ходил через новый канал, а пакеты пришедшие на старый интерфейс отправлялись обратно через него же. идеально было бы иметь возможность переключать весь траф на старый канал в случае падения нового, руками даже. может проскакивал мануал на этут тему ?

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Re: 2 провайдера на школьный сервер.
« Ответ #1 : 13.06.2012 18:13:17 »
man iptablesЕще эту темку посмотрите и по ссылкам из темы сходите.

Оффлайн valobasoff

  • Завсегдатай
  • *
  • Сообщений: 399
Re: 2 провайдера на школьный сервер.
« Ответ #2 : 13.06.2012 21:00:45 »
sb тему вашу почитал, полезных примеров не увидел, они как бы есть, но неполные и для моего уровня недостаточные...
сделал по аналогии указаной ниже, пинги заработали, трафик изнутри ходит как надо, но бывшие "форварды" на адреса локалки не работают ((( что куда добавить подскажите...
в файл
 /etc/iproute2/rt_tables

Добавил 2 таблицы
 201 T1
 202 T2

У каждого провайдера будет своя таблица маршрутизации
Т1 – первый провайдер
Т2 – второй

Создал скрипт, что будет заведовать маршрутизацией.
#!/bin/sh
 IP1=217.111.111.99
 IP2=94.11.111.81
 P1=217.111.111.97
 P2=94.11.111.82
 IF1=eth1
 IF2=eth4
# добавим дефаулт гетвей в каждую таблицу.
 ip route add default via $P1 table T1
 ip route add default via $P2 table T2
# Говорим, что по дефолту будем ходить через первого провайдера.
 ip route add default via $P1
 ip rule add from $IP1 table T1
 ip rule add from $IP2 table T2
#Перечисляю хосты, что будут ходить через новый интерфейс вот так
#Но не забываем их указывать в NAT iptables
ip rule add from 192.168.5.107 table T2
ip rule add from 192.168.5.108 table T2
ip rule add from 192.168.5.112 table T2
ip rule add from 192.168.5.199 table T2 
#Это так на всякий случай
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

Где
IP# это ИП адрес на интерфейсе,
P# шлюз на интерфейсе
после этого сервер отвечает по обоим интерфейсам. также пинги/трацерты с сервера ходят через нужный интерфейс.

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Re: 2 провайдера на школьный сервер.
« Ответ #3 : 13.06.2012 22:08:17 »
sb тему вашу почитал, полезных примеров не увидел, они как бы есть, но неполные и для моего уровня недостаточные...
сделал по аналогии указаной ниже, пинги заработали, трафик изнутри ходит как надо, но бывшие "форварды" на адреса локалки не работают (((
...
Что за форварды такие будут, не совсем понял ?

Оффлайн valobasoff

  • Завсегдатай
  • *
  • Сообщений: 399
Re: 2 провайдера на школьный сервер.
« Ответ #4 : 14.06.2012 00:19:44 »
проброс некоторых портов старого канала(с внешним ip) на win сервер внутри локальной сети.

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Re: 2 провайдера на школьный сервер.
« Ответ #5 : 14.06.2012 07:53:10 »
1:  настройки 1 провайдера
file /etc/net/ifaces/eth0/ipv4address
217.111.111.99/24
#ответ на входящий на eth0 трафик снаружи
file /etc/net/ifaces/eth0/ipv4route
default via 217.111.111.97
#посылаем весь трафик с адреса 217.111.111.97 в таблицу T1
file /etc/net/ifaces/eth0/ipv4rule
from 217.111.111.97 table Т1
 
2:  настройки 2 провайдера
file /etc/net/ifaces/eth1/ipv4address
94.11.111.81/24
#ответ на входящий на eth1 трафик снаружи
file /etc/net/ifaces/eth1/ipv4route
default via 94.11.111.82 src 94.11.111.81 table T2
default via 94.11.111.82 src 94.11.111.81 table mylocal
#посылаем весь трафик с адреса 94.11.111.81 в таблицу T2
file /etc/net/ifaces/eth1/ipv4rule
from 94.11.111.81 table T2
 
3: Добавляем 2 таблицы маршрутизации ( adsl optic)
#cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
200 T1
199 T2
198 mylocal
0 unspec
#
# local
#
#1 inr.
 
4:
#посылаем весь трафик с выделенных локальных  в таблицу Т2
file /etc/net/ifaces/eth2/ipv4rule
from 192.168.5.107 table mylocal
from 192.168.5.108 table mylocal
from 192.168.5.112 table mylocal
from 192.168.5.199 table mylocal

 

#service network restart
Переключаем вручную в случае аварии провайдера 1

ip ro del default;ip ro add default via 94.11.111.82

обратно

ip ro del default;ip ro add default via 217.111.111.97


"форварды" на адреса локалки
iptables -t nat -A PREROUTING -d 94.11.111.81 -p tcp -m tcp --dport 22 -j DNAT --to-destination 192.168.5.107:22
iptables -t nat -A PREROUTING -d 94.11.111.81 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.5.105:22
« Последнее редактирование: 14.06.2012 08:02:54 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн valobasoff

  • Завсегдатай
  • *
  • Сообщений: 399
Re: 2 провайдера на школьный сервер.
« Ответ #6 : 01.04.2014 19:01:50 »
я так понимаю таблица mylocal в принципе не нужна
строчку
default via 94.11.111.82 src 94.11.111.81 table mylocal можно удалить и в строках
from 192.168.5.107 table mylocal
from 192.168.5.108 table mylocal
from 192.168.5.112 table mylocal
from 192.168.5.199 table mylocal
заменить mylocal на T2 ?
ещё очень важный вопрос, если по умолчанию трафик ходит через 2го провайдера, как сделать чтобы после перезагрузки сервера так и оставалось ?
по умолчанию получается видимо в алфавитном порядке имен интерфейсов....
#ip ro
dns2 via 94.11.111.82 dev eth2  src 94.11.111.81
94.11.111.0/24 dev eth2  proto kernel  scope link  src 94.11.111.81
217.111.111.0/24 dev eth1  proto kernel  scope link  src 217.111.111.99
192.168.5.0/24 dev eth0  proto kernel  scope link  src 192.168.5.1
default via 217.111.111.97 dev eth1
default via 94.11.111.82 dev eth2
после одного # ip ro del default всё начинает вроде нормально работать, но хотелось бы чтобы это происходило без участия.

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Re: 2 провайдера на школьный сервер.
« Ответ #7 : 01.04.2014 19:51:08 »
я так понимаю таблица mylocal в принципе не нужна
В зависимости от того что вам нужно

#ip ro
dns2 via 94.11.111.82 dev eth2  src 94.11.111.81
94.11.111.0/24 dev eth2  proto kernel  scope link  src 94.11.111.81
217.111.111.0/24 dev eth1  proto kernel  scope link  src 217.111.111.99
192.168.5.0/24 dev eth0  proto kernel  scope link  src 192.168.5.1
default via 217.111.111.97 dev eth1
default via 94.11.111.82 dev eth2
после одного # ip ro del default всё начинает вроде нормально работать, но хотелось бы чтобы это происходило без участия.

похоже у вас указана два маршрута

/etc/net/ifaces/eth1/ipv4route
default via 217.111.111.97
/etc/net/ifaces/eth2/ipv4route
default via 94.11.111.82
А надо только один, тот который вам нужен.
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн valobasoff

  • Завсегдатай
  • *
  • Сообщений: 399
Re: 2 провайдера на школьный сервер.
« Ответ #8 : 03.04.2014 13:09:12 »
похоже у вас указана два маршрута
да, я думал это нужно для определения дефолта внутри одного интерфеса. Спасибо.

Оффлайн valobasoff

  • Завсегдатай
  • *
  • Сообщений: 399
Re: 2 провайдера на школьный сервер.
« Ответ #9 : 30.06.2017 16:51:10 »
поднадоело после перезагрузок править маршруты, откорректировал файлы ipv4route и ipv4rule
закоментил на одном интерфейсе  дофолтый маршрут, который из альтератора прописался, перенес его в таблицу, и хочу добавить в эту же таблицу доступ к "локалке другого провайдера".По умолчанию пакеты ходят через провайдера2, но некоторые хосты сидят на провайдере1, нужно сделать доступными для них внутреннюю сеть провайдера2.
"ipv4route T1"
#default via 217.111.111.97 dev eth1
default via 217.111.111.97 table T1 -маршрут по умолчанию в таблице провайдера1
94.11.111.0/8 via 94.11.111.82 table T1 - маршрут к внутренней адресации провайдера2 в таблицу провайдера1.
после service network restart
ip ro show table T1 показывает только default via 217.111.111.97
вручную ip ro add 94.11.111.0/8 via 94.11.111.82 table T1 отрабатывает корректно и маршрут в таблице появляется.
что я делаю не так ?

ЗЫ: адреса в примере неправильные, но чтобы не терять суть темы менять не стал, у провайдера2 адресация 10.0.0.0/8, и некоторые ресурсы доступны только оттуда, либо определяются DNS как 10.x.x.x и естественно с другого провайдера туда не попадешь.

Оффлайн valobasoff

  • Завсегдатай
  • *
  • Сообщений: 399
Re: 2 провайдера на школьный сервер.
« Ответ #10 : 17.10.2017 19:29:05 »
подскажите пожалуйста, куда можно прописать аналог команды
ip ro add 10.0.0.0/8 via 10.117.115.129 table T1чтобы при перезагрузке сервера в таблице присутствовал нужный маршрут ?
прописывал в файл одного из интерфейсов
# cat ipv4route
#default via 84.xxx.xxx.xxx
10.0.0.0/8 via 10.117.115.129 metric 50 weight 5 table T1
после перезагрузки в таблице T1 маршрута 10.0.0.0/8 via 10.117.115.129  нет (

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн valobasoff

  • Завсегдатай
  • *
  • Сообщений: 399
Re: 2 провайдера на школьный сервер.
« Ответ #12 : 05.02.2018 13:14:13 »
понадобилось завернуть некоторые dst порты из локалки к первому провайдеру, по умолчанию траф идёт через второго прова.
гугл посдказал сделать так , порты 80 и 8080 для примера.

iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8080 -j MARK --set-mark 2
ip rule add fwmark 2 lookup prov1

таблица prov1 уже была, поэтому просто отправил маркированые пакеты.
но не пошло, стал копать дальше подозревая что nat может мешать данной схеме.
сделал iptables -t mangle -A PREROUTING -p tcp -m multiport --dport 80,8080 -j MARK --set-mark 2
за ним ip route flush cache
и о чудо, всё заходило как надо, до понедельника...
посмотрел uptime, перезагрузок не было, проверил правила, все на месте, но пакеты по этим портам не ходят, т.е. не идут не в один канал. Причём хосты, у которых первый канал дефолтный через ip ru add from 192.168.0.10 lookup prov1 работают отлично.
как сделать маркировку правильно, учитывая что на сервере есть nat?

UPD: tcpdump показал что пакеты уходят верно, через первого провайдера, и возвращаются на внешний интерфейс,а вот в локалке ответов уже нет. Стал сомневаться не применяется ли правило и для возвратных пакетов.
изменил последний вариант на
iptables -t mangle -A PREROUTING -p tcp -i eth0 -m multiport --dport 80,8080 -j MARK --set-mark 2
опять заработало, посмотрим насколько хватит, уверенности что проблема была в этом к сожалению нет. Кто соображает подскажите, разве обратный пакет не должен содержать 80,8080 в source port вместо dport ?
« Последнее редактирование: 05.02.2018 19:36:00 от valobasoff »