LINUX.ORG.RU
решено ФорумAdmin

Перенаправлять пакеты в зависимости от входного интерфейса


0

1

Теоретическая задача.

Есть машина с четырмя сетевыми интерфейсами. Есть три сетки A, B, C.

Сеть A - 10.0.0.0/24. Сеть B - 10.0.1.0/24. Сеть C - 10.0.2.0/24.

eth0 и eth1 в сети A 10.0.0.1 и 10.0.0.2 соответственно.

eth2 в сети B 10.0.1.1.

eth3 в сети C 10.0.2.1.

Нужно натить машины из сети A в сети B и C. Пакеты приходящие на 10.0.0.1 должны идти в сеть B. Пакеты приходящие на 10.0.0.2 должны идти в сеть C.

Заморачиваюсь с iptables и несколькими таблицами маршруторизации, пока не работает.

Как?

             |--------|
             |        |
    |-eth0---|        |--------eth2----B
A---|        |   R    |
    |-eth1---|        |--------eth3----C
             |        |
             |--------|

гм. а смысл в 2-х интерфейсах в сети А? Это достаточно хитрая конструкция получится.

без «ip ro» & «ip ru» вряд ли кто тебе поможет, кроме ссылок на iproute2 advanced routing & traffic control

грабельки с rp_filter,arp_filter,arp_annouce,arp_accept тебя ждут.

vel ★★★★★ ()

Топология кривая, а так - маркируем пакеты в PREROUTING через iptables fwmark по входящему интерфейсу и уже по этой марке их роутим в ip rule, как-то так.

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

Сделал так:

iptables -t nat -I PREROUTING -j LOG --log-prefix "pre "

На хосте 10.0.0.100 пингую 10.0.0.1:

pre IN=eth0 OUT= MAC=foo SRC=10.0.0.100 DST=10.0.0.1 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=20612 DF PROTO=ICMP TYPE=8 CODE=0 ID=6848 SEQ=1 

На хосте 10.0.0.100 пингую 10.0.0.2:

pre IN=eth0 OUT= MAC=foo SRC=10.0.0.100 DST=10.0.0.2 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=7741 DF PROTO=ICMP TYPE=8 CODE=0 ID=6849 SEQ=1

Почему входящие интерфейсы одинаковые?

suuaq ()

Зачем на eth0 и eth1 разные айпишники? Не проще их запихнуть в bond0 и присвоить один айпишник? Тогда и проблем с маршрутизаеией не будет.

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