2017-12-21 20 views
0

내 작업의 경우 일부 호스트 이름을 차단해야하지만 일부 웹 사이트는 다른 DNS 쿼리 (예 : Google DNS 및 다른 DNS 서버)에 다른 IP 주소로 회신 할 수 있으므로 다른 호스트 이름을 사용하여 동일한 호스트 이름을 해결하고 싶습니다. DNS 서버를 사용하여 가능한 많은 IP 주소를 확보하십시오.시스템 설정을 무시하고 C++에서 프로그래밍 방식으로 다른 DNS 네임 서버를 쿼리 할 수 ​​있습니까?

간략한 설명 : "example.com"을 DNS #A를 사용하여 IP로 변환하고 "example.com"을 DNS #B를 사용하여 IP로 해결하려는 경우 (예 : 네트워크 구성을 심각하게 변경하지 않고 전혀 변경하지 않음).

나는 Poco::Net::DNSc-ares을 보았지만 둘 다 OS DNS 설정을 사용하는 것으로 보이고 다른 DNS 서버에 쿼리를 허용하지 않습니다.

+2

[DNS] (https://en.wikipedia.org/wiki/Domain_Name_System) 프로토콜을 사용하여 원하는 임의의 네임 서버를 쿼리 할 수 ​​있습니다. –

+0

@Someprogrammerdude 관련 코드 조각을 가르쳐 주시겠습니까? 나는 시간이 부족하여 적절한 "깨끗한"해결책을 쓸만큼 충분히 숙련되지는 않을까 걱정된다. – Groosha

답변

0

예. DNS는 TCP 프로토콜의 맨 위에있는 프로토콜이므로 TCP 패킷을 보내고받을 수있는 곳에서 DNS 쿼리를 수행 할 수 있습니다 (이 또는 기타 네트워크 문제를 방지하는 방화벽 규칙이없는 경우).

그러나 C++에는 DNS 프로토콜에 대한 표준 라이브러리가 없습니다. 또한 C++에는 TCP 패킷을 보내거나 받기위한 표준 라이브러리가 없습니다 (C++ 20에서는이 추가가 고려됩니다). 운영 체제 별 API를 사용하여 네트워크 통신에 의존 할 수 있습니다 (또는 언제나 그렇듯이 시스템 API를 랩핑하는 라이브러리를 사용할 수 있습니다).

+0

코드 나 라이브러리의 관련 부분을 가르쳐 주시겠습니까? – Groosha