Есть сеть с роутером (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)
не важно, как вы настраиваете, важно _что получается в результате_.В этом вам помогут команды:
tcpdump (куда в действительности уходят пакеты, с какими адресами, возвращаются ли обратно)
iptables --line -nvL
iptables --line -nvL -t mangle
iptables --line -nvL -t nat
ip ru ship ro sh table prov2
ip ro sh table main
ip ro sh table defaultи "ip ro sh" прочих таблиц, имеющихся в вашей системе.
// вот вы привели команду iptables -A .... - это добавление в конец списка. Дык что в нем в начале - телепатические способности - стоят слишком дорого, боюсь не потянете оплатить.
Приведенные команды - практически вся настройка роутера# iptables --line -nvL
Chain INPUT (policy ACCEPT 2326 packets, 240K bytes)
num pkts bytes target prot opt in out source destinationChain FORWARD (policy ACCEPT 32 packets, 4687 bytes)
num pkts bytes target prot opt in out source destinationChain 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 0xcChain INPUT (policy ACCEPT 86 packets, 7239 bytes)
num pkts bytes target prot opt in out source destinationChain FORWARD (policy ACCEPT 32 packets, 4687 bytes)
num pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 53 packets, 5557 bytes)
num pkts bytes target prot opt in out source destinationChain 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 destinationChain OUTPUT (policy ACCEPT 5 packets, 314 bytes)
num pkts bytes target prot opt in out source destinationChain 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 defaulttail -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 defaulttail -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
Мистика?
> # 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 ?).
> Ну дык - а что, разве не заметно, что счетчики на правиле
> по нулям ? почему так происходит, мне пока не понятно.Потому что эта команда выполнена сразу после перезагрузки роутера.
сейчас выглядит так
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 ?).
Не забываю ;-)
>> я нифига не вижу разницы между 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=48TOS=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.
> А ничего, что во втором случае они тоже приходят:
> 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
> 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 ?
>> 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
результат тот же
если
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
Может быть оно при обратном преобразовании проверяет наличие 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
> Может быть оно при обратном преобразовании проверяет наличие MARK (для точного сопоставления
> "потоков")?если обратное нат-преобразование не производится, поскольку не совпадают маркеры, то входящий пакет будет считаться локальным, пришедшим на эту машину.
можно попробовать половить его в INPUT.
>> Может быть оно при обратном преобразовании проверяет наличие MARK (для точного сопоставления
>> "потоков")?
> если обратное нат-преобразование не производится, поскольку не совпадают маркеры, то входящий
> пакет будет считаться локальным, пришедшим на эту машину.
> можно попробовать половить его в INPUT.ХЗ.
Добавил маркировку пакетов в mangle/PREROUTING. Маршрутизация на маркировке не основывается. Обратные пакеты вернулись "как надо".
OS: Debian.
>> А ничего, что во втором случае они тоже приходят:
>> 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" ?
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
>[оверквотинг удален]
> 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 = 0http://www.linuxforums.org/forum/security/155418-2-6-31-ipta...
Нужны нули.
> http://www.linuxforums.org/forum/security/155418-2-6-31-ipta...
> Нужны нули.Можно чуть подробнее?
>> http://www.linuxforums.org/forum/security/155418-2-6-31-ipta...
>> Нужны нули.
> Можно чуть подробнее?чуть подробнее - по ссылке.
там как раз про новое ядро и изменение дефолтных параметров.
Рассказывать, что такое rp_filter ?
//
расшифровка - route-path-filter.
проверяется обратный путь пакета соединения, что ответ пришел оттуда, куда запрос отправляли, а не с "левого" интерфейса.
Пришел пакет YA-> HOST. производится встречная маршрутизация HOST->YA.
в обычных ситуациях обратная маршрутизация даст тот же самый интерфейс, через который пакет пришел, а тут, поскольку маркера на соединении нет, маршрут получается в eth0. он не совпадает с vlanXXX через который пакет пришел, вот и происходит тихий дроп.
>[оверквотинг удален]
>> 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
>[оверквотинг удален]
>>> 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 prov2rp_filter можно не отключать. При добавлении такого правила встречная маршрутизация (при проверке) даст тот же самый vlanXXX и всё будет хорошо. Попробуйте.
>[оверквотинг удален]
>>>> 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" не поможет.
Я же писал, на другом роутере все эти настройки отлично работают. Я уже начинаю думать, что в новом ядре какие-то изменения в этом плане...
а самый прикол при попытке посмотреть трассу на яндекс:
первый ответ получаю от своего роутера, второй ответ от следующего (!) роутера 192.168.42.249 (т.е. мой возвращает этот ответ на хост 10.10.10.40!!!), а начиная с 3-го ответа - глухо
помогло
echo 0 > /proc/sys/net/ipv4/conf/vlan256/rp_filter
только что это значит?
Спасибо!
а еще непонятно, почему при
ip rule add from 10.10.10.40 table prov2
работало?
> а еще непонятно, почему при
> ip rule add from 10.10.10.40 table prov2
> работало?Значит в таком случае - в проверке используются уже обратно оттранслированные адреса.
Что собственно и верно, сначала mangle, потом обратный NAT, __потом раутинг__, потом цепочки форвард и фильтрация, mangle/POSTROUTING, nat/POSTROUTING.
ip ru add from $PROV2_IP lookup prov2
не помогает
> ip ru add from $PROV2_IP lookup prov2
> не помогает