내 컴퓨터에는 두 개의 네트워크 카드가 있습니다. 둘 다 다른 인터넷 공급자를 사용합니다.
두 ISP 모두 서로 다른 DNS 서버를 가지고 있으며 나는 그들의 IP 주소를 알고 있습니다.
nslookup
쿼리가 전송될 때 지정된 인터페이스를 통해 정확하게 전달되는지 확인하고 싶습니다 .
그것은 다음과 같습니다:
ping -I eth1 google.com
nslookup -I eth1 google.com
어쨌든 가능합니다. -I
선택의 여지가 없다는 것을 알고 있습니다. 이런 식으로 실현되는 것도 원하지 않습니다.
어떻게 해야 합니까?
답변1
이는 완전히 nslookup
구체적이지는 않지만 일반적인 경우에는 작동합니다(컴퓨터에 루트 액세스 권한이 있는 경우). IP 네트워크 스택을 사용하여 다른 인터페이스가 아닌 하나의 인터페이스를 사용하고 있는지 확인합니다. nslookup을 호출하기 전에 특정 네트워크 인터페이스를 통해 DNS 서버 IP 주소에 경로를 추가하기만 하면 됩니다.
eth0
2개의 인터페이스( 및 ) 가 있고 eth1
기본 게이트웨이가 eth0
(192.168.0.1)이며 인터넷 경로 192.168.1.1을 통해 Google DNS(8.8.8.8)에 쿼리하려는 경우 eth1
다음을 수행할 수 있습니다.
ip route add 8.8.8.8/32 via 192.168.1.1
dev eth1
192.168.1.1에 도달하는 방법은 한 가지뿐이므로 명령에 추가하는 것은 소용이 없습니다.
완료되면 경로를 삭제하여 기본 경로를 복원해야 합니다.
ip route del 8.8.8.8/32
답변2
가장 간단한 방법은 쿼리해야 하는 인터페이스에 할당된 IP 주소를 잠그는 것입니다.
사용 가능한 인터페이스가 두 개 이상인 경우 dig -b z.b.c.d
해당 인터페이스를 사용하여 쿼리를 실행합니다.
답변3
컬에서도 동일한 옵션을 사용할 수 있습니다. 당신이 달성하고 싶은 것이 무엇인지 알려주십시오.
당신은 또한 사용할 수 있습니다dig @ipaddress yourquery
--interface <name>
Perform an operation using a specified interface. You can enter interface name, IP address or host name. An example
could look like:
답변4
남자 발굴 :
The -b option sets the source IP address of the query to address.
This must be a valid address on one of the host's network interfaces
or "0.0.0.0" or "::".