C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[25052] Re:공인 아이피 구하기 실패 (잘되는데요)
빌더(TWx) [builder] 5892 읽음    2015-03-11 20:27
zio.png 27.5KB zio 유선공유기
iptime.png 19.7KB iptime 유무선공유기
bugfree 님이 쓰신 글 :
: 공유기 통해서 인터넷 사용할때 사설 아이피는 곰방 알수 있지만
: 문제는 공인 아이피 알아내는거.
:
: 이거저거 여러 방법으로 코딩해봤는데 별짓 다해봐도 안되네요.
: 최신 공유기 아니면 안되나 봅니다.



12년여 전에 나온 공유기가 아니라면 UPnP는 다 지원된다고 보는 게 맞습니다.
UPnP 프로토콜이 구현하기가 어려운 것도 아니고 공유기를 팔아 먹기 위해서라도 기능을 지원할 수 밖에 없죠.
공유기 펌웨어의 버그로 간혹 멀펑션을 보이는 경우도 있지만... 공유기라면 다 지원된다고 보는 게 맞습니다.

나온지 10년도 넘은 골동품 ZIO 유선공유기도 테스트 해보니 지원되네요.


ZIO 구형 유선공유기



iptime 유/무선공유기

빌더로 코딩한 실행파일도 같이 올립니다.


bugfree [bugfree]   2015-03-11 21:05 X
헐~~ 잘되네요
제가 만든 프로그래은 왜안될까요 흑~
류종택 [ryujt]   2015-03-12 08:40 X
헬쥐 U+ 공유기는 upnp 안되더군요.  얼마 전에 교체한 것도 안되고 ㅡ.ㅡ;
bugfree [bugfree]   2015-03-12 20:48 X
윈7, 윈8 다되는데 제가 만든 프로그램은 왜 안될까요
아직 원인을 찾지못하고 있어요 흑~
bugfree [bugfree]   2015-03-17 14:00 X
생각보다 복잡하더군요
이제 동작하기는 하는데 다른 문제가 발생했습니다

인터넷 -> 공유기A -> 공유기B

무선랜 영역을 확장하기 위해 유무선공유기 2개를 사용했는데요
A와 B 서로 DHCP 충돌나지 않게 설정했고
유선이든 무선이든 A와 B에 연결된 컴에서 인터넷도 잘됩니다

그런데 A에 연결된 컴에선 UPNP가 잘되는데
B에 연결된 컴에선 UPNP가 먹히질 않습니다

해결방법이 없을까요
빌더(TWx) [builder]   2015-03-17 17:46 X
1.
테스트 프로그램은 공유기 펌웨어가 게이트웨이 디바이스 프로파일로 구성되어 있는 것만 가정하였고...
WAN 디바이스 프로파일을 고려하는 코드는 작성하지 않았기 때문에 공유기 프로파일이 다른 구성이라면...
UPnP 인식이 안될 수도 있고..

2.
A/B 두개의 공유기를 각기 DHCP를 사용해서 구성한 것으로 볼 때... 공유기를 라우팅 모드로 구성해서 사용하고 있는 것 같네요. UPnP 프로토콜은 multicast 방식을 이용해서 인식정보가 교환되기 때문에... 라우터 간에 multicast 패킷이 오고가려면 라우터가 multicast 라우팅 기능을 갖고 있어야 합니다. 패킷이 Replication 되어야 하기 때문에 하드웨어적으로 구현되기 마련이고 전산망을 갖고있는 단체나 조직에서 사용되는 전용 라우터 장비 정도는 돼야 이런 기능을 갖고 있죠.

그렇다고 multicast 라우팅 기능이 없는 경우라고 해서, 기술적으로 전송이 불가능한 것은 아닙니다. multicast 패킷에 목적지 타겟이 정의된 ip 헤더구조를 래핑해줘서 unicast로 전송하는 일종의 터널링 기능을 구현해 주면되는데... 공유기 펌웨어를 건드리지 않는 이상 할수가 없죠.


위와 같이 공유기 2개로 구성되어 있는 경우에 UPnP 기능을 사용하기 위해선... 공유기를 브릿지 모드로 구성해 줘야 합니다.

A만 DHCP를 enable 하고, B를 disable 하세요. 모든 장치들은 A에 의해서 private ip가 할당되고(유무선 상관없이) 같은 서브넷으로 묶이기 때문에 모든 장치들에(A에 연결되든 B에 연결되든 상관없이) multicast 패킷이 오고갈 수 있게 되고 UPnP 도 사용할 수 있게 됩니다. 브릿지 모드에서 B는 단순히 허브기능 역할만 하게 되는 거죠.
bugfree [bugfree]   2015-03-19 15:48 X
알려주신 방법으로 해결했습니다
포트포워딩도 자동으로 설정할수 있게 시도해 봐야겠습니다
감사합니다 ^^
bugfree [bugfree]   2015-03-24 13:30 X
유선랜 연결해서 인터넷하다가 무선랜 연결해서 짦은 간격으로 네트웍 바꿀때 가끔
소켓이 먹통되는데요 일단 연결되면 UPNP 잘되거든요 원인을 어디에서 찾을지 모르겠습니다

유선랜 무선랜 반복해서 바꿔도 인터넷은 잘되는데 제가 만든 프로그램에선 소켓이 먹통되면서
UPNP 통신이 안되는데 공유기 셋팅에 문제가 있는걸까요

빌더(TWx) [builder]   2015-03-24 17:46 X
공유기를 브릿지 모드로 구성한 상태에서... 공유기 A와 B에 연결된 모든 장치들이 A의 DHCP로 할당 받은 gateway range 범위에서 private IP를 사용해서 같은 subnet으로 사용되고 있다면... 그건 공유기 셋팅에 문제가 있는 게 아니고, multicast 소켓이 active 된 유선랜카드/무선랜카드에 정상적으로 바인딩 되고있지 못해서 일어나는 문제가 아닐까 싶네요.
빌더(TWx) [builder]   2015-03-24 17:59 X
특정 유선 또는 무선랜카드가 multicast interface로 바인딩 될 수 있도록... 명시적으로 커널 네트웍 레이어에 아래와 같은 식으로 지정해 보세요.

IP6 는 생략하고... IP4만 가정 합니다.

....

in_addr multicast_interface;

multicast_interface의 ip를 해당 특정 유선 또는 무선랜카드의 Local IP (loopback이 아닌, 공유기 A로 부터 할당 받은 private ip)로...
명시적으로 지정하고...

setsockopt(multicast_socket, IPPROTO_IP, IP_MULTICAST_IF, &multicast_interface, sizeof(multicast_interface));


+ -

관련 글 리스트
25050 공인 아이피 구하기 실패 bugfree 5445 2015/03/11
25052     Re:공인 아이피 구하기 실패 (잘되는데요) 빌더(TWx) 5892 2015/03/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.