2

Я написал простой скрипт, позволяющий пользователю вручную настраивать свой IP-адрес и DNS-сервер. DNS-серверы изменяются путем создания нового файла /etc/resolv.conf со строками, введенными пользователем, например, файл может выглядеть так:

nameserver 12.34.56.78
nameserver 12.34.56.79

однако после перезагрузки эти изменения, похоже, не работают и использование DNS не удается.

Я все еще могу пропинговать IP-адрес, но попытка пропинговать веб-сайты не удалась.

Ниже приведен полный сценарий, дайте знать, что вы думаете, проблема может быть.

#!/bin/bash

# wipes any corrent set up
> /etc/network/interfaces

echo "Automatic DHCP or Manual?,(D/M) followed by [ENTER]:"
read network

if [ $network == "D" ]; then
    echo "auto lo" >> /etc/network/interfaces

    echo "iface lo inet loopback" >> /etc/network/interfaces
    echo "iface eth0 inet dhcp" >> /etc/network/interfaces
    echo "iface default inet dhcp" >> /etc/network/interfaces
    echo "Network set up!"
    exit 0
fi

if [ $network == "M" ]; then
    echo "Enter IP address (e.g 192.168.0.7), followed by [ENTER]:"
    read address
    echo "Enter Netmask (e.g 255.255.255.0, followed by [ENTER]:"
    read mask
    echo "Enter router IP (e.g 192.168.0.1), followed by [ENTER]:"
    read router
    echo "Enter first DNS server (e.g 8.8.8.8), followed by [ENTER]:"
    read dns1
    echo "Enter second DNS server (e.g 8.8.8.8), followed by [ENTER]:"
    read dns2

    echo "auto lo" >> /etc/network/interfaces
    echo "iface lo inet loopback" >> /etc/network/interfaces

    echo "iface eth0 inet static" >> /etc/network/interfaces
    echo "  address $address" >> /etc/network/interfaces    
    echo "  netmask $mask" >> /etc/network/interfaces
    echo "  gateway $router" >> /etc/network/interfaces

    echo "iface default inet dhcp" >> /etc/network/interfaces

    > /etc/resolv.conf
    echo "nameserver $dns1" >> /etc/resolv.conf
    echo "nameserver $dns2" >> /etc/resolv.conf

    echo "Network set up!"
    exit 0

fi

echo "ERROR: you do not enter D or M";
exit 0

Сценарий был основан на информации для ручной настройки, найденной здесь http://wiki.debian.org/NetworkConfiguration

Когда используется автоматический DHCP, /etc/resolv.conf содержит:

domain zyxel.com
search zyxel.com
nameserver 192.168.1.1

1 ответ1

0

Пакет resolvconf по умолчанию превращает /etc/resolv.conf в символическую ссылку. Если вы удалите символическую ссылку и создадите новый resolv.conf, он будет привязан после перезагрузки. Вы очень близки со строкой > /etc/resolv.conf , но, очевидно, это не перезаписывает символическую ссылку. Я бы предложил сначала удалить старую символическую ссылку с помощью rm /etc/resolv.conf (или, лучше, сделать резервную копию с помощью mv /etc/resolv.conf /etc/resolv.conf.bak) непосредственно перед этой строкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .