Вопрос или проблема
Мой дистрибутив Linux – Debian 12.8.0, 64bit, английский.
Я установил пакеты ifupdown
, iproute2
и macchanger
Я изучил ниже приведенные публикации, прежде чем попросить о помощи здесь:
Команда iproute2 для включения IPv4-адреса
ip link set не присваивает IP-адрес, но ifup – да
Руководство пользователя iproute2, ориентированное на задачи
Примечание: У меня нет проблем с подъемом и опусканием сетевого интерфейса с помощью пакета ifupdown
, и я могу получить доступ в интернет.
Содержимое /etc/network/interfaces
выглядит так
# Этот файл описывает сетевые интерфейсы, доступные на вашей системе
# и как их активировать. Для получения дополнительной информации см. interfaces(5).
source /etc/network/interfaces.d/*
# Сетевой интерфейс петли
#auto lo
#iface lo inet loopback
# Основной сетевой интерфейс
#allow-hotplug enxfe5953ed38a0
#iface enxfe5953ed38a0 inet static
# address 192.168.1.50/24
# gateway 192.168.1.1
# параметры dns-* реализованы пакетом resolvconf, если он установлен
# dns-nameservers 9.9.9.9 149.112.112.112
Содержимое /etc/network/script/home-lan
выглядит так
# Основной сетевой интерфейс
allow-hotplug enxfe5953ed38a0
iface enxfe5953ed38a0 inet static
address 192.168.1.50/24
netmask 255.255.255.0
gateway 192.168.1.1
# параметры dns-* реализованы пакетом resolvconf, если он установлен
dns-nameservers 1.1.1.1 8.8.8.8
Я создал скрипт bash с названием lan-new-up
, сделал его исполняемым и поместил в /usr/local/bin
Его содержимое:
#!/bin/bash
sudo macchanger -r enxfe5953ed38a0
sudo cp /etc/network/script/home-lan /etc/network/interfaces.d
#sudo ifup enxfe5953ed38a0
sudo ip link set dev enxfe5953ed38a0 up
sudo ip address add 192.168.1.50/24 dev enxfe5953ed38a0
sudo ip route add default via 192.168.1.1 dev enxfe5953ed38a0
После выполнения скрипта lan-new-up
я получил ошибку, как показано ниже:
username@hostname:~$ lan-new-up
[sudo] пароль для username:
Текущий MAC: 02:b3:c2:9f:0a:90 (неизвестный)
Постоянный MAC: 02:b3:c2:9f:0a:90 (неизвестный)
Новый MAC: fe:59:53:ed:38:a0 (неизвестный)
username@hostname:~$ ping yahoo.com
ping: yahoo.com: Временная ошибка разрешения имени
Спасибо за вашу помощь.
Ваш скрипт просто повторяет параметры “address/netmask” и “gateway” из ifupdown, но забыл продублировать настройку “dns-nameservers”.
DNS не управляется через ip
; он настраивается через /etc/resolv.conf
(обычно).
-
Если в системе установлен инструмент
resolvconf
, как упоминается в вашей конфигурации ifupdown, то его необходимо использовать для добавления записей в resolv.conf, так как это помогает различным инструментам сотрудничать:echo "nameserver 1.1.1.1" | resolvconf -a enxfe5953ed38a0
resolvconf -a enxfe5953ed38a0 <<END nameserver 1.1.1.1 nameserver 8.8.8.8 END
-
Если в системе установлен systemd-resolved и
resolvectl
(и служба systemd-resolved запущена), то вместо этого следует использовать его:resolvectl dns enxfe5953ed38a0 1.1.1.1 8.8.8.8
Когда используется systemd-resolved, /etc/resolv.conf должен указывать на
127.0.0.53
. -
Если ни одно из них не установлено, то вам нужно вручную отредактировать
/etc/resolv.conf
:/etc/resolv.conf
nameserver 1.1.1.1 nameserver 8.8.8.8
Ответ или решение
Проблема с временным сбоем разрешения имени после выполнения скрипта на Debian 12.8.0
Ваша проблема заключается в том, что после выполнения скрипта lan-new-up
, вы получаете ошибку "Temporary failure in name resolution", что указывает на невозможность разрешения доменного имени. Разберем возможные причины и решения этой ситуации.
Анализ
При использовании команды ip
для настройки сетевого интерфейса вы правильно настроили IP-адрес и маршрут по умолчанию, но в вашем скрипте отсутствует настройка DNS, что является основной причиной проблемы. Чтобы интернет-соединение работало корректно, системе необходимо знать, какие DNS-сервера использовать для разрешения доменных имен.
Настройка DNS
В вашем случае вы упомянули, что в файле /etc/network/interfaces
указаны DNS-серверы, но при использовании ip
для управления настройками сети они не применяются автоматически. Существует несколько способов задать DNS-серверы:
-
Использование
resolvconf
:
Если у вас установлен инструментresolvconf
, вы можете добавить DNS-серверы следующим образом:echo "nameserver 1.1.1.1" | resolvconf -a enxfe5953ed38a0 resolvconf -a enxfe5953ed38a0 <<END nameserver 1.1.1.1 nameserver 8.8.8.8 END
-
Использование
systemd-resolved
:
Если ваша система используетsystemd-resolved
, используйте командуresolvectl
:resolvectl dns enxfe5953ed38a0 1.1.1.1 8.8.8.8
Убедитесь, что файл
/etc/resolv.conf
указывает на127.0.0.53
. -
Редактирование файла
/etc/resolv.conf
вручную:
Если ни один из вышеперечисленных методов не доступен, вы можете вручную добавить DNS-сервера в файл/etc/resolv.conf
:echo "nameserver 1.1.1.1" | sudo tee -a /etc/resolv.conf echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf
Изменение скрипта
С учетом описанных выше рекомендаций вам следует обновить ваш скрипт lan-new-up
, добавив туда конфигурацию DNS. Например:
#!/bin/bash
sudo macchanger -r enxfe5953ed38a0
sudo cp /etc/network/script/home-lan /etc/network/interfaces.d
sudo ip link set dev enxfe5953ed38a0 up
sudo ip address add 192.168.1.50/24 dev enxfe5953ed38a0
sudo ip route add default via 192.168.1.1 dev enxfe5953ed38a0
# Настройка DNS
echo "nameserver 1.1.1.1" | resolvconf -a enxfe5953ed38a0
echo "nameserver 8.8.8.8" | resolvconf -a enxfe5953ed38a0
Заключение
Ваша основная проблема заключается в отсутствии настройки DNS в вашем скрипте, что является критически важным для корректной работы интернет-соединения. Применив одно из предложенных решений, вы сможете устранить ошибку "Temporary failure in name resolution" и восстановить доступ к интернету. Не забудьте проверить соединение после внесения изменений, запустив команду ping
.
Если у вас остались вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться.