LINUX.ORG.RU
ФорумAdmin

маршрутизация по TOS


0

0

Настроил выход сквида через отличный от дефолтного шлюз, используя заворачивание меченых по tcp_outgoing_tos 0x04 (кстати, почему то не все значения прокатывают при добавлении посредством ip rule add tos) пакетов в специальную таблицу маршрутизации.

Правильно ли я понимаю, что пакеты уходят с моей машины с установленным полем TOS равным 0x04 (не знаю, как это проверить)?

Является ли это нежелательным явлением, нужно ли посредством iptables возвращать для этих пакетов TOS равный 0x0?

И да, является ли TOS равный 0x0 TOS'ом, устанавливаемым для всех пакетов по умолчанию?


snif-snuf-snoorre, люрре, базилюрре поле TOS отлично палится снифером, не? И да, TOS 0x0 является TOS-ом по умолчанию, не устанавливаемым для всех пакетов.

spunky ★★
()

у сквида есть опция кажись tcp_outgoing_address. а маршрутизацию настроить согласно исходящему адресу а не полям ToS. Они ж не для этого предназначены были :)

azure ★★
()
Ответ на: комментарий от azure

tcp_outgoing_address - адрес, интерфейса, с которого будут идти пакеты. Но идти они должны не просто в /dev/eth0, а через шлюз в этой подсети. Причем только от сквида, все остальное, выходящее на /dev/eth0 уже отроутерено как следует. Может конечно есть простое решение с маршрутами, как заворачивать такие пакеты на шлюз, я пока не могу представить, воображалка хромает на нестандартное мышление.

С сниф-сниф наф-нафами пока не сталкивался. Я правильно понимаю, что православный tcpdump не покажет TOS? Разве что, можно искать байты нужные при выводе заголовка пакета, но это не по феншую как-то.

setur
() автор топика

Судя по http://www.opennet.ru/docs/RUS/iptables/misc/iptables-tutorial/images/tables_... пакеты сразу после сквида маршрутизируются (на дефолтный шлюз) и далее уже ничего с этим не поделаешь. Если не устраивает маршрутизация по TOS, нужно как-то выделять сквидовые пакеты и заворачивать их по другому маршруту. Вопрос, на основании чего? Пойду почитаю какие плюшки есть в ip rule add.

setur
() автор топика
Ответ на: комментарий от setur

Добавьте себе на машину ещё один адрес, на него привяжите squid. Сделате для него маршрутизацию как надо, а потом делайте SNAT для этого адреса.

mky ★★★★★
()

echo "200 squid" >> /etc/iproute2/rt_tables

ip rule add from 192.168.2.1 lookup squid
ip rule add fwmark 9 lookup squid

ip route add default via 192.168.2.2 table squid

ip route flush cache

iptables -t mangle -A OUTPUT -m owner --uid-owner squid -d ! 127.0.0.1 -j MARK --set-mark 9
iptables -t mangle -A OUTPUT -m owner --uid-owner squid -d 192.168.1.0/24 -j MARK --set-mark 0

iptables -t nat -A POSTROUTING -m owner --uid-owner squid -o eth0 -j SNAT --to-source 192.168.2.1

SlavikSS ★★
()
Ответ на: комментарий от SlavikSS

только -m owner поломано на SMP ЕМНИП (если вдруг у автора SMP)

Nao ★★★★★
()
Ответ на: комментарий от SlavikSS

Ээ, долго и много думал, но либо я полный идиот, либо это феерический бред)

Я только не понял, сквид подразумевается посылает в инет с 192.168.2.1, или же с какого-то третьего интерфейса. Хотя это особо ничего не меняет, буду думать что посылает с 192.168.2.1.

>ip rule add from 192.168.2.1 lookup squid

>ip rule add fwmark 9 lookup squid

>ip route add default via 192.168.2.2 table squid

Все что идет с 192.168.2.1 маршрутизируется на 192.168.2.2 (как я понял это шлюз). Хотя нам нужно только то, что идет со сквида. (строчку 192.168.2.0/24 dev eth0 таки быть, добавим в таблицу squid).

>iptables -t mangle -A OUTPUT -m owner --uid-owner squid -d ! 127.0.0.1 -j MARK --set-mark 9

>iptables -t mangle -A OUTPUT -m owner --uid-owner squid -d 192.168.1.0/24 -j MARK --set-mark 0

Все что от сквида для инета помечаем 9, остальное - 0

>iptables -t nat -A POSTROUTING -m owner --uid-owner squid -o eth0 -j SNAT --to-source 192.168.2.1

Самое интересное. Для всего, что от сквида, зачем-то ставим соурс ип 192.168.2.1, причем оно с него же и шло. Ну и дальше все идет на шлюз. Зачем бодяги с меткой пакетов не ясно. Объясните, люди добрые.

Вообщем я пока оставил маршрутизацию по TOS, добавил строчку

iptables -t mangle -A POSTROUTING -s 192.168.2.1 -m tos --tos 0x04 -j TOS --set-tos 0x00

Думаю особого преступления в этом нет.

setur
() автор топика
Ответ на: комментарий от setur

> tcp_outgoing_address - адрес, интерфейса, с которого будут идти пакеты. Но идти они должны не просто в /dev/eth0, а через шлюз в этой подсети.

это не адрес интерфейса, а ип-адрес отправителя в генерируемых пакетах. на основании ип-адреса отправителя (сорц адрес) производится роутинг (т.н. source-based routing). ip rule help

google://lartc

azure ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.