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.