LINUX.ORG.RU
ФорумAdmin

iproute2 iptables - j mark


0

1

Здрасте. Есть 2 канала, хороший и плохой. На centos 6 пытаюсь завернуть http на плохой, все остальное на хороший. Настраивал по этой статье: http://lartc.org/howto/lartc.cookbook.squid.html

# echo 202 http://www.out >> /etc/iproute2/rt_tables # ip rule add fwmark 2 table http://www.out # ip route add default via 192.168.1.1 table http://www.out # ip route flush cache

# ip route show table http://www.out default via 192.168.1.1 dev eth0 #ip route show ..... default via 192.168.2.1 dev eth2

Далее, если добавлю маршрут по источнику #ip rule add from 192.168.1.10 table http://www.out Маршрут корректно отрабатывает. Но так как я хочу завернут http-трафик я пытаюсь сделать это через метки: $IPTABLES -A PREROUTING -t mangle -p tcp --dport 80 -j NMARK --set-mark 2 Пробовал так же CONNMARK, но это не работает. Будьте добрый.

-A PREROUTING -t mangle -i $LOCAL_IFACE -p tcp --dport 80 -j CONNMARK --set-mark 80
-A PREROUTING -t mangle -i $LOCAL_IFACE -p tcp --dport 80 -j CONNMARK --restore-mark
ip rule add fwmark 80 table  http://www.out
uspen ★★★★★ ()
Ответ на: комментарий от uspen

Не помогает. Я еще немного поискал, вроде как нужен модуль ip_conntrack. Загрузил, но файл /proc/net/ip_conntrack, где, как я понял, можно увидеть помеченные пакеты - пустой, точнее его даже нет.

Romkin ()
Ответ на: комментарий от uspen

А просто MARK, а то сначала соединение, потом переносим на пакеты, чтоб не сразу пакеты маркировать, тем более протокол http - проще не бывает.

$IPTABLES -A PREROUTING -t mangle -p tcp --dport 80 -j MARK --set-mark 2

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

Да я сначала mark, а уже позже нашел connmark. И ни как. Самое обидное долго искал как это все разделить по каналам, и если по ip то работает, значит дело точно в марках. Может это как-то логировать, как отследить а?

Romkin ()
Ответ на: комментарий от lvi

А вообще, конечно же, я расчитываю поставить прокси. Если я буду метить пакеты, а затем заворачивать их на squid, вероятно метки будут сбрасываться? Может я вообще не верное решение выбрал?

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

Я не знаю организацию вашей сети, но если вы поставите squid на машину у которой 2 интерфейса к разным провайдерам, iproute2 настроите по IP-источника стандартно с двумя таблицами, то через параметр tcp_outgoing_address в squid'е можно будет как угодно разруливать, не зависимо является ли эта машина гейтом или нет.

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

Пожалуйста, для отправки сообщений с командами, логами, используте режим LORCODE (теги описаны в местной Wiki), иначе ваши посты сложно читать.

Проверьте, что в таблице PREROUTING пакеты маркируются (растёт счётчик), и что там нет других правил, которые перемаркируют эти пакеты. При этом если вы проверяете wget-ом с сервера, то маркировать надо в OUTPUT. Посмотрите, нет ли у вас лишних «ip rule» или лишних записей в таблице маршрутизации "http://www.out"

Пакеты идут на дефолт роутер

Каким образом определили это?

И, возможно, что вам надо SNAT-правило.

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

Где-то, вроде оф.доке, прочел tcp_outgoing_address использовать не рекомендуется. Тем не менее в ходе нашей беседы нашел след. решение: И так: 1.По дефолту ставим роут на плохой канал. 2.Средствами iproute2 весь трафик из локальной сети направляем на хороший канал. 3. Iptables перехватывает весь злокачественный трафик и кидает его на транспарент squid. Трафик от squid не считается трафиком из локальной сети и идет по дефолт маршруту.

Спасибо за внимание!

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