한 네트워크 인터페이스에서 다른 네트워크 인터페이스로 패킷 전달이 가능한가요? 프로그래밍으로..
글쓴이: rpit1412 / 작성시간: 금, 2013/09/13 - 2:57오후
안녕하세요?
지금 네트워크카드가 무선랜이랑 유선랜이 있는데 (wlan0, eth0)
프로그래밍을 통해서 wlan0으로 들어온패킷을 eth0으로 그냥 전달하고싶은데 ( 인터넷 스택을 이용하지않고 )
어떻게 프로그램을 짜야 할까요?
흔히 하는 소켓프로그래밍으로는 안될거같은데..
정확히 하는것은 안드로이드 테더링을 통해서 들어온 패킷을 NS-3의 가상 디바이스로 패킷을 보내고싶은데..
막막하네요.. 조언 부탁드립니다
Forums:


wlan0쪽이 테더링을 통해 인터넷 연결이 가능한
wlan0쪽이 테더링을 통해 인터넷 연결이 가능한 외부망이고 eth0 쪽은 내부망이며
NS-3 가상 디바이스는 내부망에 매달려있는 구성인 것 같은데요.
혹시, 안드로이드로부터 공유받은 wlan0쪽 테더링 회선을 eth0쪽 내부망에 재공유하는 것을 원하시는 건가요?
그렇다면 아래와 같이 하시면 될 겁니다. 부팅뒤에도 설정유지하려면 여기 등을 참조하시고요.
원하시는 바가 이것이 아니라면, iptables 규칙을 바꿔서 해결되는지 검토해보시고요.
예를 들어, 위와 같은 NAT기능까지 필요한 것이 아니고 단지 서로 다른 망에 속한
안드로이드 장치와 NS-3 가상 디바이스가 중간의 리눅스박스를 게이트웨이삼아 자유롭게 패킷교환만 하면 되는 상황이라면
위 규칙에서 nat 규칙은 제거하고 wlan0에 대한 FORWARD 허용규칙만 eth0처럼 넣어주면 될 것입니다.
( 이 경우 물론 두 장치에서 gateway가 리눅스박스 주소로 각각 설정되어야 할 것이고요 )
위 규칙들은 테스트까지 해 본 것은 아님을 밝혀둡니다.
gilgil.net
> 프로그래밍을 통해서 wlan0으로 들어온패킷을 eth0으로 그냥 전달하고싶은데 ( 인터넷 스택을 이용하지않고 )
raw level로 wlan0로부터 패킷을 수신받아서 eth0로 쏴 주면 됩니다.
pcap api에 대해서 공부해 보세요.
pcap_next_ex : 패킷을 받는 함수
pcap_send_ex : 패킷을 쏘는 함수
www.gilgil.net