공인 ip -> 공유기(포트포워딩) -> w5200

이전에 질문드린 글이 답변이 안 달려 좀 더 구체적으로 다시 질문 드립니다

현재 W5200을 사용하여 SNMP AGENT를 구현하였습니다.


위 그림과 같은 형태로 구성이 되어있고
공유기에서는 161번 포트를 장비쪽으로 포트포워딩 되도록 하였습니다

폰(LTE)에서 공유기 IP로 SNMP GET 메세지를 보내면
장비쪽에서 수신은 정상적으로 하는데 송신할때 fail이 됩니다.
와이어샤크로 보니 장비에서 ARP로 폰의 IP를 찾으려는 시도는 보이는데…
그 이후로 반응이 없어서 fail 나는 것 같습니다. (SN_IR 레지스터 Read 값이 0x0c)

혹시 이 경우
펌웨어에서 뭔가 부족해서 안되는건가요 ? 추가되어야 하는 기능이 있는건가요?
글 찾아봤더니 포트포워딩 기능 이용하면 된다고 하는 것 같은데…
왜 안되는 걸까요 ? 원래 되야 되는게 맞는거죠 이 상황에서 ?

안녕하세요 :slight_smile:

보통 포트포워딩하는 이유가 공유기를 통해 나가는건 가능한데 역으로 들어오는 것이 안되서 사용하는 것입니다…
장비로 들어오는 건 가능한데 나가는 게 안된다라면…좀 이상하네요?
그런데 내부끼리는 잘 통신이 된다고하니…
음… 혹시 게이트웨이 주소 값은 제대로 쓰여있나요…?
게이트웨이 주소 값에 공유기의 주소가 써있어야합니다.
ex) 내 ip : 192.168.0.100
공유기 ip : 192.168.0.1 (게이트웨이 주소)

확인 부탁드립니다.

답변 감사드립니다

장비의 IP를 고정으로 했고 IP는 192.168.1.100 인 경우
게이트웨이는 192.168.1.1로 설정되어있습니다 (IP에 따라 달라지며 끝에만 1로 되게…)
공유기의 IP라는게 공유기 화면에서 LAN IP라고 보여지는게 맞는거죠 ? (192.168.1.1 로 되어있네요)

구성은 윗글에 첨부했던 구성과 동일하게 하고 약간의 변형을 할 경우

  1. 장비 IP를 DHCP로 받을 경우 : 동일하게 송신 fail

  2. 폰을 와이파이(같은 네트웍)로 할 경우 : 송신 잘 됨

이렇습니다.
DEBUG 메세지를 보니 장비가 응답을 보내려고 하는 IP는 폰의 IP 입니다.
혹시 펌웨어에서 추가되어야 하는 기능이 있어서 일까요?
아니면 뭘 더 체크해봐야할까요 ?

IP와 Subnetmask를 비교해 나와 같은 네트워크 주소로 데이터를 보내는 것이 아니라면 게이트웨이 주소로 데이터를 보내도록 되어있습니다.
게이트 웨이 주소가 제대로 설정 되어있다면 장비가 게이트웨이로 데이터 전송을 해야하는데 폰으로 다이렉트로 전송한다고 하니 조금 이상하네요…
와이어샤크로 잡은 장비 → 휴대폰 패킷의 MAC 주소 확인해보시고 게이트웨이 mac으로 보내고 있다면 정상동작하는 것이고 폰 mac을 쓰고있다면 뭔가 잘못셋팅이 된것입니다.

정상 동작한다면 게이트웨이(공유기)에서 바깥으로 나가지 않는것 같습니다. 공유기 설정을 다시한번 봐야할것 같습니다.
공유기는 자체적으로 IP를 가지고 내부적으로 쓰는 IP 또한 가지고 있습니다. 따라서 말씀하신 192.168.1.1이 공유기 내부 IP가 맞습니다.

기본적인 네트워크 셋팅이 정상적으로 되어있는지 확인해 주시기 바랍니다.
arp가 휴대폰의 ip로 나가는것이 이상합니다.

음, 장비 → 폰으로 나가는 ARP 패킷에 보이는
Target MAC은 모두 0으로 표시됩니다
Target IP 는 폰의 IP주소입니다.

서브네트마스크가 혹시
255.255.255.0 으로 세팅되어 있으면 안되는건가요?

subnet mask는 상관없습니다.

장비 → 폰으로 나가는 ARP 패킷에 Target mac은 다음 Router가 되어야 합니다.

아무래도 공유기에서 외부로 나가는것이 안되는것 같으니 공유기쪽 회사에 문의를 해보셔야 할 것 같습니다.

다른 공유기를 사용하여 한번 테스트 바랍니다.

감사합니다.

위 내용 관련하여

MAC : 00.0C.3D.F1.00.5F
IP : 192.168.1.178
SN : 255.255.255.0
GW : 192.168.1.1
DNS server : 192.168.1.1

네트워크 설정 잘못된 게 있을까요 ?
MAC은 구매한거구요, 패킷 상태는 아래 화면과 같아요


장비쪽에서 수신된 데이터를 디버깅 메세지로 보면


UDP msg arrived
source Port : 55763
source IP : 39.7.46.88
payload length : 44

이렇게 폰의 IP를 알고 있거든요…
폰으로 보낼지, 공유기로 보낼지는 펌웨어단에서 하는 게 아닌거죠?

위 설정대로라면, 되야되는게 맞는거죠?
다른 부분 펌웨어에서 체크할 부분이 있다면 알려주세요.

공유기쪽으로 알아보기 이전에 펌웨어 쪽 문제가 아니라는
확신이 있어야해서요…

현재 사용하고 있는 W5200 라이브러리 버전이 뭔지 알려주세요

W5200에 Subnet 관련 Errata가 있습니다.
Errata Link : wiznet.co.kr/wp-content/uplo … _V106E.pdf
Errata 1번 2번을 확인해주시고 해당 부분에 대한 문제때문에 라이브러리가 수정되었던적이 있는데요

최신 ioLibrary를 참조하셔서 사용하시면 문제없이 통신이 가능할 것으로 보입니다.
ioLibrary Link : github.com/Wiznet/ioLibrary_Driver

감사합니다.

W5200E01-M3_Firmware_polling_v1.6_2

위 버전을 베이스로

W7200_AN_SNMP_V111
W7200_AN_DHCP_SMTP_V111

두 가지를 추가하였습니다 ^^;;
새로운 라이브러리는 너무 많이 바뀌어서 ㅠ_ㅠ;;

1.6버전과 1.7버전을 비교한결과 SubnetMask Address 함수쪽에 변경이 있는데요

saveSUBR 함수에 맨 아래쪽에 setSUBR();을 넣어주시기 바랍니다.

정확한 비교를 위해 1.7버전 링크 달아드립니다.
wiznet.co.kr/wp-content/uplo … g_v1.7.zip
w5200.c 그리고 socket.c 그리고 w5200.h를 비교하신다음 변경된 부분 수정하시고 테스트 부탁드립니다.

감사합니다.

알려주신 내용대로 수정하여 해결되었습니다 ^^
감사합니다!!

무사히 해결하셨다니 다행입니다 ^^

안녕하세요 ^^

알려주신대로 해당부분 수정하여 문제 해결했는데…
모바일에서 GET, SET 모두 잘 되는데
TRAP 수신이 안되네요 (공인 IP )

들어오는 부분은 모두 같은데 어째서 안되는것인지 ㅠ_ㅠ

혹시 더 도움 부탁드려도 될까요 ㅠㅠ

아래 링크에 답변 드렸습니다 ^^