스크립트로 DNS 변경

스크립트로 DNS 변경

DNS 서버 주소를 자주 변경해야 하는데 지금은 '네트워크 및 공유 센터' - '로컬 영역 연결' - 속성 - ipv4 -를 열고 DNS 번호를 입력하면 됩니다.

더 빠른 방법이 있나요? 배치 파일이나 Powershell 스크립트를 사용하여 수행할 수 있나요? DNS를 변경하는 콘솔 명령이 내장되어 있습니까?

답변1

기본 DNS 값:

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

보조 값:

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

연결 이름이 정확하면 잘 작동합니다. 이름이 "로컬 영역 연결"이 아니면 작동하지 않습니다. XP를 실행 중인 경우 "ipv4"를 "ip"로 변경해야 합니다. IPv6도 사용할 수 있습니다.

서브넷 마스크, IP 주소 및 게이트웨이 설정:

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

네트워크 연결을 찾으려면 cmd 줄에서 ipconfig를 사용할 수 있습니다. 그러나 축약된 ipconfig 결과에 다음을 사용할 수도 있습니다.

ipconfig | find /I "Ethernet adapter"

위의 ipconfig cmd를 사용하여 연결을 반복할 수 있습니다(소스 코드) 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

답변2

또한 DHCP 서버에서 제공하는 DNS 주소를 사용하려면:

netsh interface ipv4 set dns "Local Area Connection" dhcp

답변3

여기 당신의 새로운 친구가 있습니다:QuickSetDNS, NirSoft의, 평소처럼 놀랍습니다.

스크린샷

명령줄에서도 사용할 수 있습니다. :) netsh에 비해 다음과 같은 장점이 있습니다.

  • 특히 대체 서버 설정을 위한 더 쉬운 구문
  • 자동으로 권한 상승을 요청합니다


몇 가지 주의사항:

  • IPv6가 아닌 IPv4 설정만 지원
    • QuickSetDNS 1.30부터 IPv6 DNS 서버 설정도 지원됩니다 ;)
  • 명령줄에서는 친숙한 이름(예: "로컬 영역 연결")이 아닌 어댑터 UUID를 사용해야 합니다.
    • QuickSetDNS 1.21부터 연결 이름도 지원됩니다. ;)

답변4

이 답변의 나머지 부분은 모두 netsh를 사용합니다. 적어도 오늘 아침에 제가 작업했던 Windows 2012R2 시스템에서는 다음과 같이 보고되었습니다.

In future versions of Windows, Microsoft might remove the Netsh functionality for TCP/IP.

Microsoft recommends that you transition to Windows PowerShell if you currently use netsh to configure and manage TCP/IP.

... 지금 당장은 그렇지 않을 것이라고 확신하지만... 그래도 Powershell을 확인하게 되었습니다.

다음은 제가 취한 Powershell 경로이며 단일 물리적 인터페이스를 가정합니다. 더 많은 정보가 있는 경우 올바른 인터페이스를 선택해야 합니다. :)

$interface = (Get-NetAdapter).ifIndex
Set-DnsClient -InterfaceIndex $interface -ConnectionSpecificSuffix myproject.mydomain.tld
Set-DnsClientServerAddress -InterfaceIndex $interface -ServerAddresses ("8.8.8.8","8.8.4.4","2001:4860:4860::8888","2001:4860:4860::8844")

관련 문서(2020-05-15 기준)는 다음과 같습니다.

관련 정보