Proxy ARP
Материал из Xgu.ru
Proxy ARP — техника использования ARP-протокола, позволяющая объединить две не связанные на канальном уровне сети в одну. Хосты, находящиеся в этих сетях, могут использовать адреса из одной IP-подсети и обмениваться трафиком между собой без использования маршрутизатора (как им кажется).
Например, на рисунке изображены два хоста A и B, которые находятся на канальном уровне в разных сегментах. На хостах не настроен шлюз по умолчанию. И маски подсетей на маршрутизаторе и на хостах отличаются.
Если на маршрутизаторе включен Proxy ARP на обоих интерфейсах, то происходит следующее:
- Хост 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-запрос в сеть.
- Маршрутизатор получает ARP-запрос, но не перенаправляет его, так как получатель в другой сети. Если на маршрутизаторе включен Proxy ARP, то маршрутизатор отправляет хосту A ARP-ответ, в котором подставляет свой MAC-адрес. То есть, для хоста A, создается соответствие 10.0.2.10 - MAC f0/0.
- Теперь хост A может отправить данные.
- Маршрутизатор получается пакет, смотрит на IP-адрес получателя и перенаправляет пакет на него (при условии, что в ARP кеше маршрутизатора уже есть запись для хоста B).
- Хост B аналогичным образом считает, что хост A с ним в одной сети. Хосту B необходимо узнать MAC-адрес хоста A. Он отправляет ARP-запрос в сеть.
- Маршрутизатор получает 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
[править] Дополнительная информация
- Proxy ARP with Linux (англ.)
- Monter un proxy-ARP (Debian) (фр.)