На форуме российского представительства D-Link несколько раз возникал вопрос по поводу использования “интерфейса” ARP и разных его режимах работы. Внятного ответа, как всегда найти не удалось. В лучшем случае отсылают читать мануал, а так чтобы на пальцах для дураков – это фигу. А мануал, как водится, английский и официальный до безобразия. На том же форуме есть примеры использования, но без комментариев почему так, а не иначе. Режимов для ARP имеется три штуки: Static, Publish и XPpublish. Чем они отличаются и где используются я попробую объяснить.

Первое, что хотелось бы сделать – это дать ссылку на инструкцию к DFL на русском языке. Почему на русском FTP его до сих пор нет – неясно. Тем более, что прошивку “чисто для России” выложили без альтернатив давным-давно. Сильно рекомендую инструкцию себе скачать и прочитать. Формулировки там, конечно, тоже местами не сахар, но хотя бы на родной мове.

Во-вторых, немного теории, для тех, кто не очень понимает механизма работы протокола ARP в сферической сети в вакууме. Те, кто понимают, могу переходить сразу дальше 🙂 Известно, что хост A имеет IP-адреса <ip_A> и MAC-адрес <mac_A>, хост B соответственно – <ip_B> и <mac_B>. Итак, у хоста A есть пакет для хоста B. Первое, что делает хост A – это проверяет (исходя из своего ip-адреса и маски) находится ли B в его подсети. Если нет – пакет направляется на соответствующий маршрутизатор и уже его головная боль как доставить пакет. Так что ARP работает только в одном сегменте сети, то есть за роутер оно не ходит.

Ок, предположим вышло так, что хост назначения находится в той же подсети. В таком случае, хост A проверяет свою локальную arp-таблицу на предмет наличия там MAC-адреса хоста B. Если есть – посылает пакет. Если нет – орет что есть мочи “а кто это тут у нас такой с ip_B в сети?”. На что хост B должен ему ответить “я это, и МАС-адрес у меня mac_B”. Оба записывают MAC-адреса друг друга и радостно начинают обмениваться данными.

А теперь то, ради чего все и затевалось. Режим Static позволяет намертво прикрутить соответствие IP и MAC-адреса получателя. Если обычно это соответствие динамическое (периодически хост A снова пытается выяснить MAC-адрес хоста B), то в статическом режиме пакты для ip_B всегда идут на mac_B. Такой режим нередко используется для защиты от подмены ip-адреса левыми хостами. Провайдеры такое тоже используют, чтобы злой хакер Вася не взял адрес Пети и не ломал ему кайф от пользования Интернетом.

Режим Publish заставляет наш роутер (DFL-800 например) ответить хосту A вместо хоста B и сообщить все необходимые данные. Бывает нужно это, например, когда у хоста B наблюдаются проблемы с ARP-ответами. Второй сценарий используется чаще и позволяет опубликовать на одном интерфейсе нашего DFL-роутера несколько ip-адресов. Можно использовать в случае, когда нет возможности распилить сеть на VLAN’ы, а разделение на разные ip-подсети необходимо. Третий сценарий позволяет использовать на одном внешнем интерфейсе несколько различных ip-адресов для перенаправления пакетов к различным внутренним серверам.

Режим XPublish делает то же самое, но меняет еще и MAC-адрес отправителя в пакете с ARP-ответом. В предыдущем случае MAC-адресом отправителя пакета остается MAC-адрес роутера, что в отдельных случаях может вызывать проблемы. Разумеется, если MAC-адрес интерфейса совпадает с MAC-адресом, который мы сообщаем, результат для режимов Publish и XPublish будет одинаковым.

Существует еще такая штука как Proxy ARP, но это тема для отдельного разговора.

23 комментарий для “Режимы ARP на D-Link DFL”
  1. Полезная запись! А можно вас попросить раскрыть по-подробнее как на wan интерфейсе опубликовать несколько ip дабы пробросить их к разным машинам во внутренних подсетях без vlan-ов. Как подсети подружить с помощью arp 00-00.. уже разобрался:) А тут кажется все просто, а никак не получается.

    1. Все действительно просто. С помощью arp публикуем несколько адресов “снаружи” и с помощью ip-правил перенаправляем пакеты куда надо. Только придется у провайдера попросить привязать к нескольким ip один mac, если привязка используется.
      Или нужно на примерах? 🙂 сделаем, если потребуется

      1. Получилось! Нужно было попросить провайдера снять привязку к маку и прописать в ARP не их мак а 00, и еще маршрут с метрикой-0 добавить. Правда, все равно осталось много вопросов, видимо знаний не хватает как правила оптимально составлять. Есть еще IPSec туннели которые тоже не отовсюду видны.
        А можно к вам обратиться за помощью? Буду очень благодарен, не на словах, если поможете навести порядок:) skype:ypa246

  2. Использовал вот эту инструкцию от производителя http://www.dlink.ru/ru/faq/85/481.html
    Но мой провайдер настроил маршрут с пула адресов на внешний IP маршрутизатора.
    Задачу меня следующая: есть три машины в локальной сети, необходимо чтобы каждой машине был присвоен внешний IP. Для этого и выделили нам этот пул внешних IP.
    Получается мне надо попросить провайдера убрать маршрут и привязать все 4 внешних IP на MAC-адрес маршрутизатора? (D-Link 260e)

    1. Не очень понятно что значит “Но мой провайдер настроил маршрут с пула адресов на внешний IP маршрутизатора”. С одного хвоста от провайдера можно получить 4 разных адреса (хоть и близких)? Тогда, быть может, проще всего подключить самый обыкновенный свитч и не париться?
      Схема нужна что и как 🙁

      1. Нарисовал схему (надеюсь понятная) http://s51.radikal.ru/i133/1305/3e/7777acdef24f.png
        В общем можно добавить следующее: все пакеты, которые идут на IP из пула поступают на внешний IP DFL’а и необходимо распределить эти пакеты по определённым локальным IP, которые в свою соответствуют определённым IP из пула.

        1. Да вообще не проблема. Заводим пачку парных правил проброса портов согласно количеству внешних IP-адресов и все… Только в качестве адреса назначения указываем правильные внешние адреса и в правиле SAT указываем на какой внутренний адрес его пересылать.
          Подробно расписать требуется?

  3. Кстати, привязку в одному маку всех IP из пула мой провайдер отказывается делать с формулировкой: “Вам никто там не сделает”. Провайдер соответственно Ростелеком)

    1. Да ладно? Прям таки и никто? Тот факт, что Ростелекому влом это делать, ни разу не говорит о том, что никто так делать не станет. Местные наши провайдеры делают и никакой проблемы в этом не видят.
      Ростелеком вообще редко повернут к потребителю лицом

      1. Это рабочий инет. И альтернативы нет… Но начальство я уже загрузил этим вопросом, пускай выбивает)

        1. Можно, конечно, раздать адресам из пула разные Mac-адреса и оно даже, наверное работать будет…
          Но ИМХО, надо ногами пинать саппорт провайдера и выходить на технарей

  4. Решил проблему: настроил 3 VLAN’а с соответствующими IP из пула у каждого, далее правила доступа в интернет для них. И о чудо, всё заработало ^_^
    Вот кстати пример настройки для начинающих http://kompfirma.narod.ru/DFL.pdf

  5. Добрый день! Снова обращаюсь к Вам за помощью.
    Возникла необходимость пробросить через DFL белые IP от провайдера на хост с vSphere, на котором висят виртуальные машины и с внутренними ip (теперь нужно для публичных DNS). Наверное будет проще нарисовать все на схеме и вообще поговорить:) Пожалуйста, свяжитесь со мной (контакт оставлял ранее).
    Спасибо!

  6. Добрый день!
    Подскажите, пожалуйста, а в обратную сторону это работает? Т.е. нужно сделать так, чтобы smtp трафик шел с дополнительного адреса WAN интерфейса.

    1. Проще некуда. Нужно правило маршрутизации по протоколу и указать в качестве единственного 0.0.0.0 маршрута нужный интерфейс и все.
      Можно еще попробовать в правилах для траффика указать, что интерфейс назначения должен быть правильный wan

      1. Приветствую!
        Змий, а можешь поподробнее разжевать? На интерфейсе WAN прописано 2 ip-адреса (основной wan_ip и mail_ip)
        создаю Routing Rules для сервиса smtp,
        Source
        Interface: any
        Network: all-nets

        Destination
        Interface: wan
        Network: mail_ip
        Я так понимаю, нужно еще таблицу маршрутизации создать отдельную?

        1. 1) если в роутер приходят несколько проводов, то все решается правилами для пакетов – там просто указываем, что интерфейс назначения – нужный нам интерфейс для нужного протокола
          2) если в роутер приходит один кабель с пачкой адресов от провайдера, то все решается доп. Таблицами маршрутизации. Для этого создается новая таблица под нужный протокол (smtp в данном случае) и для маршрута 0.0.0.0 руками указывается желаемый внешний адрес, в основной же таблице руками же для того же 0.0.0.0 руками лучше прописать основной свой внешний ip.
          Если соберусь, картинки нарисую завтра

Добавить комментарий