Изменить resolv.conf

ДУБЛИРОВАНИЕ...

важен, но скорее в том смысле, что он является источником большой путаницы . Это действительно очень просто. Этот ответ - просто «радикальная» иллюстрация.

Принятый ответ хорош, но слишком длинный и подчеркивает «дублирование».

Q мудро заканчивается на:

The use of the word duplication seems a little strange to me in this context. Perhaps that is throwing me.

Я использую нотацию bash и определяю переменные «один» и «два» как дескрипторы файлов «1» и «2». (выходной )оператор перенаправления >является присваиванием =. &и $означают «значение».

Примеры man bash (с добавленным значением по умолчанию "1")

ls 1>dirlist 2>&1      # both to dirlist
ls 2>&1 1>dirlist      # 1 to dirlist, 2 stays on tty/screen 

стать:

one=dirlist  two=$one

и

two=$one   one=dirlist

И даже это не -автоматически для меня и некоторых других, я думаю. Первая строка оставляет вам $oneи $two, содержащие «dirlist». Конечно.

Вторая строка начинается с бесполезного присвоения. Оба начинаются по определению с "TTY" (немного символического )в качестве их направления ; это присваивание не изменяет никакого значения, а с переменными, как и с файловыми дескрипторами, ничего магическим образом не связывается. На переменную twoне влияют следующие one=dirlist. Конечно, нет.

Кто-то здесь (6 лет назад )предложил "указать" вместо "копировать" или "дублировать", а потом понял :, что это тоже сбивает с толку.

Эта семантика дублирования или указателя даже не нужна. Может быть, это амперсанд, который требует большего внимания. «Значение» оператора/токена/что угодно.

Если -и только если -вы ищете способ получить неожиданный номер задания на вашей консоли , то сообщение «Готово» плюс в качестве бонуса файл с именем «2 ", тогда иди:

ls 1>2& 2>/dev/null

Обычно это читается как "копировать"/"дублировать" от 1 до 2, а затем оба вместе дают null . Но идея неверна, а также синтаксис. (но нет синтаксической ошибки, это действительно)

Правильный способ планирования — перенаправить любой из двух на null, а затем перенаправить ДРУГОЙ в то же место:

ls 1>/dev/null 2>&1
# or 
ls 2>/dev/null 1>&2

(ведущую "1" можно опустить)

(ОК согл. A не слишком длинный, но слишком длинный список -или :очень хорошая визуализация, не очень хорошее объяснение)

0
10.11.2020, 22:10
2 ответа

Я думаю, проблема здесь в NetworkManager, который заполняет ваш файл resolv.conf.

Чтобы отключить обновления DNS.

1 -Откройте файл conf с помощью редактора:

sudo vi /etc/NetworkManager/NetworkManager.conf

2 -Добавить указанное выше в секцию [main] :dns=none

3 -Перезапустите NetworkManager:

sudo service network-manager restart

ПОСЛЕ ПОСЛЕДНЕГО РЕДАКТИРОВАНИЯ:

Как я вижу, вы используете NetworkManager.service:

A -Если вы используете dhcp для своего интерфейса, проверьте настройку DNS вашим DHCP-сервером:

cat /var/lib/NetworkManager/*.lease | grep 'domain-name-servers'

Вы можете напрямую указать свои DNS-записи, необходимые в этом случае, и отключить их предоставление DHCP:

# Edit dhclient configuration file
vi /etc/dhcp/dhclient.conf
# Set the fixed your dns server entries
supersede domain-name-servers 84.200.69.80, 84.200.70.40;

B -Здесь ясно, что ваш /etc/resolv.conf явно управляется службой разрешений systemd -.

Таким образом, вы можете отключить эту службу или позволить ей работать и отредактировать ее конфигурацию в /etc/systemd/resolved.conf ,поэтому, чтобы отключить его:

1 -Сначала проверьте выходные данные текущего файла systemd -resolve.conf и проверьте, работает ли systemd -resolve:

sudo cat /run/systemd/resolve/resolv.conf
sudo systemd-resolve status

2 -Остановить/отключить службу:

  sudo systemctl disable systemd-resolved.service
  sudo systemctl stop systemd-resolved.service

3 -Установите режим обработки DNS в NetworkManager, чтобы он больше не управлялся ни systemd -, ни NetworKService (Редактировать /etc/NetworkManager/NetworkManager.conf):

  [main]
  dns=none

4 -Уничтожить символическую ссылку /etc/resolv.conf -> /run/systemd/resolve/resolv.conf:

sudo unlink /etc/resolv.conf

5 -Перезапустите NetworkManager:

sudo systemctl restart NetworkManager

6 -Воссоздать файл resolv.conf:

sudo touch /etc/resolv.conf
sudo chown root:root /etc/resolv.conf
sudo chmod 644 /etc/resolv.conf

7 -Заполнить вручную файл resolv.conf:

echo 'nameserver 84.200.70.40
nameserver 84.200.69.80
nameserver 192.168.4.1 
nameserver 192.168.4.1
nameserver 192.168.1.1
nameserver 1.1.1.1' > /etc/resolv.conf
0
18.03.2021, 22:51

Я сделал скрипт для постоянного изменения resolv.confфайла:

#!/usr/bin/env bash
f="/etc/resolv.conf"
chattr -i "$f"
rm -f "$f"
echo "nameserver 1.1.1.1" >> "$f"
echo "nameserver 8.8.8.8" >> "$f"
chattr +i "$f"

Этот сценарий делает файл неизменяемым, поэтому он не будет изменен и не может быть удален. Для удаления файла нужно использовать команду:

chattr -i /etc/resolv.conf

Затем удалите файл.

0
30.10.2021, 01:41

Теги

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