Jump to content
Калькуляторы

linux ip unnumbered vlan-per-user. arp_filter vs proxy_arp не хотят совместно работать

На сервере делается обычный ip unnumbered(для vlan-per-user):

 

ifconfig dummy0 192.168.0.1 netmask 255.255.255.255 up
ip route add blackhole 192.168.0.0/24
vconfig add eth1 2
ifconfig eth1.2 up
vconfig add eth1 3
ifconfig eth1.3 up
sysctl net.ipv4.conf.eth1/2.proxy_arp=1
sysctl net.ipv4.conf.eth1/3.proxy_arp=1

ip route add 192.168.0.2 dev eth1.2
ip route add 192.168.0.3 dev eth1.3

 

Вроде бы всё хорошо, всё работает, но возникает маленькая проблема, а именно: клиенты могут загаживать arp-таблицу "сервера" путём отправки arp who-has запросов(которые linux изучает и строит свой arp-кеш). например, если клиент, подключенный к сабу eth1.2 отправит who-has запрос типа такого "Request who-has 192.168.0.1 tell 192.168.0.80", то в arp-таблице сервера появится запись:

? (192.168.0.80) at 00:50:56:xx:yy:zz [ether] on eth1.2

 

Вроде бы ничего страшного, т.к. 192.168.0.80 не маршрутизируется в сторону eth1.2, т.е. абонент этот IP не захватывает(в отличии от классической LAN, когда много клиентов подключаются в один vlan в одну IP-сеть), но с другой стороны, абонент может с лёгкостью переполнять arp-таблицу, выставляя любые IP-адреса себе(и вовсе не обязательно из сети 192.168.0.0/24)

 

В документации на /proc/net нашёл arp_filter, включил его, загаживать arp-таблицу больше клиент не может(сервер теперь не изучает IP от клиента, которых нет в таблице маршрутизации в сторону интерфейса клиента), но и proxy_arp теперь не работает.

 

Можно ли как-нибудь защиться от arp-спуфинга(средствами linux-сервера, DAI и прочее на доступе не предлагать) и не сломать proxy_arp?

 

Пробовал на ядрах 3.2(из репозитория debian7) и 3.10-rc4 vanilla

Share this post


Link to post
Share on other sites

UP. никто не использует ip unnumbered с proxy-arp или всем пофиг на левые записи в arp-таблице?

 

Поднимите на машине бридж с этим VLAN и отфильтруйте ARP... Собственно, что бы не ломать всякие связи внутри ядра.

Share this post


Link to post
Share on other sites

В описании arp_filter написано: "0 - (default) The kernel can respond to arp requests with addresses from other interfaces." 1 - ядро вроде как должно смотреть роутинг, куда роутится адрес из запроса и напротив варианту 0 наверное перестаёт отвечать "to arp requests with addresses from other interfaces". Наверное включение фильтра и ломает proxy_arp поэтому.

 

Попроуйте другие параметры, относящиеся к работе arp: arp_ignore = 1 или 2 (определяет поведение при генерацииответов, но возможно будет влиять на попадание левых арп в кеш)

 

Ещё можно попробовать proxy_arp_pvlan побробовать -- в принципе то же самое, что proxy_arp, но может слать ответ в тот же саб, откуда прилетел запрос. Не требует наличия proxy_arp, может быть будет работать с arp_filter -- проверять надо.

 

Ещё arptables посмотрите, там вроде бы была фильтрация.

Edited by wtyd

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.