1 |
21.10.2010 18:25, Sergey Kobzar пишет: |
2 |
> On 10/21/10 14:42, Nikita Kipriyanov wrote: |
3 |
> |
4 |
>> Пример: |
5 |
>> |
6 |
>> postup() { |
7 |
>> if [ "$IFACE" = "ppp0" ]; then /etc/conf.d/ns_update.tcl; fi |
8 |
>> return 0 |
9 |
>> } |
10 |
>> |
11 |
>> postup() вызывается на поднятии каждого интерфейса. Если это ppp0, то |
12 |
>> вызывается скриптик ns_update.tcl, который определяет полученный адрес и |
13 |
>> общается с dns-сервером; в данном случае так реализовано динамическое |
14 |
>> обновление DNS. |
15 |
> |
16 |
> Спасибо - понял. |
17 |
> |
18 |
> У меня не работает PBR: |
19 |
> |
20 |
> Добавил postup() и postdown() в /etc/conf.d/net из |
21 |
> /etc/conf.d/net.example. Также добавил в /etc/conf.d/net: |
22 |
> |
23 |
> config_eth2=( "10.10.252.1 netmask 255.255.255.252" ) |
24 |
> routes_eth2=( "default via 10.10.252.2 table ukrtel" ) |
25 |
> rules_eth2=( "from 10.10.252.1 table ukrtel" ) |
26 |
> |
27 |
> # ip rule list |
28 |
> 0: from all lookup local |
29 |
> 32765: from 10.10.252.1 iif eth2 lookup ukrtel |
30 |
> 32766: from all lookup main |
31 |
> 32767: from all lookup default |
32 |
> |
33 |
> # ip route list table ukrtel |
34 |
> default via 10.10.252.2 dev eth2 metric 1 |
35 |
> |
36 |
> 'mtr -a 10.10.252.1' даже до 10.10.252.2 не доходит. |
37 |
> |
38 |
> Что не так? |
39 |
> |
40 |
Согласно правилу RPDB, которое вы привели, ЕСЛИ ((адрес источника стоит |
41 |
10.10.252.1) И (пакет попал в систему через интерфейс eth2)), ТО он |
42 |
будет маршрутизироваться по таблице ukrtel. Если там маршрут не будет |
43 |
найден, то дальше будет использованы другие таблицы (по порядку номеров, |
44 |
которые вы им задали в /etc/iproute2/rt_tables). |
45 |
|
46 |
В данном случае, как вы уже сами поняли, условие не выполнится никогда, |
47 |
т.е. правило не выполнится, а в других таблицах подходящих маршрутов нет. |
48 |
|
49 |
Linux умеет выбирать таблицу маршрутизации исходя из разных свойств |
50 |
пакета: источник, приёмник, интерфейс, флаги режима обслуживания, метка |
51 |
netfilter. Приведённые в примерах обработчики переменных rules_... |
52 |
автоматически к каждому правилу добавляют iif $IFACE, т.е. "данное |
53 |
правило маршрутиации применять к пакетам только вошедшим через данный |
54 |
интерфейс". (В противном случае смысла делать для каждого интерфейса |
55 |
свою переменную rules_... нет -- правила больше никак не зависят от |
56 |
интерфейса.) |
57 |
|
58 |
В общем, вам либо поменять функции и убрать это добавление iif $IFACE, |
59 |
либо добавлять правила другим способом. |
60 |
|
61 |
-- |
62 |
Никита Киприянов, ООО "Р-Терминал" |
63 |
|
64 |
Тел.: +7 (4732) 271657, 404243, 747120 |
65 |
E-mail: merlin@×××××.ru |
66 |
Jabber ID: merlin@×××××.ru |