Thay đổi DNS bằng tập lệnh


29

Tôi cần thường xuyên thay đổi địa chỉ máy chủ DNS và bây giờ tôi thực hiện bằng cách mở 'mạng và trung tâm chia sẻ' - 'kết nối khu vực địa phương' - thuộc tính - ipv4 - sau đó nhập số DNS.

Có cách nào nhanh hơn để làm điều đó? Tôi có thể làm điều đó với một tệp bó hoặc tập lệnh powershell không? Có một lệnh console tích hợp để thay đổi DNS không?

Câu trả lời:


38

Giá trị DNS chính:

netsh interface ipv4 set dns "Local Area Connection" static 192.168.0.2

Giá trị thứ cấp:

netsh interface ipv4 add dns "Local Area Connection" 192.168.0.3 index=2

Mà hoạt động tuyệt vời NẾU tên của kết nối là chính xác. Nếu tên không phải là "Kết nối khu vực địa phương" thì nó sẽ không hoạt động. Nếu bạn đang chạy XP, bạn cần thay đổi "ipv4" thành "ip". IPv6 cũng có thể được sử dụng.

Đặt mặt nạ mạng con, Địa chỉ IP và Cổng:

netsh interface ipv4 set address name="Local Area Connection" source=static addr=192.168.1.10 mask=255.255.255.0 gateway=192.168.0.1

Để tìm kết nối mạng, bạn có thể sử dụng ipconfig từ dòng cmd. Nhưng bạn cũng có thể sử dụng như sau cho kết quả ipconfig viết tắt:

ipconfig | find /I "Ethernet adapter"

bằng cách sử dụng ipconfig cmd ở trên, chúng ta có thể lặp qua kết nối ( mã nguồn ) và đặt máy chủ dns:

:: Set primary and alternate DNS for IPv4 on Windows Server 2000/2003/2008 & 
:: Windows XP/Vista/7
@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET adapterName=

FOR /F "tokens=* delims=:" %%a IN ('IPCONFIG ^| FIND /I "ETHERNET ADAPTER"') DO (
SET adapterName=%%a

REM Removes "Ethernet adapter" from the front of the adapter name
SET adapterName=!adapterName:~17!

REM Removes the colon from the end of the adapter name
SET adapterName=!adapterName:~0,-1!

netsh interface ipv4 set dns name="!adapterName!" static 192.168.0.2 primary
netsh interface ipv4 add dns name="!adapterName!" 192.168.0.3 index=2
)

ipconfig /flushdns

:EOF

3
Câu trả lời tuyệt vời. Bạn nên bao gồm các nguồn cho những thứ như Báo giá và Mã.
Ƭᴇcʜιᴇ007

8

Ngoài ra để sử dụng địa chỉ DNS được cung cấp bởi máy chủ DHCP:

netsh interface ipv4 set dns "Local Area Connection" dhcp

cộng với trong trường hợp bạn muốn đặt lại địa chỉ / mặt nạ / cổng thành của DHCP: giao diện Netsh ipv4 đặt địa chỉ tên = "Kết nối khu vực địa phương" source = dhcp
hello_earth

6

Sử dụng tập lệnh Powershell trong Windows 8 hoặc 2012, bạn có thể đặt các giá trị như sau:

Set-DnsClientServerAddress -InterfaceAlias Wi-Fi -ServerAddresses "1.1.1.1","2.2.2.2"

Trong đó wi-Fi là tên của giao diện mà bạn quan tâm. Bạn có thể liệt kê các giao diện bằng cách chạy:

Get-NetAdapter

Để đặt lại địa chỉ DNS và điều này sử dụng DHCP:

Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses

Tới trang này để xem một mô tả đầy đủ.

Lưu ý rằng các đồng chí được sử dụng ở đây không có sẵn trong các phiên bản trước đó, chẳng hạn như Windows 7.


súc tích, làm việc như một nét duyên dáng Cảm ơn bạn :) Đặc biệt hữu ích trên AWS Opsworks!
Ganesh Hegde

3

Đây là người bạn mới của bạn: QuickSetDNS , bởi NirSoft, tuyệt vời như thường lệ.

ảnh chụp màn hình

Nó cũng có thể được sử dụng trong dòng lệnh :) với những ưu điểm trên Netsh:

  • cú pháp dễ dàng hơn, đặc biệt là để thiết lập máy chủ thay thế
  • tự động yêu cầu nâng cao đặc quyền


Chỉ cần một vài cảnh báo:

  • chỉ hỗ trợ cài đặt IPv4, không phải IPv6
  • trong dòng lệnh, nên sử dụng UUID của bộ điều hợp, không phải tên thân thiện (ví dụ: "Kết nối khu vực cục bộ") kể từ QuickSetDNS 1.21, tên kết nối cũng được hỗ trợ;)

đây là một mẫu nguồn mở sử dụng cách tiếp cận tương tự như trên: codeproject.com/Articles/20639/ mẹo
Top-Master

1

Thêm một bản sửa lỗi cho phiên bản của Logman cho WinXP (sp3 hebrew), có vẻ như cần phải xóa 2 ký tự ở cuối để thêm một loại sửa lỗi "toàn cầu" cho bất kỳ trường hợp kỳ lạ nào khác.

:: Set primary and alternate DNS for IPv4 on Windows Server 2000/2003/2008 & Windows XP/Vista/7
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET adapterName=

FOR /F "tokens=* delims=:" %%a IN ('IPCONFIG ^| FIND /I "ETHERNET ADAPTER"') DO (
SET adapterName=%%a

REM Removes "Ethernet adapter" from the front of the adapter name
SET adapterName=!adapterName:~17!

REM WinXP Remove some weird trailing chars (don't know what they are)
FOR /l %%a IN (1,1,255) DO IF NOT "!adapterName:~-1!"==":" SET adapterName=!adapterName:~0,-1!

REM Removes the colon from the end of the adapter name
SET adapterName=!adapterName:~0,-1!
echo !adapterName!
GOTO:EOF
netsh interface ip set dns name="!adapterName!" static x.x.x.x primary
netsh interface ip add dns name="!adapterName!" x.x.x.x index=2
)

http://pastebin.com/9mbMR7sy


0

Câu trả lời này được sao chép từ XP1 tại đây . Nếu XP1 muốn đăng câu trả lời này, vui lòng làm như vậy và tôi sẽ xóa câu trả lời của mình.

Đây là một cách khác để thay đổi DNS bằng cách sử dụng WMIC (Dòng lệnh thiết bị quản lý Windows).

Các lệnh phải được chạy như quản trị viên để áp dụng.

Xóa máy chủ DNS:

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

Đặt 1 máy chủ DNS:

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

Đặt 2 máy chủ DNS:

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

Đặt 2 máy chủ DNS trên bộ điều hợp mạng cụ thể:

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

Một ví dụ khác để thiết lập danh sách tìm kiếm tên miền:

wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.