Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: IPROUTE2 + 2 провайдера  (Прочитано 53327 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #150 : 20 Ноября 2009, 01:02:37 »
Enkil-404, вы все-таки будьте проще, попробуйте показать себе и нам, как у вас работает попадание пакета в альтернативную таблицу, как у вас работает nat через других провов, когда маршруты через них есть в таблице main.

Пользователь решил продолжить мысль 20 Ноября 2009, 01:05:32:
сам видел и 1, и 2, и 3.
« Последнее редактирование: 20 Ноября 2009, 01:05:32 от badfiles »

Оффлайн Enkil-404

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #151 : 20 Ноября 2009, 02:21:26 »
так все мои конфиги приведены выше неоднократно))
или показать выводы tcpdump? или других каких анализаторов?
тогда скажите плз что именно привести на осмотр? выводы каких команд?

все будет показано сразу же.

я проверяю просто пингом через интерфейс, а также тем какой обратный адрес в результате имеют http-запрсоы в инете(например сайт 2ip.ru)
так же проверяю создались ли правила ip rule list, itables -t mangle -L  и т.д.

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #152 : 20 Ноября 2009, 03:13:31 »
В пересечении наших задач мне хотелось бы, чтобы вы просто продекларировали, не надо никаких конфигов и выводов,
1. Что у вас реально работает каждый пров в отдельности (не только пинг, но и устанавливаются соединения),
2. Что у вас работает выбор таблицы маршрутизации по метке (это можно увидеть по маку и ip исходящего пакета tcpdum'ом),
3. Что вы можете? установить работающее соединение в случае, когда маршруты через прова не существуют в таблице main, но они есть в той альтернативной таблице, в которую попало соединение по метке.

Если у вас выполняются все три пункта, то у вас ошибка в понимании того, как реализовать поставленную задачу. (конфиги то ваши сами по себе правильные)
Ну а если не все, то тогда надо что-то предпринимать совместно.

Пользователь решил продолжить мысль 19 Ноября 2009, 21:13:34:
Это был баг в ядре http://patchwork.ozlabs.org/patch/36329/
Починен в 2.6.32rc6
Это и следующие ядра у меня на тестовой машине не заработали по пока непонятной причине.


Пользователь решил продолжить мысль 19 Ноября 2009, 23:38:49:
однако, как показала практика после внимательного прочтения истории бага, есть workaround

(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 20 Ноября 2009, 01:40:37:
fhieos говорил об этом, но помогает именно тотальное отключение, а не только на избранных интерфейсах, поскольку в маску попадут all и default
« Последнее редактирование: 20 Ноября 2009, 05:47:01 от badfiles »

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #153 : 20 Ноября 2009, 09:47:33 »
Дохренища текста покотцано. Давай рассматривать первый вариант.
вариант с балансировкой
(Нажмите, чтобы показать/скрыть)

ну вроде все в порядке. equalize можно убрать, в доках на русском про эту  опцию ничего нет :)  Но у мя работало.

Цитировать
echo "1" >  /proc/sys/net/ipv4/ip_forward # Разрешаем форвардинг
Забавно включать фовардинг ДО загрузки фаервола. т.е. если вдруг отвалится фаервол, тогда все ломануться куда вздумается и как вздумается. Т.к. у вас включен маскарад и фовардинг в одном месте :)

Далее. Если запустить данный скрипт без фаервола, уже должны включиться оба канала одновременно. проверить можно mtr ya.ruУ вас через некоторое время появится в списке 2 шлюза.
На данном этапе будет все работать ну 1000%, если не ошибиться в ip и интерфейсах.

Убираем все лишнее из фаера.  
надо ли подгружать модули, если они сами подгружаются? :)
Цитировать
modprobe ip_nat_ftp
modprobe ip_nat_pptp
modprobe ip_conntrack_ftp

Объясните, зачем разрешать уже разрешенное ? по умолчанию все ACCEPT
Цитировать
# Разрешаем все ранее запрошенные/установленные соединения
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! $IF_INET1 -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! $IF_INET2 -j ACCEPT
iptables -A FORWARD -i $IF_INET1 -o $IF_LOCAL1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF_INET2 -o $IF_LOCAL1 -m state --state ESTABLISHED,RELATED -j ACCEPT

Если бы оставшееся дропнули, я бы еще понял.
Но из всего скрипта дропится только это:
Цитировать
# Закрываем известные троянские порты:
iptables -A FORWARD -p udp -m multiport --sport 16355,21111,1349,26274,29891,31337,31338,47262 -j DROP
iptables -A FORWARD -p tcp -m multiport --sport 555,666,1001,1025,1026,1028,1243,2000,5000,6667,6670,6711 -j DROP
iptables -A FORWARD -p tcp -m multiport --sport 6969,7000,12345,123456,21554,22222,27374,29559,31337,31338 -j DROP

А вот это меня убивает
Цитировать
так вот, после загрузки скриптов делаю
ping -I eth3 ya.ru
т.е. через прова2 пингую - нет пинга, хотя из дома подключен по ssh сразу и через прова1 и через прова2 к серверу(2 сессии)
мы же вроде договорились, что пинговать будем только 2 хоста с привязанными маршрутами, разве я не прав?

Цитировать
# Принудительно задаем маршруты на 2 ip чтобы проверять живой канал или нет.
route add -host 212.188.4.10  gw GW_INET1 IF_INET1
route add -host 195.34.32.116 gw GW_INET2 IF_INET2
вот так:
ping -I eth0 212.188.4.10
ping -I eth3 195.34.32.116

Вроде все. Этот вариант ну самый простой и не требует усилий.

2й вариант
У вас так выглядит?
Цитировать
$ cat /etc/iproute2/rt_tables
#
# reserved values
#
255   local
254   main
253   default
0   unspec
#
# local
#
#1   inr.ruhep

10   T1   # это наши таблицы
11   T2   #

Вот эту строчку уберите, мне кажется она вам кровь пьет. Вы все пакеты тупо метите как 10. даже если у Вас ранее стояла другая метка :)
Цитировать
iptables -t mangle -A PREROUTING  -s $NET_LOCAL1 -j MARK --set-mark 10
доверьтесь лучше default route, а метьте только избранные пакеты по портам или еще как нибудь.

PS: Уф. Надеюсь поможет

Оффлайн Enkil-404

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #154 : 20 Ноября 2009, 10:15:23 »
Цитировать
ну вроде все в порядке. equalize можно убрать, в доках на русском про эту  опцию ничего нет   Но у мя работало.

попробую, тоже про эту опцию ничего не нашел, но в мануалах обычно исп-ся.

Цитировать
Забавно включать фовардинг ДО загрузки фаервола. т.е. если вдруг отвалится фаервол, тогда все ломануться куда вздумается и как вздумается. Т.к. у вас включен маскарад и фовардинг в одном месте
мдя, действительно, перенесем
Цитировать
Объясните, зачем разрешать уже разрешенное ? по умолчанию все ACCEPT
INPUT у меня по умолчанию DROP, поэтому и разрешаю
Цитировать
мы же вроде договорились, что пинговать будем только 2 хоста с привязанными маршрутами, разве я не прав?
тоже верно, однако если все правильно работает, то разве не должен идти пинг или тотже wget через 2 прова? не только же для явно прописанных маршрутов работает 2 интерфейс?
Цитировать
Вот эту строчку уберите, мне кажется она вам кровь пьет. Вы все пакеты тупо метите как 10. даже если у Вас ранее стояла другая метка
Так ведь в iptables правила работают сверху вниз, если пакету подошло верхнее правило(с меткой) то он получает метку 10 или 11, если не подошло ни одно из верхних правил, то он получает метку 10.

Спасибо, проверим, посмотрим

Пользователь решил продолжить мысль 20 Ноября 2009, 10:19:50:
Цитировать
Далее. Если запустить данный скрипт без фаервола, уже должны включиться оба канала одновременно. проверить можно

пробовал без фаервола - вообще пропадает инет и даже пинговать шлюз не получается, приходится локально заходить и загружать старый скрипт для одного прова.
« Последнее редактирование: 20 Ноября 2009, 10:19:50 от Enkil-404 »

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #155 : 20 Ноября 2009, 10:21:37 »
Вобщем, у меня все заработало. Транзитные пакеты метятся в mangle prerouting, локальные -- в mangle output. Что бы там не рисовали всякие деятели на схемах.

И локальные, и транзитные, и пинги -- все работает в точном соответствии с метками.
Я использовал только одну дополнительную таблицу, поскольку моя задача не требует 2 таблицы.

Всем спасибо, все молодцы.

Оффлайн Enkil-404

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #156 : 20 Ноября 2009, 10:25:36 »
так а заработала после применения патча и правки параметров о которых вы выше писали?
и можо ли ваши конфиги посмотреть?
что вообще сделали чтоб заработало?

Пользователь решил продолжить мысль 20 Ноября 2009, 08:26:27:
вообще, расписали бы подробно для 9.04. может не только нам понадобиться

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #157 : 20 Ноября 2009, 10:29:04 »
тоже верно, однако если все правильно работает, то разве не должен идти пинг или тотже wget через 2 прова? не только же для явно прописанных маршрутов работает 2 интерфейс?
Я вот тоже думал об этом. По какому принципу тогда должен присваиваться исходящий ip и на какой интерфейс ОС должна отправлять пакет? Думаю, что только на тот, для которого есть маршрут.
В этом и есть суть суть  advanced (он же policy) routing'a, что вы можете заставить ОС поменять решение о маршрутизации.

Пользователь решил продолжить мысль 20 Ноября 2009, 10:32:53:
так а заработала после применения патча и правки параметров о которых вы выше писали?
и можо ли ваши конфиги посмотреть?
что вообще сделали чтоб заработало?
Собирать ядро с патчем мне лень.
Запустить новое ядро 'из коробки' у меня не получилось.
Использовал workaround, то есть отключил сразу везде rp_filter.
Это решение потребует дополнительно проверить dest ip пакетов на всех интерфейсах, но меня это в принципе устраивает.
« Последнее редактирование: 20 Ноября 2009, 10:32:53 от badfiles »

Оффлайн Enkil-404

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #158 : 20 Ноября 2009, 10:37:10 »
Цитировать
Использовал workaround, то есть отключил сразу везде rp_filter.
т.е. применил скрипт
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
   /bin/echo "0" > ${interface}
done
?
однократно или добавили в скрипт роутинга?

и как проверить
Цитировать
Это решение потребует дополнительно проверить dest ip пакетов на всех интерфейсах, но меня это в принципе устраивает.

Пользователь решил продолжить мысль 20 Ноября 2009, 10:50:56:
2 Nesmit

2й вариант
У вас так выглядит?
Цитировать
$ cat /etc/iproute2/rt_tables
#
# reserved values
#
255   local
254   main
253   default
0   unspec
#
# local
#
#1   inr.ruhep

10   T1   # это наши таблицы
11   T2   #

да, именно так
« Последнее редактирование: 20 Ноября 2009, 10:50:56 от Enkil-404 »

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #159 : 20 Ноября 2009, 10:51:27 »
INPUT у меня по умолчанию DROP, поэтому и разрешаю
Странно, незаметил

Цитировать
Так ведь в iptables правила работают сверху вниз, если пакету подошло верхнее правило(с меткой) то он получает метку 10 или 11, если не подошло ни одно из верхних правил, то он получает метку 10.

iptables -t mangle -A PREROUTING  -s $NET_LOCAL1 -p tcp --dport 25  -j MARK --set-mark 10
iptables -t mangle -A PREROUTING  -s $NET_LOCAL1 -p tcp --dport 25 -j RETURN
дык, вы же обратно возвращаете в таблицу?

Цитировать
Спасибо, проверим, посмотрим

Пользователь решил продолжить мысль 20 Ноября 2009, 08:19:50:
Цитировать
Далее. Если запустить данный скрипт без фаервола, уже должны включиться оба канала одновременно. проверить можно

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

Ну значит, в скрипте явные ошибки. Что то где то перепунано. Результат не приведете случаем? заодно вывод ip route, ifconfig

Оффлайн Enkil-404

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #160 : 20 Ноября 2009, 10:59:22 »
приведу обязательно, но вечером после 18-00, когда манагеры уйдут))
вот только результат чего приводить?
если запускаю оый скрипт, то отваливается инет и нет пинга к шлюзу.
локально подключаться к серваку могу только после 18-00(это чтоб при запущенном скрипте показать выводы команд)

Пользователь решил продолжить мысль 20 Ноября 2009, 07:01:14:
почему отваливается инет не понятно(если использовать скрипт балансировки без фаера), но почему не пингуется вроде ясно
iptables -P INPUT DROP
Пользователь решил продолжить мысль 20 Ноября 2009, 11:12:57:
badfiles, можно посмотреть ваши работающие конфиги(без адресов ессно)?
и можете описать порядок действий, приводящих к корректной работе?(без описания прошедших мытарств) - чтобы увидеть в чем моя ошибка
« Последнее редактирование: 20 Ноября 2009, 11:12:57 от Enkil-404 »

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #161 : 20 Ноября 2009, 11:52:00 »
конфига на iptables у меня нет (
У меня есть iptables-save, который я поднимаю через post-up в /etc/network/interfaces.

(Нажмите, чтобы показать/скрыть)

(Нажмите, чтобы показать/скрыть)

Схема, описанная в этой теме 100% рабочая, что с одной, что с двумя таблицами. Я не знаю, с какого ядра поломали совместную работу advanced routing и меченых пакетов, но теоретически должен помочь патч на ядро. Поскольку патчить ядро или ставить rc-ядро -- это не наш метод, то  я отключил rp_filter, но теперь придется внимательно переделать правила iptables, чтобы не проходили левые пакеты.
« Последнее редактирование: 20 Ноября 2009, 12:08:14 от badfiles »

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #162 : 20 Ноября 2009, 13:08:22 »
Компилируем в хауту с обязательной привязкой версии дистриба?

Оффлайн Enkil-404

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #163 : 20 Ноября 2009, 13:46:56 »
да надо бы))
я думаю кроме нас найдутся те, кому это понадобится, а зачем им снова всю эту мутатень проходить если мы уже прошли)))

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #164 : 20 Ноября 2009, 15:02:23 »
На самом деле, вопрос этот поднимался еще 2 года назад.
Но инициативы и толковых людей не было. Сейчас уникальный случай, когда одну цель преследуют сразу несколько человек. Причем цель простая, но редко распространена.
Мой знакомый админ, грит что не мучался с сортировкой по портам, а тупо nexthop. И типа проблем не испытывает уже несколько лет.
2й вариант он мне написал.

 

Страница сгенерирована за 0.023 секунд. Запросов: 19.