The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"проблема с маршрутизацией через двух провайдеров"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT)
Изначальное сообщение [ Отслеживать ]

"проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 10-Мрт-11, 22:46 
Есть сеть с роутером (Fedora 14) подключенным к двум провайдерам. На одного default route, а на второго нужно завернуть web-траффик.
Настраиваю так
echo "1" > /proc/sys/net/ipv4/ip_forward
#echo 202 prov2 >> /etc/iproute2/rt_tables
/sbin/ip route add default via $PROV2_GATEWAY dev $PROV2_IFACE table prov2
/sbin/ip rule add fwmark 12 table prov2
/sbin/iptables -t mangle -A PREROUTING -i $LAN_IFACE -p tcp --dport 80 -j MARK --set-mark 12
/sbin/iptables -t nat -A POSTROUTING -o $PROV1_IFACE -j SNAT --to-source $PROV1_IP
/sbin/iptables -t nat -A POSTROUTING -o $PROV2_IFACE -j SNAT --to-source $PROV2_IP
Не работает!
Я уже настраивал так один сервер (там Fedora 11) - все идеально работает, настройки переписываю один к одному.
Что интересно, если завернуть траффик отдельно взятой машины на второго провайдера
/sbin/ip rule add from 10.10.10.20 table prov2
работает.
При журналировании пакетов в таблице mangle картину такая: пакеты на 80 порт на web-сервер (mail.ru) наблюдаю в цепочках PREROUTING, FORWARD, POSTROUTING. Ответные пакеты от web-сервера наблюдаю в цепочке PREROUTING, а больше нигде не наблюдаю (ни в FORWARD, ни в INPUT)
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 10-Мрт-11, 23:22 
не важно, как вы настраиваете, важно _что получается в результате_.

В этом вам помогут команды:

tcpdump (куда в действительности уходят пакеты, с какими адресами, возвращаются ли обратно)

iptables --line -nvL
iptables --line -nvL -t mangle
iptables --line -nvL -t nat


ip ru sh

ip ro sh table prov2
ip ro sh table main
ip ro sh table default

и "ip ro sh" прочих таблиц, имеющихся в вашей системе.


// вот вы привели команду iptables -A .... - это добавление в конец списка. Дык что в нем в начале - телепатические способности - стоят слишком дорого, боюсь не потянете оплатить.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 17:31 
Приведенные команды - практически вся настройка роутера

# iptables --line -nvL
Chain INPUT (policy ACCEPT 2326 packets, 240K bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 32 packets, 4687 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 2931 packets, 369K bytes)
num   pkts bytes target     prot opt in     out     source               destination

# iptables --line -nvL -t mangle
Chain PREROUTING (policy ACCEPT 118 packets, 11926 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 MARK       tcp  --  vlan10 *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 MARK set 0xc

Chain INPUT (policy ACCEPT 86 packets, 7239 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 32 packets, 4687 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 53 packets, 5557 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 85 packets, 10244 bytes)
num   pkts bytes target     prot opt in     out     source               destination
# iptables --line -nvL -t nat
Chain PREROUTING (policy ACCEPT 34 packets, 3171 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 5 packets, 314 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 5 packets, 314 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        2   108 SNAT       all  --  *      eth0  0.0.0.0/0            0.0.0.0/0           to:192.168.2.2
2        0     0 SNAT       all  --  *      vlan256  0.0.0.0/0            0.0.0.0/0           to:192.168.42.251

# ip ro sh table prov2
default via 192.168.42.249 dev vlan256

# ip ro sh table main
192.168.42.248/29 dev vlan256  proto kernel  scope link  src 192.168.42.251
192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.2
10.10.10.0/24 dev vlan10  proto kernel  scope link  src 10.10.10.1
169.254.0.0/16 dev eth0  scope link  metric 1004
169.254.0.0/16 dev vlan10  scope link  metric 1009
169.254.0.0/16 dev vlan256  scope link  metric 1010
default via 192.168.2.1 dev eth0

# ip ro sh table default
пусто
других таблиц нет

вместо tcpdump предпочитаю пользоваться журналированием в iptables (для меня нагляднее)
iptables -t mangle -A PREROUTING -d 77.88.21.3 -j LOG --log-prefix "pre_to_yandex "
iptables -t mangle -A FORWARD -d 77.88.21.3 -j LOG --log-prefix "fw_to_yandex "
iptables -t mangle -A POSTROUTING -d 77.88.21.3 -j LOG --log-prefix "post_to_yandex "
iptables -t mangle -A PREROUTING -s 77.88.21.3 -j LOG --log-prefix "pre_from_yandex "
iptables -t mangle -A FORWARD -s 77.88.21.3 -j LOG --log-prefix "fw_from_yandex "
iptables -t mangle -A POSTROUTING -s 77.88.21.3 -j LOG --log-prefix "post_from_yandex "

если добавить правило
ip rule add from 10.10.10.40 table prov2
то
# ip ru sh
0:      from all lookup local
32765:  from 10.10.10.40 lookup prov2
32766:  from all lookup main
32767:  from all lookup default

tail -f /var/log/messages | grep yandex
Mar 12 16:08:41 fedora kernel: [ 2392.511394] pre_to_yandex IN=vlan10 OUT= MAC=00:21:91:01:7a:14:00:03:47:7c:07:03:08:00 SRC=10.10.10.40 DST=77.88.21.3 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=15647 DF PROTO=TCP SPT=4121 DPT=80 WINDOW=64956 RES=0x00 ACK FIN URGP=0
Mar 12 16:08:41 fedora kernel: [ 2392.511422] fw_to_yandex IN=vlan10 OUT=vlan256 SRC=10.10.10.40 DST=77.88.21.3 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=15647 DF PROTO=TCP SPT=4121 DPT=80 WINDOW=64956 RES=0x00 ACK FIN URGP=0 MARK=0xc
Mar 12 16:08:41 fedora kernel: [ 2392.511439] post_to_yandex IN= OUT=vlan256 SRC=10.10.10.40 DST=77.88.21.3 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=15647 DF PROTO=TCP SPT=4121 DPT=80 WINDOW=64956 RES=0x00 ACK FIN URGP=0 MARK=0xc
Mar 12 16:08:41 fedora kernel: [ 2392.551352] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00 SRC=77.88.21.3 DST=192.168.42.251 LEN=40 TOS=0x00 PREC=0x00 TTL=57 ID=50487 DF PROTO=TCP SPT=80 DPT=4121 WINDOW=65534 RES=0x00 ACK URGP=0
Mar 12 16:08:41 fedora kernel: [ 2392.551381] fw_from_yandex IN=vlan256 OUT=vlan10 SRC=77.88.21.3 DST=10.10.10.40 LEN=40 TOS=0x00 PREC=0x00 TTL=56 ID=50487 DF PROTO=TCP SPT=80 DPT=4121 WINDOW=65534 RES=0x00 ACK URGP=0
Mar 12 16:08:41 fedora kernel: [ 2392.551395] post_from_yandex IN= OUT=vlan10 SRC=77.88.21.3 DST=10.10.10.40 LEN=40 TOS=0x00 PREC=0x00 TTL=56 ID=50487 DF PROTO=TCP SPT=80 DPT=4121 WINDOW=65534 RES=0x00 ACK URGP=0

т.е. все работает
а вот если добавить правило
ip rule add  fwmark 12 table prov2
то
# ip ru sh
0:      from all lookup local
32765:  from all fwmark 0xc lookup prov2
32766:  from all lookup main
32767:  from all lookup default

tail -f /var/log/messages | grep yandex
Mar 12 16:25:03 fedora kernel: [ 3373.812830] pre_to_yandex IN=vlan10 OUT= MAC=00:21:91:01:7a:14:00:03:47:7c:07:03:08:00 SRC=10.10.10.40 DST=77.88.21.3 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=20010 DF PROTO=TCP SPT=4201 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0
Mar 12 16:25:03 fedora kernel: [ 3373.812866] fw_to_yandex IN=vlan10 OUT=vlan256 SRC=10.10.10.40 DST=77.88.21.3 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=20010 DF PROTO=TCP SPT=4201 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0xc
Mar 12 16:25:03 fedora kernel: [ 3373.812884] post_to_yandex IN= OUT=vlan256 SRC=10.10.10.40 DST=77.88.21.3 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=20010 DF PROTO=TCP SPT=4201 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 MARK=0xc
Mar 12 16:25:03 fedora kernel: [ 3373.852495] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00 SRC=77.88.21.3 DST=192.168.42.251 LEN=48 TOS=0x00 PREC=0x00 TTL=57 ID=28184 DF PROTO=TCP SPT=80 DPT=4201 WINDOW=65535 RES=0x00 ACK SYN URGP=0
Mar 12 16:25:06 fedora kernel: [ 3376.821614] pre_to_yandex IN=vlan10 OUT= MAC=00:21:91:01:7a:14:00:03:47:7c:07:03:08:00 SRC=10.10.10.40 DST=77.88.21.3 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=20018 DF PROTO=TCP SPT=4201 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0
Мистика?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 18:10 

> # iptables --line -nvL -t mangle
> Chain PREROUTING (policy ACCEPT 118 packets, 11926 bytes)
> 1        0      0 MARK       tcp   --  vlan10 *       0.0.0.0/0  0.0.0.0/0   tcp dpt:80 MARK set 0xc

Ну дык - а что, разве не заметно, что счетчики на правиле по нулям ? почему так происходит, мне пока не понятно.


> вместо tcpdump предпочитаю пользоваться журналированием в iptables (для меня нагляднее)

ну ладно, фиг с ним, смирюсь с таким извращением, всякое бывает. Действительно, видно в форварде, откуда пришел и куда уходит пакет. :-)

Но:

>т.е. все работает
>а вот если добавить правило

я нифига не вижу разницы между tail -f /var/log/messages | grep yandex в двух ваших случаях.
А в случае с tcpdump вы бы сразу увидели, что оно пошло не по eth0 как вы ожидаете.
Вот собственно, и ваше "мне так нагляднее".

И в первом и во втором грепах пакеты маршрутизируются на vlan256.

Не забывайте делать "ip ro flu ca". (ip route flush cache ?).

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 19:46 
> Ну дык - а что, разве не заметно, что счетчики на правиле
> по нулям ? почему так происходит, мне пока не понятно.

Потому что эта команда выполнена сразу после перезагрузки роутера.
сейчас выглядит так
Chain PREROUTING (policy ACCEPT 73148 packets, 8184K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       34  2525 LOG        all  --  *      *       0.0.0.0/0            77.88.21.3          LOG flags 0 level 4 prefix `pre_to_yandex '
2       35  3074 LOG        all  --  *      *       77.88.21.3           0.0.0.0/0           LOG flags 0 level 4 prefix `pre_from_yandex '
3      699 96153 MARK       tcp  --  vlan10 *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 MARK set 0xc

> ну ладно, фиг с ним, смирюсь с таким извращением, всякое бывает. Действительно,
> видно в форварде, откуда пришел и куда уходит пакет. :-)

;-)

> я нифига не вижу разницы между tail -f /var/log/messages | grep yandex
> в двух ваших случаях.

Разница в том, что во втором случае ответы от яндекса приходят их видно в таблице PREROUTING
Mar 12 16:25:03 fedora kernel: [ 3373.852495] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00 SRC=77.88.21.3 DST=192.168.42.251 LEN=48 TOS=0x00 PREC=0x00 TTL=57 ID=28184 DF PROTO=TCP SPT=80 DPT=4201 WINDOW=65535 RES=0x00 ACK SYN URGP=0
а больше эти пакеты нигде не наблюдаются, как будто они умирают в черном ящике с названием routing decision от того, что ядро по каким-то причинам не передает их в таблицу FORWARD

> И в первом и во втором грепах пакеты маршрутизируются на vlan256.

Правильно, только в первом случае все пакеты с машины 10.10.10.40 маршрутизируются на vlan256 и в браузере я вижу страницу. А во втором случае на vlan256 маршрутизируются пакеты на 80 порт от любой хоста с интерфейса vlan10 и страниц в браузере я не вижу :-(

> Не забывайте делать "ip ro flu ca". (ip route flush cache ?).

Не забываю ;-)


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 21:10 

>> я нифига не вижу разницы между tail -f /var/log/messages | grep yandex
>> в двух ваших случаях.
> Разница в том, что во втором случае ответы от яндекса приходят их
> видно в таблице PREROUTING
>Mar 12 16:25:03 fedora kernel: [ 3373.852495] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00 SRC=77.88.21.3 DST=192.168.42.251 LEN=48

TOS=0x00 PREC=0x00 TTL=57 ID=28184 DF PROTO=TCP SPT=80 DPT=4201 WINDOW=65535 RES=0x00 ACK
SYN URGP=0

А ничего, что во втором случае они тоже приходят:

Mar 12 16:08:41 fedora kernel: [ 2392.551352] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00 SRC=77.88.21.3 DST=192.168.42.251 LEN=40 TOS=0x00 PREC=0x00 TTL=57 ID=50487 DF PROTO=TCP SPT=80 DPT=4121 WINDOW=65534 RES=0x00 ACK URGP=0

?

Правда там разница в флагах наличествует.. Так что - смотреть надо именно tcpdump-ом )

> Правильно, только в первом случае все пакеты с машины 10.10.10.40 маршрутизируются на
> vlan256 и в браузере я вижу страницу. А во втором случае
> на vlan256 маршрутизируются пакеты на 80 порт от любой хоста с
> интерфейса vlan10 и страниц в браузере я не вижу :-(

Чувствуете разницу - в первом случае - все пакеты, во втором - на 80 порт?
запустите tcpdump на внутреннем интерфейсе. Я полагаю что каких-то пакетов вы не учли, например DNS.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 21:42 
> А ничего, что во втором случае они тоже приходят:
> Mar 12 16:08:41 fedora kernel: [ 2392.551352] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00
> SRC=77.88.21.3 DST=192.168.42.251 LEN=40 TOS=0x00 PREC=0x00 TTL=57 ID=50487 DF PROTO=TCP
> SPT=80 DPT=4121 WINDOW=65534 RES=0x00 ACK URGP=0

так и я о том же! Ответы от яндекса приходят, только роутер их в локалку не передает :-(
и в таблице FORWARD их нет

> Чувствуете разницу - в первом случае - все пакеты, во втором -
> на 80 порт?
> запустите tcpdump на внутреннем интерфейсе. Я полагаю что каких-то пакетов вы не
> учли, например DNS.

Хорошо, меняю
iptables -t mangle -D PREROUTING -i vlan10 -p tcp --dport 80 -j MARK --set-mark 12
на
iptables -t mangle -I PREROUTING -s 10.10.10.40 -j MARK --set-mark 12
смотрим
iptables --line -nvL -t mangle
Chain PREROUTING (policy ACCEPT 2268 packets, 212K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       63  3926 MARK       all  --  *      *       10.10.10.40            0.0.0.0/0           MARK set 0xc
2       40  2813 LOG        all  --  *      *       0.0.0.0/0            77.88.21.3          LOG flags 0 level 4 prefix `pre_to_yandex '
3       50  3794 LOG        all  --  *      *       77.88.21.3           0.0.0.0/0           LOG flags 0 level 4 prefix `pre_from_yandex '

Т.е. опять маршрутизируем ВСЕ пакеты с хоста 10.10.10.40 на vlan256, только с помощью меток. Страницы не открываются. Даже пинги не проходят
Mar 12 20:40:42 fedora kernel: [18713.668903] pre_to_yandex IN=vlan10 OUT= MAC=00:21:91:01:7a:14:00:03:47:7c:07:03:08:00 SRC=10.10.10.40 DST=77.88.21.3 LEN=60 TOS=0x00 PREC=0x00 TTL=128 ID=2599 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=57276 MARK=0xc
Mar 12 20:40:42 fedora kernel: [18713.668934] fw_to_yandex IN=vlan10 OUT=vlan256 SRC=10.10.10.40 DST=77.88.21.3 LEN=60 TOS=0x00 PREC=0x00 TTL=127 ID=2599 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=57276 MARK=0xc
Mar 12 20:40:42 fedora kernel: [18713.668950] post_to_yandex IN= OUT=vlan256 SRC=10.10.10.40 DST=77.88.21.3 LEN=60 TOS=0x00 PREC=0x00 TTL=127 ID=2599 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=57276 MARK=0xc
Mar 12 20:40:43 fedora kernel: [18713.708482] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00 SRC=77.88.21.3 DST=192.168.42.251 LEN=60 TOS=0x00 PREC=0x00 TTL=58 ID=34471 PROTO=ICMP TYPE=0 CODE=0 ID=512 SEQ=57276

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 22:00 

> Mar 12 20:40:43 fedora kernel: [18713.708482] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00
> SRC=77.88.21.3 DST=192.168.42.251 LEN=60 TOS=0x00 PREC=0x00 TTL=58 ID=34471 PROTO=ICMP
> TYPE=0 CODE=0 ID=512 SEQ=57276

Ну а это что ?


Может быть прекратим катать вату и начнем смотреть в tcpdump ?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 22:03 

>> Mar 12 20:40:43 fedora kernel: [18713.708482] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00
>> SRC=77.88.21.3 DST=192.168.42.251 LEN=60 TOS=0x00 PREC=0x00 TTL=58 ID=34471 PROTO=ICMP
>> TYPE=0 CODE=0 ID=512 SEQ=57276
> Ну а это что ?

это я к тому, что ответы от яндекса то пришли.


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

13. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 23:05 
хорошо, будем смотреть tcpdump
результат тот же
если
ip rule add from 10.1.0.40 table prov2
то все красиво
21:53:35.242338 IP 10.10.10.40.dellwebadmin-1 > 77.88.21.3.http: Flags [S], seq 852141427, win 65535, options [mss 1460,nop,nop,sackOK], length 0
21:53:35.281676 IP 77.88.21.3.http > 10.10.10.40.dellwebadmin-1: Flags [S.], seq 3017276995, ack 852141428, win 65535, options [mss 1410,sackOK,eol], length 0
21:53:35.281874 IP 10.10.10.40.dellwebadmin-1 > 77.88.21.3.http: Flags [.], ack 1, win 65535, length 0
21:53:35.283828 IP 10.10.10.40.dellwebadmin-1 > 77.88.21.3.http: Flags [P.], seq 1:492, ack 1, win 65535, length 491
21:53:35.337776 IP 77.88.21.3.http > 10.10.10.40.dellwebadmin-1: Flags [P.], seq 1:580, ack 492, win 65535, length 579
21:53:35.337846 IP 77.88.21.3.http > 10.10.10.40.dellwebadmin-1: Flags [F.], seq 580, ack 492, win 65535, length 0
21:53:35.338074 IP 10.10.10.40.dellwebadmin-1 > 77.88.21.3.http: Flags [.], ack 581, win 64956, length 0
21:53:35.355941 IP 10.10.10.40.dellwebadmin-2 > 213.180.204.51.http: Flags [S], seq 3919369449, win 65535, options [mss 1460,nop,nop,sackOK], length 0
21:53:35.396142 IP 213.180.204.51.http > 10.10.10.40.dellwebadmin-2: Flags [S.], seq 523702790, ack 3919369450, win 5640, options [mss 1410,nop,nop,sackOK], length 0
а если
ip rule add fwmark 12 table prov2
22:02:22.726518 IP 10.10.10.40.novation > 77.88.21.3.http: Flags [S], seq 2020215312, win 65535, options [mss 1460,nop,nop,sackOK], length 0
22:02:25.717961 IP 10.10.10.40.novation > 77.88.21.3.http: Flags [S], seq 2020215312, win 65535, options [mss 1460,nop,nop,sackOK], length 0
22:02:31.637315 IP 10.10.10.40.novation > 77.88.21.3.http: Flags [S], seq 2020215312, win 65535, options [mss 1460,nop,nop,sackOK], length 0
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

9. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 22:14 
Может быть оно при обратном преобразовании проверяет наличие MARK (для точного сопоставления "потоков")?

Извращенно, конечно, но...
Можно проверить так:

выставить марк для ответных пакетов:

iptables -t mangle -I PREROUTING -s YA.ND.EX.IP -j MARK --set-mark=0xC

+

чтобы промаркированные ответные пакеты не ушли обратно к провайдеру:

ip ro add table prov2 10.10.10.0/24 dev vlan10  

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 22:21 
> Может быть оно при обратном преобразовании проверяет наличие MARK (для точного сопоставления
> "потоков")?

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

можно попробовать половить его в INPUT.


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 22:26 
>> Может быть оно при обратном преобразовании проверяет наличие MARK (для точного сопоставления
>> "потоков")?
> если обратное нат-преобразование не производится, поскольку не совпадают маркеры, то входящий
> пакет будет считаться локальным, пришедшим на эту машину.
> можно попробовать половить его в INPUT.

ХЗ.

Добавил маркировку пакетов в mangle/PREROUTING. Маршрутизация на маркировке не основывается. Обратные пакеты вернулись "как надо".

OS: Debian.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 22:32 
>> А ничего, что во втором случае они тоже приходят:
>> Mar 12 16:08:41 fedora kernel: [ 2392.551352] pre_from_yandex IN=vlan256 OUT= MAC=00:21:91:01:7a:14:00:15:17:f8:50:b2:08:00
>> SRC=77.88.21.3 DST=192.168.42.251 LEN=40 TOS=0x00 PREC=0x00 TTL=57 ID=50487 DF PROTO=TCP
>> SPT=80 DPT=4121 WINDOW=65534 RES=0x00 ACK URGP=0
> так и я о том же! Ответы от яндекса приходят, только роутер
> их в локалку не передает :-(
> и в таблице FORWARD их нет

А что скажет
"sysctl -a |grep rp_f" ?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

14. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 23:09 
sysctl -a |grep rp_f
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.vlan10.rp_filter = 1
net.ipv4.conf.vlan10.arp_filter = 0
net.ipv4.conf.vlan256.rp_filter = 1
net.ipv4.conf.vlan256.arp_filter = 0


Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 23:17 
>[оверквотинг удален]
> net.ipv4.conf.default.rp_filter = 1
> net.ipv4.conf.default.arp_filter = 0
> net.ipv4.conf.lo.rp_filter = 1
> net.ipv4.conf.lo.arp_filter = 0
> net.ipv4.conf.eth0.rp_filter = 1
> net.ipv4.conf.eth0.arp_filter = 0
> net.ipv4.conf.vlan10.rp_filter = 1
> net.ipv4.conf.vlan10.arp_filter = 0
> net.ipv4.conf.vlan256.rp_filter = 1
> net.ipv4.conf.vlan256.arp_filter = 0

http://www.linuxforums.org/forum/security/155418-2-6-31-ipta...

Нужны нули.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 23:22 
> http://www.linuxforums.org/forum/security/155418-2-6-31-ipta...
> Нужны нули.

Можно чуть подробнее?

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

18. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 23:30 
>> http://www.linuxforums.org/forum/security/155418-2-6-31-ipta...
>> Нужны нули.
> Можно чуть подробнее?

чуть подробнее - по ссылке.
там как раз про новое ядро и изменение дефолтных параметров.
Рассказывать, что такое rp_filter ?


//
расшифровка - route-path-filter.
проверяется обратный путь пакета соединения, что ответ пришел оттуда, куда запрос отправляли, а не с "левого" интерфейса.
Пришел пакет YA-> HOST. производится встречная маршрутизация HOST->YA.
в обычных ситуациях обратная маршрутизация даст тот же самый интерфейс, через который пакет пришел, а тут,  поскольку маркера на соединении нет, маршрут получается в eth0. он не совпадает с vlanXXX через который пакет пришел, вот и происходит тихий дроп.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

20. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 23:33 
>[оверквотинг удален]
>> net.ipv4.conf.lo.rp_filter = 1
>> net.ipv4.conf.lo.arp_filter = 0
>> net.ipv4.conf.eth0.rp_filter = 1
>> net.ipv4.conf.eth0.arp_filter = 0
>> net.ipv4.conf.vlan10.rp_filter = 1
>> net.ipv4.conf.vlan10.arp_filter = 0
>> net.ipv4.conf.vlan256.rp_filter = 1
>> net.ipv4.conf.vlan256.arp_filter = 0
> http://www.linuxforums.org/forum/security/155418-2-6-31-ipta...
> Нужны нули.

А еще, должно помочь следующее:

ip ru add from $PROV2_IP lookup prov2

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

21. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 23:35 
>[оверквотинг удален]
>>> net.ipv4.conf.eth0.rp_filter = 1
>>> net.ipv4.conf.eth0.arp_filter = 0
>>> net.ipv4.conf.vlan10.rp_filter = 1
>>> net.ipv4.conf.vlan10.arp_filter = 0
>>> net.ipv4.conf.vlan256.rp_filter = 1
>>> net.ipv4.conf.vlan256.arp_filter = 0
>> http://www.linuxforums.org/forum/security/155418-2-6-31-ipta...
>> Нужны нули.
> А еще, должно помочь следующее:
> ip ru add from $PROV2_IP lookup prov2

rp_filter можно не отключать. При добавлении такого правила встречная маршрутизация (при проверке) даст тот же самый vlanXXX и всё будет хорошо. Попробуйте.

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

23. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 23:40 
>[оверквотинг удален]
>>>> net.ipv4.conf.vlan256.arp_filter = 0
>>> http://www.linuxforums.org/forum/security/155418-2-6-31-ipta...
>>> Нужны нули.
>> А еще, должно помочь следующее:
>> ip ru add from $PROV2_IP lookup prov2
> rp_filter можно не отключать. При добавлении такого правила встречная маршрутизация (при
> проверке) даст тот же самый vlanXXX и всё будет хорошо. Попробуйте.
>а еще непонятно, почему при
>ip rule add from 10.10.10.40 table prov2
>работало?

В таком случае - в проверке используются уже обратно оттранслированные адреса.
и добавление "ip ru add from $PROV2_IP lookup prov2" не поможет.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

16. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 23:18 
Я же писал, на другом роутере все эти настройки отлично работают. Я уже начинаю думать, что в новом ядре какие-то изменения в этом плане...
а самый прикол при попытке посмотреть трассу на яндекс:
первый ответ получаю от своего роутера, второй ответ от следующего (!) роутера 192.168.42.249 (т.е. мой возвращает этот ответ на хост 10.10.10.40!!!), а начиная с 3-го ответа - глухо
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

19. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 23:33 
помогло
echo 0 > /proc/sys/net/ipv4/conf/vlan256/rp_filter
только что это значит?
Спасибо!


Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

22. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 23:36 
а еще непонятно, почему при
ip rule add from 10.10.10.40 table prov2
работало?


Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

24. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 12-Мрт-11, 23:45 
> а еще непонятно, почему при
> ip rule add from 10.10.10.40 table prov2
> работало?

Значит в таком случае - в проверке используются уже обратно оттранслированные адреса.
Что собственно и верно, сначала mangle, потом обратный NAT, __потом раутинг__, потом цепочки форвард и фильтрация, mangle/POSTROUTING,  nat/POSTROUTING.

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

25. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от ivan1970 on 12-Мрт-11, 23:46 
ip ru add from $PROV2_IP lookup prov2
не помогает

Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

26. "проблема с маршрутизацией через двух провайдеров"  +/
Сообщение от PavelR (??) on 13-Мрт-11, 00:01 
> ip ru add from $PROV2_IP lookup prov2
> не помогает

http://www.opennet.me/openforum/vsluhforumID1/91129.html#23

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру