Proxy ARP

Материал из Xgu.ru

Перейти к: навигация, поиск

Proxy ARP — техника использования ARP-протокола, позволяющая объединить две не связанные на канальном уровне сети в одну. Хосты, находящиеся в этих сетях, могут использовать адреса из одной IP-подсети и обмениваться трафиком между собой без использования маршрутизатора (как им кажется).

Proxy ARP.png

Например, на рисунке изображены два хоста A и B, которые находятся на канальном уровне в разных сегментах. На хостах не настроен шлюз по умолчанию. И маски подсетей на маршрутизаторе и на хостах отличаются.

Если на маршрутизаторе включен Proxy ARP на обоих интерфейсах, то происходит следующее:

  1. Хост A хочет отправить какие-то данные хосту B. Так как, на хосте A IP-адрес 10.0.1.10 с маской /8, то он считает, что хост B с IP-адресом 10.0.2.10/8, также находится с ним в одной сети (хосты считают, что они в сети 10.0.0.0/8). Хосту A необходимо узнать MAC-адрес хоста B. Он отправляет ARP-запрос в сеть.
  2. Маршрутизатор получает ARP-запрос, но не перенаправляет его, так как получатель в другой сети. Если на маршрутизаторе включен Proxy ARP, то маршрутизатор отправляет хосту A ARP-ответ, в котором подставляет свой MAC-адрес. То есть, для хоста A, создается соответствие 10.0.2.10 - MAC f0/0.
  3. Теперь хост A может отправить данные.
  4. Маршрутизатор получается пакет, смотрит на IP-адрес получателя и перенаправляет пакет на него (при условии, что в ARP кеше маршрутизатора уже есть запись для хоста B).
  5. Хост B аналогичным образом считает, что хост A с ним в одной сети. Хосту B необходимо узнать MAC-адрес хоста A. Он отправляет ARP-запрос в сеть.
  6. Маршрутизатор получает ARP-запрос, но не перенаправляет его, так как получатель в другой сети. Если на маршрутизаторе включен Proxy ARP, то маршрутизатор отправляет хосту B ARP-ответ, в котором подставляет свой MAC-адрес. То есть, для хоста B, создается соответствие 10.0.1.10 - MAC f0/1.

Содержание

[править] Настройка в Linux

(Добавить бы сюда что есть что)

(Вот здесь есть переводная статья с подробным описанием процесса и разбором параметров: http://www.linuxcenter.ru/lib/articles/networking/Proxy-ARP-Subnet.phtml)

Публикация IP-адреса на интерфейсе:

%# arp -v -Ds eastasia.1984.lan eth0 pub
arp: device `eth0' has HW address ether `00:0D:87:zz:yy:xx'.
arp: SIOCSARP()
%# arp -a
room101.1984.lan (192.168.6.101) at 00:0A:E6:pp:qq:rr [ether] on eth0
telescreen.1984.lan (192.168.6.18) at 00:04:76:jj:kk:ll [ether] on eth0
crimethink.1984.lan (192.168.6.9) at 00:0F:66:aa:bb:cc [ether] on eth0
eastasia.1984.lan (192.168.6.12) at * PERM PUP on eth0

Включение Proxy ARP на интерфейсах:

%# echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
%# echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp

[править] Proxy ARP в debian Linux

Установим Proxy ARP IP bridging daemon:

# apt-get update
# apt-get install parprouted

Запустим демон, в параметрах указываем через пробел имена интерфейсов между которыми необходим proxy ARP (у меня это между bonding'ом и VLAN'ом):

# parprouted bond0 eth1.3021

[править] Настройка в коммутаторах ProCurve

Включение Proxy ARP в VLAN 1:

sw(config)# vlan 1
sw(vlan-1)# ip proxy-arp

[править] Настройка в коммутаторах Cisco

Включение Proxy ARP в gi0/1:

R1(config)#int gi0/1
R1(config-if)#ip proxy-arp


[править] Дополнительная информация

Источник — «http://xgu.ru/wiki/Proxy_ARP»