2011-04-06 5 views
1

Linux에서 포트 9030에서 UDP 서버를 실행 중이며 어떻게 든 UDP 서버에 액세스 할 수 없다고 가정 해보십시오. 해당 UDP 포트에 대한 액세스를 방해하는 방화벽이나 유사한 설정이 없습니다. 또한 패킷이 O.S의 네트워크 스택에 도달한다는 것도 알아 두십시오. O.S. 패킷을 수신하면 즉시 Destination Port Unreachable의 ICMP 패킷을 보냅니다. 또한C UDP 서버 액세스 문제

udp  0  0 212.253.35.111:9030  0.0.0.0:* 722/udpServerApp 

가 UDP 서버가 공인 IP, 로컬 호스트하지에서 수신 대기 또는 등 패킷을 의미하는 것은 그 대중에게 도달주의 : 그리고 당신의 놀랍게도, NETSTAT 출력은 UDP 서버는 다음과 같이 할당 된 정확한 포트에서 실행되고 있는지 보여줍니다 IP 주소.

그래서 무엇이 잘못 될 수 있습니까? 네가 가장 잘 추측 한 바는 뭐니? 나는 정말로 혼란 스럽다.

+1

내 아이디어 위에 아이디어 ead : 포트에 엔디 언 오류가 없는지 확인하십시오 (hton을 사용합니까?). - 관련성이 없을 수도 있습니다. 어떻게 서버에 액세스하려고합니까? – Ptival

+0

netstat 출력이 "지정한 정확한 포트에서 실행 중"이라고 표시되면 @Ptival이 발생하지 않을 것입니다. – Alnitak

+0

@Alnitak 물론, 저는 서버에 접속하는 클라이언트의 오류에 대해 더 생각하고있었습니다. 그러나 telnet으로 시도하고 있다면 그와 관련이 없습니다. 귀하의 대답은 어쨌든 더 가능성이 높습니다. – Ptival

답변

3

아마도 올바른 주소 (예 : 주소)를 듣고 있지 않을 것입니다. "any"대신에 127.0.0.1 (localhost)에서 듣기. netstat의 정확한 결과는 그것을 알려줄 것입니다 (그러나 여러분은 그것을 게시하지 않았고 추측을 요청했습니다, 그래서 여기 있습니다).

0

바인딩 된 UDP 서버는 어떤 IP 주소입니까?

127.0.0.1에만 바인딩 된 경우 외부 네트워크 인터페이스에서 액세스 할 수 없습니다.

모든 인터페이스에서 수신 대기하려면 INADDR_ANY에 바인딩되어야합니다.

1
귀하의 소켓 9030.

는 tcpdump를 또는 당신이 정말로 IP 212.253.35.111로 UDP 패킷을 전송하는 Wireshark를 통해 확인 포트, 로컬 IP 주소 212.253.35.111에서 수신

, 포트 9030.

잘못된 포트 나 잘못된 IP 주소에 연결하려고 시도 중이거나 아직 발견하지 못한 방화벽 (예 : 로컬 iptables 규칙)이 있거나 라우팅 오류가 발생하여 어딘가에 2 대의 컴퓨터가있는 경우 동일한 IP 주소 (VRRP를 사용하는 경우 일부로드 밸런싱/핫 대기 설정에서 가능)