얼마 전에 회사 선배가 IP를 한방에 변경할 수 있는 스크립트가 있으면 좋겠다고 하더군요. 왜냐하면 클라우드 서버를 운영하다 보니 한꺼번에 수십대의 VM을 만드는 경우가 있는데, IP를 일일이 설정하는 일이 여간 귀찮은게 아니기 때문입니다. 물론 스크립트로 하더라도 기본적으로 IP 입력은 해야 하지만, 나머지 Gateway랑 DNS는 배치파일에 미리 입력해두면 되므로 어느정도 편하게 처리할 수 있습니다.


우선 수동으로 커맨드를 날리는 경우 기본적으로 이렇게 하시면 됩니다.

예제)
netsh interface ip set address "로컬 영역 연결" static 192.168.0.10 255.255.255.0 192.168.0.1

여기서 static 뒤에는 순서대로 IP 주소, 서브넷 마스크, 기본 게이트웨이를 적어주시면 됩니다.

다음은 DNS를 설정해줘야 합니다.

예제)
netsh interface ip set dnsservers "로컬 영역 연결" static 168.126.63.1 primary


위 두가지 작업을 배치파일로 편하게 처리할 수 있도록 만들어 봤습니다.


@echo off

set SUBNET=255.255.255.0
set DNS=168.126.63.1

:SETIP
cls
netsh interface ip show interfaces
echo.
set /p NIC=설정하려는 장치의 색인 번호 :
set /p IP=IP Address   :
echo Subnet Mask   : %SUBNET%
for /f "tokens=1-4 delims=." %%a in ('echo %IP%') do set GATEWAY=%%a.%%b.%%c.1
echo Gateway    : %GATEWAY%
echo DNS Server   : %DNS%
echo.
netsh interface ip set address %NIC% static %IP% %SUBNET% %GATEWAY%
netsh interface ip set dnsservers %NIC% static %DNS% primary
echo 작업이 완료되었습니다. 창을 닫아주세요.
pause > nul
exit


위 파일을 받아서 메모장으로 열어 빨간색 부분만 수정해주시면 됩니다. 사실 서브넷의 경우 기본적으로 C클래스가 대부분일 테니 255.255.255.0 그대로 사용하시면 될 것이고, DNS는 회사에서 사용하는 DNS 서버로 수정해주시면 되겠습니다.

게이트웨이의 경우 제가 입력받는 IP에 따라서 앞 세자리는 같게 하고 마지막 한자리만 1로 설정하게 해두었습니다.



그런데 글을 올리고 생각해보니 이 배치파일은 별로인 것 같습니다. 그래도 혹시나 도움이 될까 싶어 올려봤습니다.
Tag : ,
  1. 이전 댓글 더보기
  2. BlogIcon 누피
    2011.04.27 06:22 신고

    각기 다른 네트워크 어댑터의 이름을 색인번호로 받아 배치를 수행할 수 있다는 사실을 배웠네요.

    netsh interface ip show interfaces 가 문제를 일으켜 interfaces -> interface 로 바꾸었구요.
    바꾼 후 위 명령어가 먹기 위해서는 remoteaccess 서비스가 켜져 있어야 하는데 사용안함 상태더라구요.

    remoteaccess를 시작하기 위해서는 tapisrv, rasman 서비스도 구동이 되어 있어야 하더군요.

    그래서...

    cls
    sc config tapisrv start= demand
    net start tapisrv
    sc config rasman start= demand
    net start rasman
    sc config remoteaccess start= demand
    net start remoteaccess
    netsh interface ip show interface

    ...요렇게 수정하니 색인번호 입력 단계까지는 잘 넘어가네요.

    그런데 제 pc (xp sp3)의 경우 색인번호를 입력하고나면 %nic%가 색인번호로 설정되어,

    잘못된 2 인터페이스를 지정했습니다.
    다음 명령을 찾을 수 없습니다. interface ip set dnsservers 2 static 168.126.63.1 primary

    이렇게 오류를 뱉어내네요.

    vista 이상에서만 잘 수행되는 배치인지 궁금하군요.

    오늘 또 한가지 배우고 갑니다.
    감사합니다.

    • BlogIcon snoopybox
      2011.04.27 07:29 신고
      수정 및 삭제

      음... XP는 색인 번호로 지정이 안 되나보네요. 전 세븐만 쓰다보니 확인을 못해봤어요. 게다가 관리하는 서버들도 윈도우 서버들은 대부분 2008, 2008 R2가 많아서요...

  3. 하승호
    2011.04.27 08:07 신고

    좋은 정보 감사합니다.

  4. BlogIcon andu
    2011.04.27 08:15 신고

    오오 좋은 정보군요
    이걸로 쓸만한 배치를 만들어봐야 겠네요 ㅇㅅㅇ

  5. 희시
    2011.04.27 09:03 신고

    좋은정보감사합니다.

  6. 도쿠가와
    2011.04.27 09:54 신고

    약간은 벗어난 질문인데요 그래도 네트워크 관련글이라 여쭤봅니다.
    회사에 서버컴은 XP 이고 클라이언트컴 중에 win7이 있는데요
    서버컴 공유해논 상태인데 xp 인 클라이언트에서는 화일등이 공유가 되는데
    win7에서는 네트워크자체가 검색이 되질 않아서요, 혹시 방법이 있을까요? ^^

  7. BlogIcon 까나리
    2011.04.27 10:05 신고

    위 스크립트 참고하여 제 블로그에 올려두겠습니다.
    아주 약간 수정했네요 트랙백 보내드렸어요~
    감사합니다.

  8. 잇힝
    2011.04.27 10:55 신고

    어제 닷넷 프로그래밍으로 고정아이피 변경등을 찾아보면서 나온 많은 예제들을 여기서 또보네요!

    이상하게 반갑네요 ㅋㅋ

  9. BlogIcon hongyang
    2011.04.27 20:58 신고

    리눅스는 없는건가요? ㅠㅠ
    뭐 그건 interfaces파일만 편집하면 되지만...

  10. 나그네
    2011.04.28 13:33 신고

    배치파일 작성하시는거 보면 항상 부럽습니다.... ^^;

    반드시 필요한것은 아니지만 도움이 될까 싶어...
    보조 DNS도 넣어서 사용하실 경우....

    [보조 DNS 추가 방법]
    netsh interface ipv4 add dnsservers "로컬 영역 연결" 8.8.8.8

    위의 명령 실행시.....
    기본 DNS가 이미 입력된 경우에 보조 DNS로 8.8.8.8 이 들어가게 되고,
    기본 DNS가 채워져 있지 않은 경우에는 기본 DNS로 8.8.8.8 이 들어갑니다.

  11. singup
    2011.04.29 01:41 신고

    컴터 키면 보고 싶은 것중 하나가
    스누피 님 보려오는 것^^
    좋은정보 감사합니다.

  12. BlogIcon iBluemind
    2011.05.08 17:37 신고

    이 명령어는 제 서버 인터넷 접속을 복구하려다가 썼던 명령어네요 ㅎㅎ
    그 일은 비록 실패했지만요..;;

  13. 나그냉
    2011.05.18 02:10 신고

    윈2003 서버에서 netsh 배치로 유용하게 사용하는데요 win2008 server 에선 뭘 잘못 했기에 잘 안되네요.. ㅠ.ㅠ 한참 삽질하다 되긴 되었는데요...
    참 부진런하신 스누피님 화이팅 하세요...
    두서없이 생각나서 쓰고가요..

  14. 하늘나비
    2011.07.07 09:29 신고

    개인 블로그에 퍼가도 되죠? 제 블로그에 발췌는 남겼습니다. ^^

  15. dd
    2014.04.21 14:44 신고

    와 감사합니다

  16. dd
    2014.04.21 14:44 신고

    와 감사합니다

  17. question
    2014.08.27 09:59 신고

    여기서 static 뒤에는 순서대로 IP 주소, 기본 게이트웨이, 서브넷 마스크를 적어주시면 됩니다.

    잘못 쓰신거 아닌가요?
    ip 주소 ,, 서브넷 마스크 ,, 기본 게이트웨이
    순서가 아닌지?

  18. 테마컬렉션
    2015.01.26 20:44 신고

    혹시 보조 DNS를 넣으려면 어떻게 해야하나요??? 위에 한분이 설명해주셨는데..잘 안돼네욤.ㅜㅜ

  19. 초보관리
    2015.07.28 20:15 신고

    안녕하세요.. 항상 좋은 정보 감사드립니다..

    한가지 궁금한 점이 있습니다.

    "netsh interface ip show interfaces" 명령으로 interface의 목록이 보여질 때 말입니다.

    여러 interface 목록중에서 특정조건의 "색인"번호만 추출할 방법이 있을까요?

    예를 들면 1. 색인의 마지막 번호라던가.. 2. 색인중 가장 큰 숫자라던가.. 하는 식으로요..

    부끄럽게도 많이 알지 못하는 초보자라 어찌보면 간단할수 있을지도 모르는 부분에 대해

    질문드리게 되어 죄송합니다..

    많이 절실함으로 부탁드립니다..

  20. BlogIcon 머리가..
    2015.08.20 23:09 신고

    시간이 좀 지난 글이기도 하지만..

    개인적으로 꼭 필요한건데 어느 한부분에서 막혀버렷네요ㅠㅠ..

    그래서 혹시나 하고 질문드립니다..

    연결된 활성 네트워크 이름이

    "로컬 영역 연결" 이 아닐경우, 자동적으로 찾아서 등록하게는 못하는걸까요..?

    매번 확인해가며 배치파일을 변경하기가 귀찮아서..큼

  21. 백경민
    2016.12.30 17:32 신고

    @echo off
    mode con cols=100 lines=30
    color 1F


    set SUBNET=255.255.255.0
    set DNS=XXX.XXX.XXX.XXX
    set DNS2=XXX.XXX.XXX.XXX

    :SETIP
    cls
    netsh interface ip show interfaces
    echo.
    set /p NIC=설정하려는 장치의 색인 번호 :
    set /p IP=IP Address :
    echo Subnet Mask : %SUBNET%
    for /f "tokens=1-4 delims=." %%a in ('echo %IP%') do set GATEWAY=%%a.%%b.%%c.1
    echo Gateway : %GATEWAY%
    echo DNS Server : %DNS%
    echo DNS2 Server : %DNS2%
    echo.
    netsh interface ip set address %NIC% static %IP% %SUBNET% %GATEWAY%
    netsh interface ip set dnsservers %NIC% static %DNS% primary
    netsh -c int ip add dns name="로컬 영역 연결" addr=XXX.XXX.XXX.XXX index=2
    echo 고정 IP 셋팅이 완료되었습니다.
    pause > nul
    exit

    보조DNS 값도 수정해서 올려 봅니다. 쉽게 편집 해서 사용하세요. ^^ 답글 부탁드립니다.