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


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

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

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

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #90 : 15 Ноября 2009, 22:37:36 »
я хочу завернуть опоеделенный трафик на определеный gw. В последнем случае https трафик направить через другой gw.
Исходные данные в другой ветке, просто мы плавно переехали сюда, мой косяк.

Да, попробую половить пакеты с флагом RST, Спасибо за подсказку.
Скрипты все 100 раз опубликованы в этой ветке, просто цифры мои. Не думал, что скрипты более информативны,  чем выводы таблиц.

Оффлайн fhieos

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #91 : 15 Ноября 2009, 23:08:50 »
badfiles, я бы посоветовал вспомнить главный критерий успеха - keep it simple.
Попробуйте максимально упростить правила файрволла, оставив *абсолютный* минимум.
В моем случае с 2-мя провайдерами я использую всего 1 доп.таблицу маршрутизации, несмотря на кучу howto, настаивающих на отдельной таблице для каждого интерфейса.

Пользователь решил продолжить мысль 15 Ноября 2009, 23:18:19:
Вы это не находили?
https://help.ubuntu.com/community/InternetAndNetworking/DualHomedGatewayDHCP
« Последнее редактирование: 15 Ноября 2009, 23:18:19 от fhieos »

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #92 : 15 Ноября 2009, 23:34:06 »
Ну да, я тоже думал сделать одну доп. таблицу, но неужели именно это является проблемой?

Пользователь решил продолжить мысль 15 Ноября 2009, 23:54:05:
В мане по вашей ссылке не нашел ничего, чего не было бы в этой теме.
« Последнее редактирование: 15 Ноября 2009, 23:54:05 от badfiles »

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #93 : 16 Ноября 2009, 01:15:41 »
Приведите конфы, иногда чужой глаз видит проблемы. С циферками каждый день сталкиваюсь, работа ответственная проверяем в 2 руки причем методом чтения. И ошибки часто находим, опечатки. Причем человек несколько раз сам проверял.
Если не хотите светить, киньте на почту.
to fhieos  Любопытно. Но ничего особенно нового.
« Последнее редактирование: 16 Ноября 2009, 01:18:56 от Nesmit »

Оффлайн fhieos

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #94 : 16 Ноября 2009, 03:30:46 »
Nesmit, я привел ссылку исключительно "для сведения".
Во-первых, ссылка в тему - в ней речь именно об Убунте.
Во-вторых, вариант минималистический и при этом, на мой взгляд, рабочий, хотя в описанной конфигурации не хватает настроек для полноценной работы (доступа извне) по любому из каналов как с самим шлюзом, так и с любой машиной внутри сети.

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #95 : 16 Ноября 2009, 08:36:24 »
Ничего необычного в моих конфах нет.

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

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


Скрипты специальные, тестовые. Поскольку на боевом сервере маршрутизация по  этой схеме не заработала по причине невозможности получения обратного пакета, я решил проверить на клиенте, подключив второй канал (gprs). После подключения канала запускаются по очереди эти 2 скрипта с полученным от gprs ip в параметре и делается telnet на 443 порт сервера. Задача -- получить обратный пакет, вообще установить соединене через альтеративный шлюз.
Выводы скриптов я приводил, у меня только один главный вопрос, почему не устанавливается соединение?

ip route list table main
(Нажмите, чтобы показать/скрыть)
ip route list table T1
(Нажмите, чтобы показать/скрыть)
ip route list table T2
(Нажмите, чтобы показать/скрыть)
ip rule list
(Нажмите, чтобы показать/скрыть)
таблица mangle
(Нажмите, чтобы показать/скрыть)
таблица nat
(Нажмите, чтобы показать/скрыть)
все остальное в акцепт.


8   20.997404   172.19.106.144   94.25.208.252   TCP   39729 > https [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=984384 TSER=0 WS=6
9   21.809393   94.25.208.252   172.19.106.144   TCP   https > 39729 [SYN, ACK] Seq=4164072487 Ack=1 Win=8190 Len=0 MSS=1380
и на этом финиш, все начинается с начала

Почему я не получаю обратный пакет, а?

PS.
Так выглядят пакеты, если поменять в схеме ТОЛЬКО дефолт роут в таблице main на 10.64.64.64
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 16 Ноября 2009, 15:32:42 от badfiles »

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #96 : 16 Ноября 2009, 09:52:40 »
Вообщем все так же. Кроме этих строк заполняющих main таблицу. Не знаю делают ли они погоду.
ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1      #заполняем основную таблицу адресов. сеть на первого провайдера
ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2      #заполняем основную таблицу адресов. сеть на второго провайдера
Правда проверял по 80 порту, так проще было определить с какого ip вышел в инет.
А если маскарадить интерфейс ppp?

И потом. ты метишь на ВЫХОДЕ. iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 443 -j MARK --set-mark $MARK
а где то в середине, ищешь метку iptables -t nat -A POSTROUTING -m mark --mark $MARK -j SNAT --to-source $1
Ясен перец метки еще несуществует, а ты уже натишь.

Вот мой вариант 100% рабочий.
iptables -t nat -A POSTROUTING -s 192.168.161.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.3.8
iptables -t mangle -A PREROUTING -s 192.168.161.0/24 -p tcp --dport 80 -j MARK --set-mark 12
можешь тупо убрать  -s 192.168.161.0/24 и применить.

Пользователь решил продолжить мысль 16 Ноября 2009, 09:56:07:
вообще непонятно откуда ты взял OUTPUT.
http://www.opennet.ru/docs/RUS/iptables/#MARKTARGET
« Последнее редактирование: 16 Ноября 2009, 09:56:07 от Nesmit »

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #97 : 16 Ноября 2009, 10:49:32 »
Nesmit, мне кажется, ты неправ. Во первых, задача маршрутизации транзитных пакетов через другой gw более не стоит, поскольку на боевом сервере обламывается с тем же результатом -- отсутствие обратного пакета на нужный интерфейс. Поэтому я теперь пытаюсь разобраться с локальными пакетами на максимально свободной от всего лишнего конфигурации. Правила iptables для такой задачи работают оба, что подтверждает tcpdump. (смотри пост с выводом таблиц).

Маскарадить я тоже пробовал, результат тот же.

Вопрос у меня все тот же -- почему не устанавливается соединение, ведь ответный пакет приходит на правильный интерфейс. Ну то есть на него нет никакой реакции, в tcpdump его видит, а соединение не устанавливается. То есть пропадает он где-то между интерфейсом и приложением. Здесь я не знаю, какую терминологию использовать. Аналогичное поведение наблюдается в случае транзитного пакета. Обратный пакет есть, но он не проходит в локальную сеть.



Пользователь решил продолжить мысль 16 Ноября 2009, 06:58:47:
Есть подозрение, что я неосмотрительно проигнорировал заполнение таблицы main, поскольку там уже есть эти записи. Щас попробую организовать транзит.

Пользователь решил продолжить мысль 16 Ноября 2009, 09:09:28:
Как и следовало ожидать, добавление в таблицу main существующих там маршрутов ни к чему не привело.

RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists

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


Пользователь решил продолжить мысль 16 Ноября 2009, 12:42:38:
А не БАГ ли это?
« Последнее редактирование: 16 Ноября 2009, 12:42:38 от badfiles »

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #98 : 16 Ноября 2009, 14:29:01 »
Цитировать
Nesmit, мне кажется, ты неправ. Во первых, задача маршрутизации транзитных пакетов через другой gw более не стоит, поскольку на боевом сервере обламывается с тем же результатом -- отсутствие обратного пакета на нужный интерфейс. Поэтому я теперь пытаюсь разобраться с локальными пакетами на максимально свободной от всего лишнего конфигурации. Правила iptables для такой задачи работают оба, что подтверждает tcpdump. (смотри пост с выводом таблиц).
Возможно. Но мне непонятно почему ты метку ставишь на выходе?
Почему тогда в моем случае все работает как часы? Если правило меток слизал из man'ов по iptables.
Вот схема прохождения пакета.
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 443 -j MARK --set-mark $MARK
iptables -t nat -A POSTROUTING -m mark --mark $MARK -j SNAT --to-source $1

Видишь, по схеме твой пакет метится ПОСЛЕ того как производится маршрутизация. Я не прав? так каким боком он должен идти по твоему gw2? Т.е. в твоем случае получается. Что пакету дают маршрут по умолчанию, потом ты его метишь и следом натишь. На выходе ты получаешь что пакет пошел по не тому интерфейсу и не стем ip адресом. Логично что он дохнет. Его GW1 провайдера не пустит.

Цитировать
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
Это говорит о том что маршрут не принят по причине уже существующего. Можно предварительно убить то что по умолчанию и создать уже по своему. Во втором варианте так и поступил.
« Последнее редактирование: 16 Ноября 2009, 14:40:48 от Nesmit »

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #99 : 16 Ноября 2009, 14:38:13 »
По поводу схемы прошу сюда https://forum.ubuntu.ru/index.php?topic=74275

Маршруты пробовал убить и вписать свои -- не помогло.

Еще раз тонко намекаю на то, что не работает у меня и ваш вариант для транзитного пакета по той же причине.
Какое в вас ядро?

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #100 : 16 Ноября 2009, 14:46:09 »
8.04.3 обновленная
Почему не работает, если у меня работает?

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #101 : 16 Ноября 2009, 15:02:43 »
Поэтому и спросил.
Думаю, что у меня не работает, потому что это баг последнего ядра. У меня просто нет больше вариантов.

Оффлайн fhieos

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #102 : 16 Ноября 2009, 15:11:37 »
badfiles, давайте определимся, для кого Вы routing decision настраиваете:
1. только для самой машины-шлюза с двумя линками и ее локальных процессов
2. только для клиентов в лок сети шлющих машине-шлюзу пакеты
3. первое и второе

Вы привели конфиги для варианта 1. по моему мнению.
Кстати можно было бы уже давно разобрать полный вывод tcpdump - Вы делали или нет?

Оффлайн badfiles

  • Участник
  • *
  • Сообщений: 230
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #103 : 16 Ноября 2009, 15:19:34 »
Сначала задача стояла 1+2=3, но поскольку она натолкнулась наполный разброд как теории, так и практических реализаций, то я решил сделать на кленте с gprs модемом хотябы 1, а на боевом сервере хотябы 2. С одинаковым результатом.

Сейчас как раз колдую с tcpdump.

Оффлайн fhieos

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: IPROUTE2 + 2 провайдера
« Ответ #104 : 16 Ноября 2009, 15:22:27 »
И еще
что именно делает вот это правило
iptables -t nat -A POSTROUTING -m mark --mark $MARK -j SNAT --to-source $1и вот это
ip rule add fwmark 111 table T1 если это не опечатка (111 != 1), то явная попытка сделать одно и то же одновременно 2-мя способами
Если опечатка, то "SNAT --to-source $1" просто никогда не должно работать, т.к. метка "1" нигде не ставится

 

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