TCP 스택에서 DNS 요청이 실패한 위치를 어떻게 확인합니까?

TCP 스택에서 DNS 요청이 실패한 위치를 어떻게 확인합니까?

여기서 네트워크 설정을 설명했습니다.

이 정적 경로가 적용되지 않는 이유는 무엇입니까?

현재 DNS 서버를 ping할 수 있지만 모든 DNS 요청이 실패합니다.

~$ ping 130.35.249.52
PING 130.35.249.52 (130.35.249.52) 56(84) bytes of data.
64 bytes from 130.35.249.52: icmp_seq=1 ttl=57 time=105 ms
64 bytes from 130.35.249.52: icmp_seq=2 ttl=57 time=111 ms
^C
--- 130.35.249.52 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 105.604/108.388/111.172/2.784 ms

~$ nslookup oracle.com 130.35.249.52
;; connection timed out; no servers could be reached

우분투(내가 아는 한)는 방화벽을 실행하지 않기 때문에 어떤 타당한 이유도 생각할 수 없습니다. 하지만 Ubuntu는 가상화되어 있으므로 VirtualBox 호스트 설정 방식에 문제가 없기를 바랍니다.

답변1

첫째, DNS는 기본적으로 TCP 서비스가 아닌 UDP 서비스입니다. DNS는 UDP 포트 53에 있습니다. DNS 서버 컴퓨터에서 들어오는 연결을 위해 UDP 포트가 열려 있는지 확인하십시오. 또한 DNS에는 TCP 포트 53을 사용하는 TCP를 사용할 수 있는 옵션이 있지만 DNS는 TCP 없이는 잘 작동하지만 UDP 없이는 작동하지 않습니다.

dig둘째, DNS 문제를 디버깅하는 것보다 작업하는 것이 훨씬 낫습니다 nslookup. 예: dig @130.35.249.52 oracle.com dig가 없는 경우 yum install bind-tools(RHEL/Oracle/CentOS 6) 또는 Linux 배포판에 해당하는 명령을 사용하여 가져옵니다.

실제로 방화벽이 포트 53 TCP를 허용 dig -t @130.35.249.52 oracle.com하지만 dig @130.35.249.52 oracle.comUDP가 여전히 차단되어 작동하지 않는 것을 확인했습니다.

관련 정보