Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 337. 윈도우 운영체제의 route 명령어 사용법 [링크 복사], [링크+제목 복사],
조회: 20213
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 3개 있습니다.)

윈도우 운영체제의 route 명령어 사용법

IPv4 기준으로 라우팅 테이블 확인을 다음과 같이 할 수 있습니다.

C:\> route PRINT -4
===========================================================================
Interface List
 16...00 15 5d 00 13 15 ......Hyper-V Virtual Ethernet Adapter #2
  4...00 e0 4c 23 1a cf ......Realtek PCIe GBE Family Controller #3
 27...2c 56 dc 94 8d d7 ......Hyper-V Virtual Ethernet Adapter #3
 10...7c 5c f8 db 08 0c ......Bluetooth Device (Personal Area Network)
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.0.1     192.168.0.19    281
        10.0.75.0    255.255.255.0         On-link         10.0.75.1    271
        10.0.75.1  255.255.255.255         On-link         10.0.75.1    271
      10.0.75.255  255.255.255.255         On-link         10.0.75.1    271
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
      192.168.0.0    255.255.255.0         On-link      192.168.0.19    281
     192.168.0.19  255.255.255.255         On-link      192.168.0.19    281
    192.168.0.255  255.255.255.255         On-link      192.168.0.19    281
    192.168.137.0    255.255.255.0         On-link     192.168.137.1    281
    192.168.137.1  255.255.255.255         On-link     192.168.137.1    281
  192.168.137.255  255.255.255.255         On-link     192.168.137.1    281
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link         10.0.75.1    271
        224.0.0.0        240.0.0.0         On-link     192.168.137.1    281
        224.0.0.0        240.0.0.0         On-link      192.168.0.19    281
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link         10.0.75.1    271
  255.255.255.255  255.255.255.255         On-link     192.168.137.1    281
  255.255.255.255  255.255.255.255         On-link      192.168.0.19    281
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
          0.0.0.0          0.0.0.0      192.168.0.1  Default
          0.0.0.0          0.0.0.0      192.168.0.1     256
===========================================================================

자, 그럼 라우팅 테이블의 항목을 삭제/추가/변경해보겠습니다. 실습을 위해 위의 출력 결과에서 다음의 항목을 삭제해 보겠습니다.

Network Destination        Netmask          Gateway       Interface  Metric
255.255.255.255    255.255.255.255          On-link       127.0.0.1    331

그럼 간단하게 이런 route 명령어를 내리면 됩니다.

C:\Windows\System32> route DELETE 255.255.255.255 IF 1
 OK!

위의 인자 값 의미는 각각 다음과 같습니다.

route DELETE [Network Destination] IF [Interface number]

Network Destination == 255.255.255.255
Interface number == 1

(참고로, IF 인자를 주지 않으면 Network Destination이 일치하는 모든 값을 삭제함)

여기서 문제는 "Interface"가 아닌 "Interface number"를 줘야 한다는 것인데, 왜 그 값이 "1"이어야 하는지 쉽게 알 수 없다는 점입니다. 일단, "Interface number" 목록은 route PRINT -4 출력에 이미 포함되어 있습니다.

C:\> route PRINT -4
===========================================================================
Interface List
 16...00 15 5d 00 13 15 ......Hyper-V Virtual Ethernet Adapter #2
  4...00 e0 4c 23 1a cf ......Realtek PCIe GBE Family Controller #3
 27...2c 56 dc 94 8d d7 ......Hyper-V Virtual Ethernet Adapter #3
 10...7c 5c f8 db 08 0c ......Bluetooth Device (Personal Area Network)
  1...........................Software Loopback Interface 1
===========================================================================

...[생략]...

위의 목록에서 좌측의 첫 번째 숫자가 바로 "Interface number"가 됩니다. 그리고 우리가 삭제하려는 항목은 "Interface" 값이 "127.0.0.1"이기 때문에 루프백 주소이므로 위의 목록에서 1번임을 알 수 있습니다. 따라서, "route DELETE 255.255.255.255 IF 1" 명령이 해당 항목을 삭제할 수 있게 되는 것입니다.

그렇다면, 지우는 김에 다음의 항목도 삭제해 보겠습니다.

Network Destination        Netmask          Gateway       Interface  Metric
  255.255.255.255  255.255.255.255         On-link         10.0.75.1    271

route DELETE 명령을 위한 Network Destination은 255.255.255.255이지만, IF 값은 어떻게 구해야 할까요? 위의 항목은 "Interface == 10.0.75.1" 값을 갖는데 이와 매칭되는 항목을 "Interface List"에서 찾기가 쉽지 않습니다.

이럴 때는, ipconfig을 이용하면 됩니다.

C:\Windows\System32> ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : TESTPC
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter vEthernet (DockerNAT):

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #2
   Physical Address. . . . . . . . . : 00-15-5D-00-13-15
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::d5f:7811:62ad:ca6%16(Preferred)
   IPv4 Address. . . . . . . . . . . : 10.0.75.1(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :
   DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   NetBIOS over Tcpip. . . . . . . . : Enabled

...[생략]...

보는 바와 같이, "10.0.75.1" 주소를 갖는 어댑터의 "Hyper-V Virtual Ethernet Adapter #2" 문자열을 구할 수 있고, 이것을 Interface List에서 찾으면,

===========================================================================
Interface List
 16...00 15 5d 00 13 15 ......Hyper-V Virtual Ethernet Adapter #2
  4...00 e0 4c 23 1a cf ......Realtek PCIe GBE Family Controller #3
 27...2c 56 dc 94 8d d7 ......Hyper-V Virtual Ethernet Adapter #3
 10...7c 5c f8 db 08 0c ......Bluetooth Device (Personal Area Network)
  1...........................Software Loopback Interface 1
===========================================================================

16번 인터페이스로 식별이 됩니다. 따라서 다음과 같이 명령을 내리면 해당 항목을 삭제할 수 있습니다.

route DELETE 255.255.255.255 IF 16

(또는 제어판의 네트워크 공유 센터의 어댑터 목록을 이용해 매칭시킬 수도 있습니다.)




"Interface number"를 구할 수 있게 되었으면 나머지 작업은 쉽습니다. 우선, ADD를 실행해 위에서 지웠던 2개의 항목을 복원해 보겠습니다.

Network Destination        Netmask          Gateway       Interface  Metric
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link         10.0.75.1    271

route ADD 명령어의 형식은 다음과 같은데,

route ADD [Network Destination] MASK [Netmask]  [Gateway] METRIC [Metric Number] IF [Interface Number]

여기서 값을 알 수 없는 것은 [Gateway]에 해당하는 "On-link"입니다. 비록 On-link라고 되어 있지만 이런 경우 "0.0.0.0"을 입력하면 됩니다. 따라서, 다음과 같이 값을 복원할 수 있습니다.

route ADD 255.255.255.255 MASK 255.255.255.255 0.0.0.0 METRIC 331 IF 1
route ADD 255.255.255.255 MASK 255.255.255.255 0.0.0.0 METRIC 271 IF 16

위와 같이 실행 후 route PRINT -4로 확인하면 이렇게 추가된 것을 볼 수 있습니다.

Network Destination        Netmask          Gateway       Interface  Metric
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    406
  255.255.255.255  255.255.255.255         On-link         10.0.75.1    286

그런데 이상하군요. 우리가 의도한 METRIC 값은 각각 331, 271이었는데 엉뚱하게 406, 286이 들어가 있습니다. 값의 차가 각각 75, 15가 납니다.

이에 대한 해답은 다음의 글에서 구할 수 있습니다.

Forcing Windows 7 to use wired when available 
; http://blog.yeshere.org/2011/06/forcing-windows-7-to-use-wired-when.html

How to change the Gateway Metric on Windows 7
; http://blog.yeshere.org/2011/06/how-to-change-gateway-metric-on-windows.html

그래서 "netsh int ip show config"을 실행하면 이런 출력 결과를 얻게 됩니다.

C:\> netsh int ip show config

Configuration for interface "vEthernet (DockerNAT)"
    DHCP enabled:                         No
    IP Address:                           10.0.75.1
    Subnet Prefix:                        10.0.75.0/24 (mask 255.255.255.0)
    InterfaceMetric:                      15
    Statically Configured DNS Servers:    None
    Register with which suffix:           Primary only
    Statically Configured WINS Servers:   None

...[생략]...

Configuration for interface "Loopback Pseudo-Interface 1"
    DHCP enabled:                         No
    IP Address:                           127.0.0.1
    Subnet Prefix:                        127.0.0.0/8 (mask 255.0.0.0)
    InterfaceMetric:                      75
    Statically Configured DNS Servers:    None
    Register with which suffix:           None
    Statically Configured WINS Servers:   None

즉, 각각의 어댑터 별로 임의의 가중치가 있는 것입니다. 따라서 이 값을 고려해 원하는 331, 271을 설정하려면 다음과 같이 명령을 내려 METRIC 값을 바꿔줄 수 있습니다.

route CHANGE 255.255.255.255 MASK 255.255.255.255 0.0.0.0 METRIC 256 IF 1
route CHANGE 255.255.255.255 MASK 255.255.255.255 0.0.0.0 METRIC 256 IF 16

그런데 재미있게도 METRIC 값이 모두 256으로 일치합니다. 그러고 보면, 윈도우는 별다른 설정이 없는 한 각각의 인터페이스에 설정된 METRIC 값으로 256을 기본값으로 사용하지만 어댑터에 따른 가중치로 인해 METRIC 우선순위가 달라지게 되는 것입니다.

어쨌든, 이렇게 기본값(256)으로 설정하고 나면 원하는 값으로 나옵니다.

Network Destination        Netmask          Gateway       Interface  Metric
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link         10.0.75.1    271




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 11/25/2017]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 46  47  48  49  50  51  52  53  54  55  56  [57]  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12201정성태3/18/202010840오류 유형: 611. git-credential-manager.exe: Using credentials for username "Personal Access Token". [1]
12200정성태3/18/202011291VS.NET IDE: 145. NuGet + Github 라이브러리 디버깅 관련 옵션 3가지 - "Enable Just My Code" / "Enable Source Link support" / "Suppress JIT optimization on module load (Managed only)"
12199정성태3/17/20209154오류 유형: 610. C# - CodeDomProvider 사용 시 Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path '...\f2_6uod0.tmp'.
12198정성태3/17/202011863오류 유형: 609. SQL 서버 접속 시 "Cannot open user default database. Login failed."
12197정성태3/17/202011003VS.NET IDE: 144. .NET Core 콘솔 응용 프로그램을 배포(publish) 시 docker image 자동 생성 - 두 번째 이야기 [1]
12196정성태3/17/20208922오류 유형: 608. The ServicedComponent being invoked is not correctly configured (Use regsvcs to re-register).
12195정성태3/16/202010656.NET Framework: 902. C# - 프로세스의 모든 핸들을 열람 - 세 번째 이야기
12194정성태3/16/202012986오류 유형: 607. PostgreSQL - Npgsql.NpgsqlException: sorry, too many clients already
12193정성태3/16/20209606개발 환경 구성: 485. docker - SAP Adaptive Server Enterprise 컨테이너 실행 [1]
12192정성태3/14/202012072개발 환경 구성: 484. docker - Sybase Anywhere 16 컨테이너 실행
12191정성태3/14/202012438개발 환경 구성: 483. docker - OracleXE 컨테이너 실행 [1]
12190정성태3/14/20208597오류 유형: 606. Docker Desktop 업그레이드 시 "The process cannot access the file 'C:\Program Files\Docker\Docker\resources\dockerd.exe' because it is being used by another process."
12189정성태3/13/202013442개발 환경 구성: 482. Facebook OAuth 처리 시 상태 정보 전달 방법과 "유효한 OAuth 리디렉션 URI" 설정 규칙
12188정성태3/13/202015644Windows: 169. 부팅 시점에 실행되는 chkdsk 결과를 확인하는 방법
12187정성태3/12/20208397오류 유형: 605. NtpClient was unable to set a manual peer to use as a time source because of duplicate error on '...'.
12186정성태3/12/20209472오류 유형: 604. The SysVol Permissions for one or more GPOs on this domain controller and not in sync with the permissions for the GPOs on the Baseline domain controller.
12185정성태3/11/202010129오류 유형: 603. The browser service was unable to retrieve a list of servers from the browser master...
12184정성태3/11/202011586오류 유형: 602. Automatic certificate enrollment for local system failed (0x800706ba) The RPC server is unavailable. [3]
12183정성태3/11/20209939오류 유형: 601. Warning: DsGetDcName returned information for \\[...], when we were trying to reach [...].
12182정성태3/11/202011147.NET Framework: 901. C# Windows Forms - Vista/7 이후의 Progress Bar 업데이트가 느린 문제파일 다운로드1
12181정성태3/11/202011957기타: 76. 재현 가능한 최소한의 예제 프로젝트란? - 두 번째 예제파일 다운로드1
12180정성태3/10/20208577오류 유형: 600. "Docker Desktop for Windows" - EXPOSE 포트가 LISTENING 되지 않는 문제
12179정성태3/10/202019978개발 환경 구성: 481. docker - PostgreSQL 컨테이너 실행
12178정성태3/10/202011466개발 환경 구성: 480. Linux 운영체제의 docker를 위한 tcp 바인딩 추가 [1]
12177정성태3/9/202011116개발 환경 구성: 479. docker - MySQL 컨테이너 실행
12176정성태3/9/202010529개발 환경 구성: 478. 파일의 (sha256 등의) 해시 값(checksum) 확인하는 방법
... 46  47  48  49  50  51  52  53  54  55  56  [57]  58  59  60  ...