packetizer Опубликовано 5 января, 2010 · Жалоба По мотивам этой статьи VLAN на пользователя: архитектура и альтернативы захотелось провести небольшой эксперимент. только вместо L3 свича Linux box, как сделать Proxy ARP между сегментами понятно, а как скзать что пришедший ARP запрос на интерфейс нужно отправлять обратно в сегмент ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 5 января, 2010 · Жалоба Стандартными средствами, насколько я знаю - никак. Либо писать демона, который будет отвечать на нужные ARP-запросы, либо патчить ядро. При этом ни в коем случае нельзя отвечать на запросы "who-has 0.0.0.0" и gratuitous ARP-запросы, где target IP == source IP. В противном случае у пользователя вылезет "Конфликт IP-адресов". Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 5 января, 2010 · Жалоба типа такого? $EBTABLES -t nat -N reply_ir_arp $EBTABLES -t nat -A reply_ir_arp -p arp --arp-ptype IPv4 --limit 2/second --log --log-prefix "ARR " --log-level 7 --log-arp -j CONTINUE $EBTABLES -t nat -A reply_ir_arp -p arp --arp-ptype IPv4 -j arpreply --arpreply-mac QQ:WW:EE:RR:TT:YY # MAC интерфейса $EBTABLES -t nat -N spoof_ir_nets_br1 $EBTABLES -t nat -A spoof_ir_nets_br1 -p arp --arp-ptype IPv4 --arp-ip-src x.x.x.208/28 --arp-ip-dst x.x.x.208/28 -j reply_ir_arp $EBTABLES -t nat -N input_from_br1 $EBTABLES -t nat -A input_from_br1 -p arp --arp-ptype IPv4 --arp-opcode 1 ! --arp-gratuitous -j spoof_ir_nets_br1 $EBTABLES -t nat -A PREROUTING --logical-in br1 -j input_from_br1 ################## $EBTABLES -A FORWARD --logical-in br1 --logical-out br1 -j DROP Только есть один минус. Если абоненту выдано 2 адреса из одной подсети на два компа дома подключенных "через свитч", например, трафик между этими компами рискует пойти через провайдера. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
packetizer Опубликовано 5 января, 2010 · Жалоба типа такого? $EBTABLES -t nat -N reply_ir_arp $EBTABLES -t nat -A reply_ir_arp -p arp --arp-ptype IPv4 --limit 2/second --log --log-prefix "ARR " --log-level 7 --log-arp -j CONTINUE $EBTABLES -t nat -A reply_ir_arp -p arp --arp-ptype IPv4 -j arpreply --arpreply-mac QQ:WW:EE:RR:TT:YY # MAC интерфейса $EBTABLES -t nat -N spoof_ir_nets_br1 $EBTABLES -t nat -A spoof_ir_nets_br1 -p arp --arp-ptype IPv4 --arp-ip-src x.x.x.208/28 --arp-ip-dst x.x.x.208/28 -j reply_ir_arp $EBTABLES -t nat -N input_from_br1 $EBTABLES -t nat -A input_from_br1 -p arp --arp-ptype IPv4 --arp-opcode 1 ! --arp-gratuitous -j spoof_ir_nets_br1 $EBTABLES -t nat -A PREROUTING --logical-in br1 -j input_from_br1 ################## $EBTABLES -A FORWARD --logical-in br1 --logical-out br1 -j DROP Только есть один минус. Если абоненту выдано 2 адреса из одной подсети на два компа дома подключенных "через свитч", например, трафик между этими компами рискует пойти через провайдера. в точку, что называется снимаю шляпу, незнал что так с iptables можно Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 5 января, 2010 · Жалоба в точку, что называется снимаю шляпу, незнал что так с iptables можно Это в ebtables. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Beginner Опубликовано 6 января, 2010 · Жалоба типа такого? $EBTABLES -t nat -N reply_ir_arp $EBTABLES -t nat -A reply_ir_arp -p arp --arp-ptype IPv4 --limit 2/second --log --log-prefix "ARR " --log-level 7 --log-arp -j CONTINUE $EBTABLES -t nat -A reply_ir_arp -p arp --arp-ptype IPv4 -j arpreply --arpreply-mac QQ:WW:EE:RR:TT:YY # MAC интерфейса $EBTABLES -t nat -N spoof_ir_nets_br1 $EBTABLES -t nat -A spoof_ir_nets_br1 -p arp --arp-ptype IPv4 --arp-ip-src x.x.x.208/28 --arp-ip-dst x.x.x.208/28 -j reply_ir_arp $EBTABLES -t nat -N input_from_br1 $EBTABLES -t nat -A input_from_br1 -p arp --arp-ptype IPv4 --arp-opcode 1 ! --arp-gratuitous -j spoof_ir_nets_br1 $EBTABLES -t nat -A PREROUTING --logical-in br1 -j input_from_br1 ################## $EBTABLES -A FORWARD --logical-in br1 --logical-out br1 -j DROP Только есть один минус. Если абоненту выдано 2 адреса из одной подсети на два компа дома подключенных "через свитч", например, трафик между этими компами рискует пойти через провайдера. Это на каждом интерфейсе надо проделать? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
packetizer Опубликовано 7 января, 2010 (изменено) · Жалоба в точку, что называется снимаю шляпу, незнал что так с iptables можноЭто в ebtables. спасибо, хорошее название :), и хороший пакет я уже посмотрел документацию по нему Это на каждом интерфейсе надо проделать?насколько я понял из описания только на том где нужен local proxy Изменено 7 января, 2010 пользователем packetizer Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Beginner Опубликовано 7 января, 2010 (изменено) · Жалоба Это я не разобравшись запостил. Немного поигрался, на одном интерфейсе получилось сделать правда с некоторым использованием бубна. Но это от того что в первый раз. Еще поиграюсь попробовав что обязательно в найденой последовательности стучания в бубен, а что нет и уже решу как проще прикрутить. Остался вопрос с производительностью этого решения Изменено 7 января, 2010 пользователем Beginner Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Beginner Опубликовано 7 января, 2010 · Жалоба ebtables -A FORWARD --logical-in br1 --logical-out br1 -j DROP Это правило, насколько я понял, запрещает коммутировать пакеты между интерфейсами входящими в br1? А если там только 1 eth интерфейс, то его можно опустить? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 7 января, 2010 · Жалоба Beginner если там один интерфейс, то правила можно переписать на 1 интерфейс и обойтись без брижда. Производительность должна быть "обычной". Кстати, забыл еще один момент - надо отключить "Send ICMP redirects" на интерфейсе. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Beginner Опубликовано 8 января, 2010 (изменено) · Жалоба Beginner если там один интерфейс, то правила можно переписать на 1 интерфейс и обойтись без брижда. Производительность должна быть "обычной". Кстати, забыл еще один момент - надо отключить "Send ICMP redirects" на интерфейсе. А вот у меня почему то не получилось на 1 интерфейсе. Прикручивал напрямую к eth.xx - не заработало. Включил eth0.xx в brxx - не заработало. Перенес IP-адрес с eth0.xx на brxx - заработало. Пробовал на Debian Linux router 2.6.26-2-amd64 #1 SMP Wed Aug 19 22:33:18 UTC 2009 x86_64 GNU/Linux Буду стучать в бубен дальше :) Изменено 8 января, 2010 пользователем Beginner Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Beginner Опубликовано 8 января, 2010 · Жалоба Есть подозрение что broute заворачивает весь трафик в routing и в bridge-процесс ничего не попадает Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
packetizer Опубликовано 8 января, 2010 · Жалоба А вот у меня почему то не получилось на 1 интерфейсе. Прикручивал напрямую к eth.xx - не заработало. Включил eth0.xx в brxx - не заработало. Перенес IP-адрес с eth0.xx на brxx - заработало. Пробовал на Debian Linux router 2.6.26-2-amd64 #1 SMP Wed Aug 19 22:33:18 UTC 2009 x86_64 GNU/Linux Буду стучать в бубен дальше :) а у вас свич который собирает в Sub вланы в Super вланотдает Super c тегом или нет ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Beginner Опубликовано 8 января, 2010 · Жалоба Я пока на отдельной витруальной сети экспериментирую. В ней клиенты просто изолированы друг от друга. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Beginner Опубликовано 8 января, 2010 · Жалоба http://ebtables.sourceforge.net/examples/b...tml#ex_nobridge Я правильно понял, что поднимать бридж все равно придется? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 8 января, 2010 · Жалоба http://ebtables.sourceforge.net/examples/b...tml#ex_nobridgeЯ правильно понял, что поднимать бридж все равно придется? Да, ebtables на не-bridge интерфейсах, к сожалению, не работает.Кстати, если бы кто-нибудь показал, как его этому научить, было бы здорово. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 8 января, 2010 · Жалоба Хм, действительно, похоже, без бриджа не работает... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Beginner Опубликовано 8 января, 2010 · Жалоба Странно ~ # ping 10.6.66.3 PING 10.6.66.3 (10.6.66.3) 56(84) bytes of data. From 10.6.66.1: icmp_seq=1 Redirect Host(New nexthop: 10.6.66.3) From 10.6.66.1: icmp_seq=2 Redirect Host(New nexthop: 10.6.66.3) From 10.6.66.1: icmp_seq=3 Redirect Host(New nexthop: 10.6.66.3) From 10.6.66.1: icmp_seq=4 Redirect Host(New nexthop: 10.6.66.3) From 10.6.66.1: icmp_seq=5 Redirect Host(New nexthop: 10.6.66.3) From 10.6.66.1: icmp_seq=6 Redirect Host(New nexthop: 10.6.66.3) From 10.6.66.1: icmp_seq=8 Redirect Host(New nexthop: 10.6.66.3) 64 bytes from 10.6.66.3: icmp_seq=10 ttl=63 time=0.372 ms From 10.6.66.1: icmp_seq=11 Redirect Host(New nexthop: 10.6.66.3) 64 bytes from 10.6.66.3: icmp_seq=11 ttl=63 time=0.330 ms 64 bytes from 10.6.66.3: icmp_seq=12 ttl=63 time=0.538 ms 64 bytes from 10.6.66.3: icmp_seq=13 ttl=63 time=0.494 ms 64 bytes from 10.6.66.3: icmp_seq=14 ttl=63 time=0.449 ms 64 bytes from 10.6.66.3: icmp_seq=15 ttl=63 time=0.412 ms хотя ~# cat /proc/sys/net/ipv4/conf/br1/send_redirects 0 ~# cat /proc/sys/net/ipv4/conf/eth0.666/send_redirects 0 ~# brctl show bridge name bridge id STP enabled interfaces br1 8000.00093d1326f9 no eth0.666 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
voron Опубликовано 8 января, 2010 · Жалоба А если поднять бридж на чистом, а не vlan'истом интерфейсе? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 8 января, 2010 · Жалоба Beginner, /proc/sys/net/ipv4/conf/{all,default}/send_redirects не пробовали крутить? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Beginner Опубликовано 8 января, 2010 (изменено) · Жалоба Beginner, /proc/sys/net/ipv4/conf/{all,default}/send_redirects не пробовали крутить? Вроде помогло. Значит на всех выключить, а если понадобится, то включать на отдельных? Изменено 8 января, 2010 пользователем Beginner Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 8 января, 2010 · Жалоба Beginner, видимо так. Если честно, до конца не понимаю логику работы all и default. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 31 марта, 2012 · Жалоба Только есть один минус. Если абоненту выдано 2 адреса из одной подсети на два компа дома подключенных "через свитч", например, трафик между этими компами рискует пойти через провайдера. Ап :) Подскажите, как разрулить проблему описанную выше? Есть несколько вланов объединенных в бридж. Пытался маркировать arp request в ячейке INPUT, а на выходе в ячейке OUTPUT фильтровать по маркировке. Я так понимаю, что мне надо маркировать только арп реквесты на входе, а на выходе дропать реплай маркированные. Делаю так: ebtables -I INPUT -i vlan100 -p ARP --arp-opcode Request -j mark --set-mark 100 ebtables -A OUTPUT -o vlan100 -p ARP --arp-opcode Reply --mark 100 -j DROP В инпут попадает, а вот в аутпут нет. В чем засада? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 2 апреля, 2012 · Жалоба В инпут попадает, а вот в аутпут нет. В чем засада? А где вообще сказано, что ebtables умеет определять связь между входящими-исходящими пакетами и автоматически назначать метку с одного пакета на другой? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adminkg Опубликовано 3 апреля, 2012 · Жалоба В инпут попадает, а вот в аутпут нет. В чем засада? А где вообще сказано, что ebtables умеет определять связь между входящими-исходящими пакетами и автоматически назначать метку с одного пакета на другой? Согласен, затупил. Возможно есть другое решение? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...