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


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

Автор Тема: Настройка 2-х таблиц маршрутизации и маркировка пакетов  (Прочитано 2863 раз)

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

Оффлайн rud.bodya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Здравстсвуйте! Пытаюсь настроить распределение трафика между двумя каналами в интернет. Пока для наглядности хочу посылать tcp по одному каналу, а udp и icmp - по другому. Маркирую tcp пакеты единицей, а udp и icmp - двойкой:
iptables -t mangle -A OUTPUT -p tcp -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p udp -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p icmp -j MARK --set-mark 2

Потом пишу правила для выбора таблицы маршрутизации на основании этих меток:
ip rule add fwmark 1 lookup t1
ip rule add fwmark 2 lookup t2

И, наконец, заполняю сами таблицы:
ip ro add default via 192.168.0.1 table t1
ip ro add default via 192.168.1.1 table t2

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

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
ifconfig -a ещё покажите

Оффлайн rud.bodya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
ifconfig -a
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 07 Марта 2012, 18:10:36 от rud.bodya »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28429
    • Просмотр профиля
Вместо того, чтобы гадать, надо смотреть. tcpdump'ом, например. Или wireshark поставьте, если это десктоп.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн rud.bodya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
пробовал tcpdump:
ping google.com
sudo tcpdump -nn -t -v -p -i eth1 udp

(Нажмите, чтобы показать/скрыть)
не с того интерфейса отправляет...

Пользователь решил продолжить мысль 07 Марта 2012, 18:07:24:
Добавил
sudo iptables -t nat -A POSTROUTING -p udp -o eth1 -j SNAT --to 192.168.1.2
sudo iptables -t nat -A POSTROUTING -p icmp -o eth1 -j SNAT --to 192.168.1.2


Теперь:
ping google.com
sudo tcpdump -nn -t -v -p -i eth1 udp

(Нажмите, чтобы показать/скрыть)
Какие-то ответы приходят, но адрес все-равно не ресолвится

ping 8.8.8.8.
sudo tcpdump -nn -t -v -p -i eth1 icmp
то
(Нажмите, чтобы показать/скрыть)
и пинга тоже нет
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 07 Марта 2012, 18:09:31 от rud.bodya »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28429
    • Просмотр профиля
Так у вас ещё и ДНС гугловские прописаны... Свои прописать - никак?
iptables-save показывайте.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн rud.bodya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Никак, своих днс просто нет:). А что с гугловскими не так?
sudo iptables-save
(Нажмите, чтобы показать/скрыть)

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28429
    • Просмотр профиля
Быть такого не может, чтобы своих не было. Интернет от кого-то же получаете? Не напрямую к гуглу подключены, чай.

А проблема очевидная:
http://www.docum.org/docum.org/kptd/
Маршрутизация срабатывает до того, как вы промаркируете пакет.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Таким образом получается, что маршрутизация с помощью маркирования возможна только для проходящих пакетов и только в цепочке PREROUTING?

Но смотрите как интересно. В статье по балансировке каналов местной wiki используется именно цепочка OUTPUT
Цитировать
iptables -t mangle -A OUTPUT -s $l_net -m state --state new,related -j NEW_OUT_CONN
« Последнее редактирование: 07 Марта 2012, 18:41:50 от fisher74 »

Оффлайн rud.bodya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Судя по этой http://www.docum.org/docum.org/kptd/ ссылке, да... Но ведь в инете дают примеры (по которым я все это делал) именно для исходящих пакетов. И там пишут, что все работает...
вот тут например: http://klinkov.ya.ru/replies.xml?item_no=227
« Последнее редактирование: 07 Марта 2012, 18:45:50 от rud.bodya »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28429
    • Просмотр профиля
Таким образом получается, что маршрутизация с помощью маркирования возможна только для проходящих пакетов и только в цепочке PREROUTING?
Я этого не утверждал. Вероятно, наш автор не учёл чего-то ещё.
Например, не создал таблицы маршрутизации.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Думаю, что "переосмысливание" маршрута происходит на этапе reroute check.
И возможно, это реализовано в ядрах 2.6 (в статье, указанной уважаемым AnrDaemon речь идет о ядрах 2.2-2.4)

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28429
    • Просмотр профиля
Мило. Мило. Слабо читаемо, но мило. Спасибо за наводку.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн rud.bodya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
таблицы создал:)

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
ping google.comman ping же!
Необходимо явно указывать интерфейс, иначе по умолчанию icmp идет через таблицу main, а там как известно ничего нет.
Так же и c traceroute.
OpenWrt 19.07

 

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