2014-12-30 1 views
0
내가있는 내가 설정 다음 한 하나의 응용 프로그램이

에 wlan0에 나오는 전달하는 방법, 패킷 eth0를

--------- LAN ------- 와이파이 ----- -
| PC1 | < =====> | PC2 | < =====> | STA | --------- ------- -------

PC1이 네트워크에 연결되어 있고 PC2가 하나의 소켓 연결을 사용하여 PC1에 연결되어 있습니다. STA는 wifi (PC2는 hostapd를 사용하여 AP로 구성됨)를 사용하여 PC2에 연결되며 STA에서 인터넷에 액세스하려고합니다. 그러나 한 가지 제한이 있습니다. PC2 & PC1 사이의 모든 패킷 교환은 주어진 소켓만을 사용해야합니다.

+0

libpcap에이 기능이 있다는 것을 알지 못합니다. 확실한가요? PC1에서 STA로 들어오는 모든 트래픽을 전달하기 위해 PC2를 수동으로 설정해야 할 것으로 판단됩니다. 당신이 묻는 것을 이해하지 못했을 수도 있습니다. –

+0

소켓으로 IPC 소켓을 의미합니까? –

+0

@o_weisman 내 말은, PC1이 네트워크에 연결되어 있고, PC2가 스위치를 통해 PC1에 연결되어 있습니다 (말할 수 있음). 소켓 통신 (IPC)도 하나 있습니다. STA는 wifi를 통해 PC2에 연결됩니다 (PC2는 hostapd를 사용하여 AP로 구성됨). STA가 PC1을 ping하길 원하지만 PC2에서 PC1로 전달되는 모든 패킷을 소켓을 통과시켜야한다. –

답변

0

프로그래밍 연습으로이 작업을 수행하지 않는 한 PC2에서 SSH 서버를 설정 한 다음 dynamic port forwarding을 사용하여 PC2를 통해 PC1 터널링을 설정하는 것이 좋습니다.

이렇게하면 PC1과 PC2가 단일 소켓 (SSH의 포트 22 또는 사용자가 정의한 다른 포트)을 통해 연결되며 PC1은 터널을 통해 PC2에서 도달 할 수있는 모든 대상으로 트래픽을 보낼 수 있습니다.

당신이 정말로이 글을 쓰고 싶다면 libpcap을 사용하지 마십시오. 원시 소켓을 사용하십시오.

+0

소켓 (UDP 소켓)에 DTLS를 사용하고 있습니다 ... PC2 또는 STA (PC2를 통해)에서 오는 모든 패킷을 PC1에 보내야합니다. 기존 DTLS 세션만을 사용하여 PC1로 전송할 수 있습니다. –