Как я могу установить / изменить DNS с помощью командной строки в windows 8



Как я могу установить настройки DNS с помощью командной строки или файла bat в windows 8



Я попытался это:



netsh interface ip set dns name="Local Area Connection" source=static addr=none


, но не работал.

798   9  

9 ответов:

во-первых, имя сети, скорее всего, "Ethernet", а не "Подключение по локальной сети". Чтобы узнать имя вы можете сделать это:

netsh interface show interface

который покажет имя в столбце" имя интерфейса " (показано здесь жирным шрифтом):

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled        Connected      Dedicated        Ethernet

теперь вы можете изменить основной dns (индекс=1), предполагая, что ваш интерфейс статичен (не используя dhcp):

netsh interface ipv4 add dnsserver "Ethernet" address=192.168.x.x index=1

обновление 2018 - команда будет работать с dnsserver (единственное число) или dnsservers (множественный.) В следующем примере используется последний и также действителен:

netsh interface ipv4 add dnsservers "Ethernet" address=192.168.x.x index=1

чтобы изменить DNS на автоматический с помощью команды, вы можете выполнить следующую команду:

netsh interface ip set dns "Local Area Connection" dhcp

есть небольшая разница в команду добавлять и изменение DNS-IPs:

Добавить:

Syntax:
   netsh interface ipv4 add dnsserver "Network Interface Name" dns.server.ip index=1(for primary)2(for secondary)
Eg:
   netsh interface ipv4 add dnsserver "Ethernet" 8.8.8.8 index=1
  • здесь, чтобы узнать "имя сетевого интерфейса", введите команду netsh interface show interface
  • 8.8.8.8-это рекурсивный DNS-сервер Google, используйте его, если ваш не работает

Установить/Изменить: (как ОП попросил это)

Syntax:
   netsh interface ipv4 set dnsservers "Network Interface Name" static dns.server.ip primary
Eg:
   netsh interface ipv4 set dnsservers "Wi-Fi" static 8.8.4.4 primary
   netsh interface ipv4 set dnsservers "Wi-Fi" dhcp
  • последний параметр может быть none:отключить DNS, both: установите для первичного и вторичного DNS оба, первичный: только для первичного DNS. Вы можете заметить, что здесь мы не используем index-parameter, как при добавлении DNS.

  • вместо static вы можете dhcp чтобы сделать настройку DNS автоматической, но дальнейший параметр не потребуется.


Примечание: проверен в для Windows 8,8.1 & 10.

вот еще один способ изменить DNS с помощью WMIC (Windows Management Instrumentation Command-line).

команды должны выполняться от имени администратора для применения.

очистить DNS-сервера:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ()

установить 1 DNS-сервер:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ("8.8.8.8")

установить 2 DNS-сервера:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ("8.8.8.8", "8.8.4.4")

установите 2 DNS сервера на определенном сетевом адаптере:

wmic nicconfig where "(IPEnabled=TRUE) and (Description = 'Local Area Connection')" call SetDNSServerSearchOrder ("8.8.8.8", "8.8.4.4")

еще один пример настройки списка поиска домена:

wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld")

Я написал этот скрипт для переключения DNS-серверов всех включенных в настоящее время интерфейсов на определенный адрес:

@echo off

:: Google DNS
set DNS1=8.8.8.8
set DNS2=8.8.4.4

for /f "tokens=1,2,3*" %%i in ('netsh int show interface') do (
    if %%i equ Enabled (
        echo Changing "%%l" : %DNS1% + %DNS2%
        netsh int ipv4 set dns name="%%l" static %DNS1% primary validate=no
        netsh int ipv4 add dns name="%%l" %DNS2% index=2 validate=no
    )
)

ipconfig /flushdns

:EOF

ни один из ответов не работает для меня на Windows 10, так что вот что я использую:

@echo off

set DNS1=8.8.8.8
set DNS2=8.8.4.4
set INTERFACE=Ethernet

netsh int ipv4 set dns name="%INTERFACE%" static %DNS1% primary validate=no
netsh int ipv4 add dns name="%INTERFACE%" %DNS2% index=2

ipconfig /flushdns

pause

Это использует Google DNS. Вы можете получить имя интерфейса с помощью команды netsh int show interface

пакетный файл для установки нового dns сервера

@echo off
rem usage: setdns <dnsserver> <interface>
rem default dsnserver is dhcp
rem default interface is Wi-Fi
set dnsserver="%1"
if %dnsserver%=="" set dnsserver="dhcp"
set interface="%2"
if %interface%=="" set interface="Wi-Fi"
echo Showing current DNS setting for interface a%interface%
netsh interface ipv4 show dnsserver %interface%
echo Changing dnsserver on interface %interface% to %dnsserver%
if %dnsserver% == "dhcp" netsh interface ipv4 set dnsserver %interface% %dnsserver%
if NOT %dnsserver% == "dhcp" netsh interface ipv4 add dnsserver %interface% address=%dnsserver% index=1
echo Showing new DNS setting for interface %interface%
netsh interface ipv4 show dnsserver %interface%

вот ваш новый друг: QuickSetDNS, по NirSoft, удивительно, как обычно.

screenshot

Он также может быть использован в командной строке :) с этими преимуществами перед netsh:

  • более простой синтаксис, в частности для установки альтернативного сервера
  • автоматически запрашивает повышение привилегий


несколько предостережений:

  • поддерживает только IPv4, а не из IPv6
  • в командной строке следует использовать UUID адаптера, а не понятное имя (например, "подключение по локальной сети") начиная с QuickSetDNS 1.21, имена соединений также поддерживаются ;)

теперь вы можете изменить основной dns (индекс=1), предполагая, что ваш интерфейс статичен (не используя dhcp)

вы можете установить ваши DNS-серверы статически, даже если вы используете DHCP для получения вашего IP-адреса.

пример под Windows 7 для добавления двух серверов DN, команда выглядит следующим образом:

netsh interface ipv4 add dns "Local Area Connection" address=192.168.x.x index=1 netsh interface ipv4 add dns "Local Area Connection" address=192.168.x.x index=2

Comments

    Ничего не найдено.