고정 IP를 사용하거나 Mac address 사용하면 당연히 된다는 말이 잘 이해가 안됩니다. TCP 통신에 있어서 IP와 Mac은 꼭 있어야하는 것 입니다. 고정 IP 는 직접 Setting을 해주는 IP를 말하고 말씀하신 공유기 사설 IP는 DHCP 받은 IP입니다. PC는 DHCP를 받아서 사용하는 것 같은데 W5500은 왜 DHCP 사용해 테스트하는 것은 왜 불가능 한지요? W5500이 DHCP 서버에게 IP 할당 받는 것이 가능합니다.
그리고 DNS는 단지 google.com 과 같은 도메인 네임을 IP에 맞게 매핑시켜주는 역할을 합니다. 말씀하신 개념과는 다릅니다. 오히려 말씀하신 개념은 DHCP 쪽에 더 가깝네요 DHCP 서버는 공인 IP이고 DHCP 서버가 사설 IP를 나눠주는 역할을 하니까요.
W5500에서 인터넷망으로 Ping을 성공하시는 방법은 DHCP로 IP할당 받고 ICMP를 이용하셔서 Ping request를 요청 하는 방법과 공인 IP를 W5500에 할당하고 ICMP를 이용해 Ping request를 요청하는 방법이 있겠네요.
그리고 외부망(공인 ip)과 W5500(사설 ip) 간의 통신을 원하신다면, 이건 공유기단에서의 문제입니다.
공유기사마다 조금은 다를 수도 있지만, 보통 포트포워딩, ddns의 기능을 찾아보시면 해결하실 수 있을 것 같습니다.
간단하게 말씀드리면,
[]예를들어 공유기(공인ip 111.222.111.222)
[]W5500(사설 ip 192.168.0.100으로 공유기에 연결되어있음)
포트포워딩은 외부망(예를 들어 59.18.44.251)에서 내부 사설망(192.168.0.100)으로 접속은 당연히 불가능하기 때문에
외부에서 공유기 ip의 특정 port(111.222.111.222:5000)으로 접속할 때 공유기가 192.168.0.100으로 연결해주도록 설정하는 기능입니다.
ddns는 공유기의 ip가 고정일 수도 있지만 유동일 수도 있기 때문에 ip가 아닌 주소형태로 접속할 수 있도록 해주는 기능입니다.
예를들어 공유기의 ip를 ddns 기능으로 'abc.ccc’라고 설정해 두었다면, 외부망에서 ‘abc.ccc:5000’ 으로 접속한다면 W5500으로 접속할 수 있게 해주는 기능입니다.
그런데 이러한 기능들은 저희 제품이 아닌, 공유기의 기능이라는 걸 다시한번 말씀드리고 싶습니다.
공인 ip와 사설 ip를 변경해주는 기술을 NAT(network address translation)이라고 합니다.
포트포워딩도 NAT의 응용기술이구요.
추가 질문의 의미를 이해하지 못하겠습니다.
공유기에서 유동IP는 DHCP로 할당받은 IP를 말씀하시는것 같고, Local 고정 IP는 공유기에서 Static으로 하신다는 말씀이신것 같은데…
위 두 IP는 모두 사설 IP(192.168~~)입니다.
PC에서 외부로 나가는건 공유기의 NAT에서 routing table에 의해 처리해 주는 부분이구요.
외부에서 PC로 접속하는것은 가능하지 않습니다.(사설 IP)
예를 들면, 공유기에 연결된 telee5212님의 PC에서 구글 Server에 ping을 날리고, 응답을 받는것은 가능합니다.
그런데 구글에서 telee5212님의 PC에 ping을 날리는건 안됩니다.(공유기의 공인IP에는 가능하겠죠)
한가지 추가로 정정합니다.
위에 답글에서 제가 DHCP library로 ip를 할당받으라고 적어놨는데, 잘못적었습니다.
포트포워딩을 설정하기 위해서는 해당 사설 IP를 알아야 하는데, 이 IP를 유동으로 해놓으면 연결시마다 새로운 IP를 할당받을 수도 있기 때문에
고정 IP를 사용하는게 맞습니다.
dhcp.c 의 dhcp_run 에서 첫단계인 send_DHCP_DISCOVER 를 보냈는데 공유기에서 응답이 없습니다.
w5500 init, udp socket open 등 정상으로 열리고, discover message 도 정상으로 생성됩니다.
그래서 동일한 환경에서 WIZNET 의 W5500_ebv 를 사용해 dhcp 를 실행하면
send_DHCP_DISCOVER 는 물론 ip 를 새로 할당받는 정상동작을 합니다.
W5500_ebv program 을 수정해 send_DHCP_DISCOVER messgae 를 까 보았습니다.
그랬더니 저희 개발보드의 message 와 동일합니다.
w5500 init, udp socket open 등 여러가지 사항을 면밀히 비교해도 두 Code 간에 차이가 없습니다.
사용한 저희 개발보드는 tcp, udp, ping 까지 올려서 정상 동작하고 있는 보드입니다.
왜 그런것일까요?
몇일째 삽질하고있는데 조언 부탁드립니다.
그리고 w5500-evb 보드의 SWD 에는 어떤 tool 을 사용하나요? (예, st-link or ulink2 등)
다른 W7500-evb 의 SWD 에는 어떤 tool 을 사용하나요?
조언을 주신방법대로 해서 dhcp 을 올리고 dhcp ip lease 가 성공했습니다.
저희 개발보드 w5500 에서 ip 공유기를 거쳐 wan 단의 PC 와 tcp/udp/ping 이 성공 했습니다.
한가지 아쉬운점은 개발보드의 IP 를 유동으로 하지말고, 고정으로 하고 싶습니다.
즉, 저희 개발보드 w5500 에 사설 고정 ip 로 하고, 공유기를 거쳐 google 이나 공인IP server에 접속하길 원합니다.
일반적으로 local PC 에서는, pc ip 를 고정 사설IP 로 넣고 ip공유기를 거쳐 WAN 상으로 접속이 가능 하지않습니까?
예를들면, local PC IP 를 고정 사설IP 로 하고 ip공유기를 거쳐 google 에 ping request 하면
ping reply 를 받습니다.
저희 개발보드의 사용환경이 이와같은 환경에서 되어야 하거든요.
그간 좋은 조언을 주셔서 저희 개발보드에 dhcp 를 올려 ip 를 할당받는데 성공했습니다.
감사드립니다.
W5500 능 사용한 저희 개발보드로
유동 사설 ip로 공유기를 거쳐 공인 ip 의 server 에 tcp접속/udp/ping 을 성공했습니다.
저희 개발보드의 application 환경은, 고정 사설 ip로 - 공유기를 거쳐 - 공인 ip 의 server 에 접속 하는 것입니다.
저희 개발보드에서 dhcp 를 통해서 ip 공유기경유 공인IP 에 접속하는것 까지는 만족스러운데,
저희 개발보드는 고정 사설 ip로 사용해야 합니다.
PC 의 경우
PC 를 사설 고정IP 로 놓고 공유기를 거쳐 공인 ip 의 server 에 접속 하는 것이 가능합니다.
1,2번이 모두가 맞다고 하신다면,
우선, 공유기가 DHCP Server로써 DHCP Client에 할당해주는 주소영역을 아셔야합니다.
예를 들어 공유기가 할당해주는 ip 주소영역이 192.168.13.20 ~~192.168.13.250 이라면
W5500의 ip는 192.168.13.20 ~ 192.168.13.250 중 하나의 ip를 사용하셔야합니다.
두번째 질문의 답변합니다.
별도의 protocol을 사용하지는 않습니다.
단, 첫번째 질문의 대한 답에서의 ip영역중 하나를 socket open이전에 common register의 source ip address register 영역에 써주셔야합니다.
thanks
irinkim
dhcp client 를 사용하지 않고, 공유기의 dhcp 영역내에서 w5500 의 IP 를 고정으로 설정하면 된다는 것인가요?
아니면 dhcp 통해 IP 를 받고, 실제 사용은 원하는 고정 IP (공유기의 dhcp 영역) 을 사용하면 되다는것인가요?
위 두 질문에 대해서
1의 경우가 맞습니다. 하지만 공유기에서 DHCP영역을 할당할 때 매번 다른 영역을 할당하기 때문에 IP가 계속 변동될 가능성이 있습니다.
공유기 설정에 보시면 DHCP 고정 할당이라는 부분이 있을 겁니다. 혹은 DHCP관련 설정 부분에 IP 수동 지정같은 것이 있을 겁니다.
공유기 설정을 고쳐보시고 시도하시기 바랍니다.
첫 째, 업데이트할 펌웨어 소스에서 지정해 줄 W5500의 MAC과 고정 IP를 확인합니다. 00-00-00-4A-ED-01 / 192.168.0.70으로 되 있다고 가정하겠습니다.
둘 째, 공유기의 DHCP 영역을 확인하고 192.168.0.70이 같은 네트워크에 들어가는지 확인해 줍니다.
공유기의 IP = 192.168.0.1 이고 서브넷 마스크 = 255.255.255.0 그리고 DHCP 주소가 192.168.0.xx~192.168.0.yy로 설정되어있고 xx~yy에 70이 들어가게 설정을 해줍니다. ex) xx~yy = 50~100
셋 째, 공유기에서 DHCP 고정할당 설정 부분에 WIZnet 칩에 설정해둔 MAC주소와 IP주소를 설정해줍니다. 00-00-00-4A-ED-01 / 192.168.0.70를 넣어줍니다.