2014-12-30 4 views
0

У меня есть одно приложение, в котором у меня есть следующая настройка,Как пересылать пакеты на wlan0 до eth0

--------- LAN ------- Wifi ------ -
| PC1 | < =====> | PC2 | < =====> | STA | --------- ------- -------

ПК1 подключен к сети, а PC2 подключен к ПК1 с использованием одного разъема. STA подключается к PC2 с использованием Wi-Fi (PC2 настроен как AP с использованием hostapd), и я хочу подключиться к интернету на STA. Но есть одно ограничение: весь обмен пакетами между PC2 & PC1 должен использовать только данный сокет.

+0

Я не знаю, что libpcap обладает этой способностью. Вы уверены, что это так? Я подозреваю, что вам придется настроить PC2 вручную, чтобы перенаправить весь свой трафик, идущий от PC1 до STA. Возможно, я не понял, о чем вы спрашиваете. –

+0

через сокет, вы имеете в виду разъемы IPC? –

+0

@o_weisman Я имею в виду, что PC1 подключен к сети, PC2 подключен к ПК1 через коммутатор (вы можете сказать), и есть также одна сотовая связь (IPC). STA подключается к PC2 через Wi-Fi (PC2 настроен как AP с использованием hostapd). Я хочу, чтобы STA выполнял ping PC1, но я хочу, чтобы все пакеты, которые переходят с PC2 на PC1, должны проходить через сокет –

ответ

0

Если вы не выполняете это как упражнение по программированию, я предлагаю вам настроить SSH-сервер на ПК2, а затем туннель PC1 через ПК2 с помощью dynamic port forwarding.

Таким образом, PC1 и PC2 будут подключаться через один разъем (порт 22 SSH или любой другой порт, который вы определяете), а PC1 сможет отправлять трафик через туннель в любой пункт назначения, доступный с ПК2.

Если вы действительно заинтересованы в написании этого самостоятельно, не используйте libpcap. Используйте сырые сокеты.

+0

Я использую DTLS для сокетов (сокеты UDP) ...... и я хочу, чтобы каждый пакет, отправленный на PC1, поступал ли от PC2 или STA (через PC2) передаваться на ПК1, используя только существующую сессию DTLS .... –