Gentoo Archives: gentoo-user-ru

From: Sergey Kobzar <sergey.kobzar@××××.ru>
To: gentoo-user-ru@l.g.o
Subject: Re: [gentoo-user-ru] Squid и два аплинка
Date: Fri, 22 Oct 2010 07:18:10
Message-Id: 4CC13AA7.2010008@mail.ru
In Reply to: Re: [gentoo-user-ru] Squid и два аплинка by Nikita Kipriyanov
1 On 10/22/10 09:53, Nikita Kipriyanov wrote:
2
3 > 21.10.2010 18:25, Sergey Kobzar пишет:
4 >> On 10/21/10 14:42, Nikita Kipriyanov wrote:
5 >>
6 >>> Пример:
7 >>>
8 >>> postup() {
9 >>> if [ "$IFACE" = "ppp0" ]; then /etc/conf.d/ns_update.tcl; fi
10 >>> return 0
11 >>> }
12 >>>
13 >>> postup() вызывается на поднятии каждого интерфейса. Если это ppp0, то
14 >>> вызывается скриптик ns_update.tcl, который определяет полученный адрес и
15 >>> общается с dns-сервером; в данном случае так реализовано динамическое
16 >>> обновление DNS.
17 >>
18 >> Спасибо - понял.
19 >>
20 >> У меня не работает PBR:
21 >>
22 >> Добавил postup() и postdown() в /etc/conf.d/net из
23 >> /etc/conf.d/net.example. Также добавил в /etc/conf.d/net:
24 >>
25 >> config_eth2=( "10.10.252.1 netmask 255.255.255.252" )
26 >> routes_eth2=( "default via 10.10.252.2 table ukrtel" )
27 >> rules_eth2=( "from 10.10.252.1 table ukrtel" )
28 >>
29 >> # ip rule list
30 >> 0: from all lookup local
31 >> 32765: from 10.10.252.1 iif eth2 lookup ukrtel
32 >> 32766: from all lookup main
33 >> 32767: from all lookup default
34 >>
35 >> # ip route list table ukrtel
36 >> default via 10.10.252.2 dev eth2 metric 1
37 >>
38 >> 'mtr -a 10.10.252.1' даже до 10.10.252.2 не доходит.
39 >>
40 >> Что не так?
41 >>
42 > Согласно правилу RPDB, которое вы привели, ЕСЛИ ((адрес источника стоит
43 > 10.10.252.1)
44
45 да
46
47 > И (пакет попал в систему через интерфейс eth2)),
48
49 мне надо описать, что src ip (int) является eth2. Я полагаю, Squid при
50 отправке пакета выполняет bind() и отсылает пакет через выбранный интерфейс.
51
52 > ТО он
53 > будет маршрутизироваться по таблице ukrtel. Если там маршрут не будет
54 > найден, то дальше будет использованы другие таблицы (по порядку номеров,
55 > которые вы им задали в /etc/iproute2/rt_tables).
56
57 это понятно
58
59 > В данном случае, как вы уже сами поняли, условие не выполнится никогда,
60 > т.е. правило не выполнится, а в других таблицах подходящих маршрутов нет.
61
62 угу - пакет уходит через eth1, на который смотрит dgw.
63
64
65 > Linux умеет выбирать таблицу маршрутизации исходя из разных свойств
66 > пакета: источник, приёмник, интерфейс, флаги режима обслуживания, метка
67 > netfilter. Приведённые в примерах обработчики переменных rules_...
68 > автоматически к каждому правилу добавляют iif $IFACE, т.е. "данное
69 > правило маршрутиации применять к пакетам только вошедшим через данный
70 > интерфейс". (В противном случае смысла делать для каждого интерфейса
71 > свою переменную rules_... нет -- правила больше никак не зависят от
72 > интерфейса.)
73
74 мне нужно описать, что правил применять для пакетов, исходящих с
75 указанного интерфейса.
76
77
78 > В общем, вам либо поменять функции и убрать это добавление iif $IFACE,
79 > либо добавлять правила другим способом.
80
81 Никита, спасибо за подробное объяснение - буду смотреть...