2015-05-29 4 views
3

Я работаю над проектом, где я хочу перенаправить трафик Ethernet через другой интерфейс. Настройка такова:Перенаправление трафика Ethernet через другой интерфейс

У меня есть компьютер с рабочим доступом в Интернет. У меня также есть плата MBED LPC1768, которую я могу подключить через USB с моим компьютером. Я могу загрузить двоичный файл на это устройство и запустить его. Например, я могу позволить ему действовать как клавиатура и отправлять нажатия клавиш на компьютер. Я также могу позволить устройству действовать как мышь и отправлять события мыши.

Теперь я хочу, чтобы устройство работало как интерфейс ethernet. Поскольку устройство подключено с помощью USB, я думал о протоколе ethernet-over-USB. Я выбрал для протокола USBCDC-ECM, который работает на Linux и OS X. При подключении устройства устройство правильно идентифицируется как интерфейс Ethernet. Более того, я запускаю DHCP-сервер на встроенном устройстве, поэтому компьютеру присваивается IP-адрес. Обратите внимание, что у устройства нет рабочего интернет-подключения к внешнему миру (на нем есть компьютер).

Таким образом, встроенное устройство может захватывать интернет-трафик с компьютера. Когда устройство получает пакет, я хочу проанализировать пакет, отправить его обратно на компьютер и перенаправить его через рабочий интерфейс.

Так, например, у меня есть ноутбук и рабочее соединение на интерфейсе wlan0. Теперь я подключаю устройство. Он присваивается интерфейсу eth0. eth0 - мой предпочтительный интерфейс на компьютере, поэтому весь трафик идет до eth0. Я фиксирую этот трафик на устройстве, и теперь я хочу отправить трафик обратно на компьютер и перенаправить его на wlan0 (или любой другой рабочий интерфейс). Поэтому в основном я хочу создать устройство, которое захватывает данные и отправляет их обратно на компьютер, действуя как промежуточное USB-устройство для интернет-трафика.

Это можно сделать? Я предпочитаю не изменять настройки в ОС и не позволять устройству управлять им. Моя основная ОС - Ubuntu 14.04, поэтому я не забочусь о Windows или OS X на данный момент. Кроме того, есть ли альтернативы для этого? Возможно, USBCDC-ECM не лучший выбор для этого.

Любая помощь будет высоко оценена.

+0

Этот вопрос очень широк. У вас есть какой-то конкретный вопрос о реальной проблеме программирования? Что вы пробовали? Вы пробовали форумы NXP? – Olaf

+0

Если ему назначен адрес, то есть DHCP * клиент * не * сервер *. – Clifford

+0

Хорошо, прочитав другие сообщения: вы хотите, чтобы плата сама подключалась к интернету через «другой интерфейс» (на самом деле LPC1768 имеет Ethernet MAC на чипе) или ПК для работы в качестве моста между плате и i -сеть? Для последнего: это на самом деле не вопрос программирования, а об администрировании. – Olaf

ответ

1

Я не уверен, что вы пытаетесь выполнить, но если ваше устройство уже отображается как соединение ethernet, не можете ли вы использовать iptables для перенаправления трафика на ваше устройство?

Кроме того, вы можете позволить своему устройству действовать как DNS-сервер и обрабатывать входящие запросы DNS и перенаправлять их. Просто дикая мысль.

0

Если у вас есть ОС Linux, вы можете использовать iptables и запретить весь трафик вне локальной сети через этот интерфейс. Это правильный способ сделать это.

+0

Linux на ARM Cortex-M MCU? Неплохо! – Olaf

+0

@Olaf; это не ясно в вопросе, но, возможно, именно хост требует настройки и что * может * запускать Linux. – Clifford

+0

@Clifford: Я перечитываю вопрос: да, это может быть правдой. Я интерпретировал это так, как будто «правильным интерфейсом» и «другим интерфейсом» считался сам совет. Однако, поскольку он не уточнил, что (возможно, он попытался настроить свой компьютер и потерял i-net?), Все это спекулятивно. – Olaf

1

Настройка хост (компьютер плата MBED крепится к) для общего доступа к подключению к Интернету (ICS), также известный как Сеть Bridging. Как это делается, зависит от ОС хоста; например:

В этом случае хост-сервер DHCP, и обеспечивает обращение к устройству; самим устройством должно быть DHCP клиент не сервер.

+0

Разве это не так, как при обратном подключении мобильного телефона через USB? – Olaf