Debian никогда не использует адрес шлюза маршрутизатора в resolv.conf

Debian никогда не использует адрес шлюза маршрутизатора в resolv.conf

Debian никогда не использует адрес шлюза маршрутизатора в resolv.conf

Как настроить Debian так, чтобы он (никогда не использовал маршрутизатор в качестве преобразователя доменных имен) не отображал адрес шлюза маршрутизатора (сервер имен 192.168.1.1) в /etc/resolv.conf при перезагрузке компьютера или выполнении /sbin/dhclient?

Я использую только одну строку в /etc/dhcp/dhclient.conf

prepend domain-name-servers x.x.x.x,y.y.y.y,z.z.z.z;

Это мой файл /etc/network/interfaces:

 auto eth0 
 iface eth0 inet static

 address 192.168.1.170
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 192.168.1.255
 getaway 192.168.1.1
 up route add -net default gw 192.168.1.1 netmask 0.0.0.0 eth0

 dns-nameservers x.x.x.x y.y.y.y z.z.z.z

Если я запускаю /sbin/dhclient /etc/init.d/networking restart

Мой /etc/resolv.conf содержит:

nameserver x.x.x.x
nameserver y.y.y.y
nameserver z.z.z.z
nameserver 192.168.1.1

решение1

Прежде всего, пожалуйста, очистите вашу конфигурацию. Ваш eth0интерфейс должен быть настроен со статическим IP-адресом или с DHCP? Если статический, почему вы используете dhclient? Если DHCP, почему /etc/network/interfacesперечисляет статические параметры IP и iface eth0 inet staticвместо iface eth0 inet dhcp? Кроме того, нет причин, по которым вам нужно было бы добавлять маршрут по умолчанию через вашу up routeкоманду, поскольку вы уже указали маршрут по умолчанию в качестве gatewayпараметра.

Теперь имейте в виду, что, как следует из названия, prepend domain-name-serversдобавляет DNS-серверы в список, предоставленный DHCP-сервером. Он не заменяет их.

Я рекомендую, вместо того, чтобы просить dhclientнастроить серверы имен, которые вы хотите использовать, использовать фреймворк resolvconf. resolvconfкоординирует все возможные источники информации о серверах имен DNS (включая отдельных клиентов DHCP, работающих на одном или нескольких сетевых интерфейсах, локальные серверы DNS, которые вы хотите использовать в качестве резолверов, и статическую конфигурацию) и централизует построение единого связного /etc/resolv.confфайла. Это гораздо лучше, чем позволять нескольким разным вещам управлять /etc/resolv.confи заставлять их топтать друг друга, пытаясь сделать это.

Установите resolvconfпакет, если он еще не установлен. Это автоматически отключит dhclinentпрямое редактирование файла /etc/resolv.conf.

Теперь ваше требование заключается в том, что вы не хотите использовать сервер(ы) имен, предоставленные DHCP-сервером, поэтому закомментируйте строку, которая читается eth*в /etc/resolvconf/interface-order. Обязательно также закомментируйте последнюю строку файла, которая читается *, в противном случае eth0он все равно будет рассмотрен.

Далее, вы хотите использовать набор статически предоставленных серверов имен вместо этого. Поскольку они являются глобальными для системы (не связаны с состоянием, если какой-либо заданный интерфейс), вы можете добавить их как серверы имен на интерфейсе lo в /etc/network/interfaces:

iface lo inet loopback
    dns-nameservers x.x.x.x y.y.y.y z.z.z.z

А затем ifdown lo; ifup loактивировать это.

решение2

Еще один момент: гэтапуть 192.168.1.1 должен быть gелпуть 192.168.1.1 (вероятно, поэтому вам пришлось добавить маршрут по умолчанию, чтобы что-то заработало?)

решение3

Если вы можете этого избежать, вообще не используйте свой шлюз в качестве резолвера.

Они, как известно, несовершенны в работе DNS-прокси — см. RFC 5625.

У вас есть прекрасно работающий компьютер с Linux — просто установите на него копию BIND или, что еще лучше, «Unbound».

ObDisclaimer - Я написал этот RFC.

Связанный контент