Заставьте nslookup использовать определенный интерфейс

Это требует предшествующей установки, но если Вы привыкли разрушать машину (например, потому что Вы делаете разработку низкого уровня на ней), можно хотеть настроить сторожевой таймер, т.е. ядро или пользовательские задачи, который перезагружает ее автоматически, когда это становится безразличным. Linux может использовать аппаратный сторожевой таймер, если Ваша материнская плата имеет один, или сторожевой таймер программного обеспечения иначе.

4
13.12.2012, 14:44
6 ответов

Это не точно nslookup конкретный, но должен работать в общем случае (если у Вас есть корневой доступ на Вашей машине). Это использует сетевой стек IP, чтобы удостовериться, что Вы используете интерфейс вместо другого. Прежде, чем назвать nslookup, просто добавьте маршрут к своим IP-адресам сервера DNS через определенный сетевой интерфейс.

Если у Вас есть 2 интерфейса (eth0 и eth1), то, что Ваш шлюз по умолчанию через eth0 (192.168.0.1), и что Вы хотите запросить Google DNS (8.8.8.8) через eth1 где Ваш путь к Интернету 192.168.1.1, Вы могли сделать:

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
3
27.01.2020, 20:49
  • 1
    Существует второй выпуск маршрута возврата, который будет основан на IP-адресе, из которого прибывает запрос. Если просто запросы маршрута через сеть от другого сети IP ответ можно возвратиться другое (обычно дольше) путь. –  Matt 14.12.2012, 11:37

в завихрении существует опция для того же. просто сообщите нам то, чего Вы хотите достигнуть?

также можно использовать 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:
1
27.01.2020, 20:49
  • 1
    Спасибо, Когда я запрашиваю адрес с помощью nslookup, я хочу удостовериться, что на этот раз запрос проходит этот интерфейс, и что время с помощью этого, который я specifed он. –  Rahul Gautam 13.12.2012, 13:45
  • 2
    b опция устанавливает исходный IP-адрес запроса для обращения. Это должно быть допустимым адресом на одном из сетевых интерфейсов хоста или "0.0.0.0" или ":: ". Дополнительный порт может быть указан путем добавления" # <порт>" –  socketpair 11.03.2016, 16:13

Объедините два ответа от jfgagne и Rhaul Patil

Маршрутизация происходит в двух направлениях. Ваш маршрут месту назначения и местам назначения направляет Вам.

Если Ваши поиски прибывают из IP реального мира, или локальная маршрутизация - то, что Вы тестируете Вас, должны были установить Ваши локальные маршруты и выполнить запрос, прибывший от корректного IP-адреса

Например, Если Вы выполняете поиск на сервере имен на ISP2 от исходного адреса IP1, принадлежавшего ISP1. ISP2 будет обычно направлять данные к IP1 через каналы WAN к ISP1, кто направит данные Вам (если Вам не добавили ручные маршруты в каждом ISP или делаете что-то усовершенствованное как рекламные объявления BGP),

isp1 - isp2
 |      |
ip1    ip2
  \    /
   box

У Вас должны уже быть более общие маршруты как предложенный набор @jfgagne для сетевых диапазонов каждого ISP, таким образом, данные для ISP идут через самый быстрый маршрут, если не более определенные для сервера имен могут быть добавлены

ip route add ns.ip.isp.1/32 via gw.ip.isp.1
ip route add ns.ip.isp.2/32 via gw.ip.isp.2

Затем можно добраться dig использовать исходный адрес с -b

dig @ns.ip.isp.1 -b ur.ip.isp.1 whatever.com
dig @ns.ip.isp.2 -b ur.ip.isp.2 whatever.com

При выполнении поиска из двух шлюзов NAT, исходный IP будет заботиться о на шлюзе, и Вы не должны волноваться об установке исходного адреса запроса. Просто установите маршрутизацию на шлюз, который Вы хотите.

Если Вы хотите влиять на маршрутизацию специально для этих серверов имен, но не изменение, направляющее обычно, Вы направляетесь в iptables и маршрутизация политики, которая является целым другим вопросом.

0
27.01.2020, 20:49

Это не то, как nslookup работает или должен использоваться.

Отредактируйте свой/etc/resolv.conf или подобный так, чтобы Ваши серверы DNS были в порядке предпочтения.

От CLI можно использовать следующий оператор "сервера" для запросов двух различных серверов DNS (Откройте DNS и Google DNS в этом примере);

user@machine ~ $ nslookup
> server 208.67.222.222
Default server: 208.67.222.222
Address: 208.67.222.222#53
> set type=a
> www.google.com
Server:     208.67.222.222
Address:    208.67.222.222#53

Non-authoritative answer:
Name:   www.google.com
Address: 74.125.132.99
Name:   www.google.com
Address: 74.125.132.105
Name:   www.google.com
Address: 74.125.132.106
Name:   www.google.com
Address: 74.125.132.147
Name:   www.google.com
Address: 74.125.132.104
Name:   www.google.com
Address: 74.125.132.103
> server 8.8.4.4
Default server: 8.8.4.4
Address: 8.8.4.4#53
> www.google.com
Server:     8.8.4.4
Address:    8.8.4.4#53

Non-authoritative answer:
Name:   www.google.com
Address: 74.125.132.147
Name:   www.google.com
Address: 74.125.132.105
Name:   www.google.com
Address: 74.125.132.104
Name:   www.google.com
Address: 74.125.132.106
Name:   www.google.com
Address: 74.125.132.99
Name:   www.google.com
Address: 74.125.132.103
> exit
0
27.01.2020, 20:49
  • 1
    Да, это не, как DNS или работы nslookup, однако решая против интерфейса могут быть необходимы. Для меня я работаю над точками беспроводного доступа, которым включили DNS, подменяющий. Я хочу смочь проверить разрешение через каждый из соединенных мостом интерфейсов SSIDs, поскольку каждый interfece возвратит differnt результаты DNS. –  Citizen Kepler 06.06.2016, 22:28

Самый простой способ сделать это - заблокировать IP-адрес, назначенный интерфейсу, из которого нужно запрашивать.

Если у вас несколько интерфейсов, вы можете использовать dig -b z.b.c.d , и он будет использовать этот интерфейс для выполнения запроса.

4
27.01.2020, 20:49

man dig:

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 "::".
1
27.01.2020, 20:49

Теги

Похожие вопросы