2017-10-13 2 views
-1

ping 명령에 대한 c 코드를 작성했는데 어떤 이유로 응답을받지 못합니다. 나는이 코드로 문제를 찾기 위해 며칠을 보냈지 만, 나중에 wireshark로 보내는 패킷을 체크했다. 답장이 나에게 전송되었음을 알았습니다. (입력 한 대상 IP가 있어야하므로 대상에 도달 할 수 없습니다.) 인터넷에서 나는 나의 방화벽이이 문제를 일으킬 수 있다는 것을 알았지 만 그것을위한 해결책을 찾지 못했습니다. 그래서 제발 나를 도와주세요, 특정 코드에 대한 방화벽에 대해 어떤 종류의 예외를 추가 할 수 있습니까? 고맙습니다.리눅스 방화벽이 내 코드의 패킷을 수신하도록 허용

EDITED

iptables에 출력 :

체인 입력 (정책 수락) 대상 PROT 옵트 소스 목적지

체인은 FORWARD (정책 수락) 대상 PROT 옵트 소스 목적지

체인 OUTPUT (정책 수락) 대상 제자 옵트 소스 대상

와이어 샤크 출력 :

17 0.641636029 192.168.0.134 192.168.0.1 ICMP (120) 연결할 수없는 대상 (포트에 연결할 수는)

은 또한 아마 실수를하고 문제는 수신에 있지만 패킷을 보낼 때있을 수 있습니다

+0

도움이되지 않는다면 '/etc/init.d/iptables stop'을 실행하십시오. 방화벽이 아닙니다. –

+0

* iptables *를 멈출 수 없으며, * 서비스 중지 * 시도도했습니다. kali 리눅스를 사용하고 난 심지어이 위치에 iptables을 가지고 있지 않다 –

+0

방화벽이 아니야 –

답변

1

다음 명령을 사용하여 방화벽을 확인하십시오. iptables -L -n
그리고 출력

+0

방금 ​​내 게시물을 편집했습니다 –

+0

불행히도 방화벽이 아닙니다 –

+0

오, 그게 나에게 좋지 않습니다. 어떻게 될 수 있고 어디서 문제를 찾아야합니까? 고맙습니다 –

1

이 (icmp(7) 참조) pingICMP를 사용하는주의 liboping 또는 libping

같은 몇 가지 라이브러리를 사용하는 것이 좋습니다 제공합니다. 프로그램에 루트 권한이 필요할 수 있습니다. 따라서 루트로 실행하거나 setuid 기법을 사용해야합니다.

시스템 호출마다 체계적으로 검사하십시오 (목록은 syscalls(2) 참조). errno(3)을 읽고 perror(3) (또는 strerror(errno))을 사용하십시오.

또한 프로그램에서 strace(1)을 사용하여 어떤 시스템 호출이 수행되었는지 (그리고 어떤 시스템 호출이 실패했는지) 파악할 수 있습니다.