как сделать хост в локальной сети для пересылки трафика между другими хостами в той же локальной сети в Linux

394
Archaj

Я устанавливаю тестовую топологию в Mininet следующим образом:

sudo mn --mac --topo linear,3 --switch ovsk --controller=remote,ip=10.0.2.15,port=6653 

вот так: я хочу, чтобы трафик, идущий с H1 на H3, посещал H2, а затем перенаправлялся на H3. Я установил правила потока на своих коммутаторах (Open vSwitch), чтобы сделать это. Однако, когда трафик переходит на H2, он там падает.
simple topology

Какие конфигурации я должен добавить к H2 (Ubuntu 14.04), чтобы H2 мог перенаправлять трафик, который ему не предназначен и не был получен из него?

0
Что вы используете для создания локальной сети? Mininet? Отдельные виртуальные машины вместе с коммутатором? Пожалуйста скажи. Это помогает. ytpillai 6 лет назад 0
Я использую mininet с контроллером SDN прожектора следующим образом: sudo mn --mac --topo linear, 3 --switch ovsk --controller = remote, ip = 10.0.2.15, port = 6653 Archaj 6 лет назад 0
Я использую mininet и контроллер прожектора, вот моя топология: sudo mn --mac --topo linear, 3 --switch ovsk --controller = remote, ip = 10.0.2.15, port = 6653 Archaj 6 лет назад 0

2 ответа на вопрос

0
Nevin Williams

Я думаю, вам нужно включить функцию пересылки IP .

Это можно получить с помощью sysctlутилиты:

sysctl -a | grep forwarding производит (на моем Mac):

net.inet.ip.forwarding: 0 net.inet6.ip6.forwarding: 0 

Это может выглядеть немного иначе в Ubuntu. 0Значение означает IP Forwarding отключена.

Чтобы я включил IP-пересылку (v4), я бы от имени root:

[nevin-mac-mini:~] root# sysctl net.inet.ip.forwarding=1 net.inet.ip.forwarding: 0 -> 1 

Это должно вступить в силу немедленно, однако оно не будет сохраняться после перезагрузки. Чтобы сделать это так, я бы поместил

net.inet.ip.forwarding=1в /etc/sysctl.conf.

Спасибо, Невин, за ваш ответ, я активировал переадресацию с помощью этой команды в ubuntu 14.04: sysctl -w net.ipv4.ip_forward = 1 Однако трафик на хосте 2 по-прежнему отбрасывается, я использовал Tcpdump, чтобы увидеть входящий трафик, но там нет исходящего трафика с интерфейса хоста 2. Archaj 6 лет назад 0
Все ли хосты находятся в одной IP-сети? Если это так, H2 будет ожидать, что H1 и H3 будут говорить напрямую друг с другом, и, таким образом, не будет участвовать в маршрутизации: если бы это было сделано, то это поместило бы дублированные данные в сеть. Пожалуйста, включите таблицы маршрутизации каждого хоста с помощью команды `netstat -rn` или аналогичной. Nevin Williams 6 лет назад 0
Спасибо, Уильямс, наконец-то я смог сделать это, переписав целевой Mac-адрес в коммутаторе. проблема была в том, что хост 2 отбрасывает пакеты, которые ему не предназначены (другой адрес назначения Mac). таким образом, путем перезаписи Mac-адреса назначения в Mac-адрес хоста 2 на коммутаторе 2 и путем активации переадресации IP на хосте 2 трафик успешно перенаправляется. Archaj 6 лет назад 0
Возможно, включение «неразборчивого» режима сетевого адаптера может удерживать пакет достаточно долго для его пересылки ... Nevin Williams 6 лет назад 0
Proxy-ARP также может быть другим путем. Nevin Williams 6 лет назад 0
Спасибо, Уильямс, как я могу использовать proxy-ARp для перенаправления, не могли бы вы порекомендовать почитать? Archaj 6 лет назад 0
Я искал в Google «включение proxy arp в Ubuntu» и получил такой результат: http://www.linuxproblem.org/art_8.html Nevin Williams 6 лет назад 0
0
Archaj

Спасибо за ваши ответы, я, наконец, смог сделать это, переписав целевой Mac-адрес пакетов в коммутаторе. проблема была в том, что хост 2 отбрасывает пакеты, которые ему не предназначены (другой адрес назначения Mac). таким образом, путем перезаписи Mac-адреса назначения в Mac-адрес хоста 2 на коммутаторе 2 и путем активации переадресации IP на хосте 2 трафик успешно перенаправляется. поэтому первый шаг - сообщить S2 об отправке трафика на хост 2 с Mac назначения с хоста 2. и шаг 2 - сказать S2 перезаписать MAC-адрес трафика, возвращающегося с хоста 2 на MAC-адрес хоста 3 (для восстановления). оригинальный mac-адрес).