Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 337. 윈도우 운영체제의 route 명령어 사용법 [링크 복사], [링크+제목 복사],
조회: 27319
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




... 31  32  33  34  35  [36]  37  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
13041정성태4/28/202214638개발 환경 구성: 642. Informix 데이터베이스 docker 환경 구성
13040정성태4/27/202214260VC++: 156. 비주얼 스튜디오 - Linux C/C++ 프로젝트에서 openssl 링크하는 방법
13039정성태4/27/202217366.NET Framework: 1999. C# - Playwright를 이용한 간단한 브라우저 제어 실습
13038정성태4/26/202213570오류 유형: 806. twine 실행 시 ConfigParser.ParsingError: File contains parsing errors: /root/.pypirc
13037정성태4/25/202214353.NET Framework: 1998. Azure Functions를 사용한 간단한 실습
13036정성태4/24/202215309.NET Framework: 1997. C# - nano 시간을 가져오는 방법 [2]
13035정성태4/22/202216546Windows: 204. Windows 10부터 바뀐 QueryPerformanceFrequency, QueryPerformanceCounter
13034정성태4/21/202214082.NET Framework: 1996. C# XingAPI - 주식 종목에 따른 PBR, PER, ROE, ROA 구하는 방법(t3320, t8430 예제)파일 다운로드1
13033정성태4/18/202215243.NET Framework: 1195. C# - Thread.Yield와 Thread.Sleep(0)의 차이점(?)
13032정성태4/17/202215395오류 유형: 805. Github의 50MB 파일 크기 제한 - warning: GH001: Large files detected. You may want to try Git Large File Storage
13031정성태4/15/202215113.NET Framework: 1194. C# - IdealProcessor와 ProcessorAffinity의 차이점
13030정성태4/15/202213605오류 유형: 804. 정규 표현식 오류 - Quantifier {x,y} following nothing.
13029정성태4/14/202215049Windows: 203. iisreset 후에도 이전에 설정한 전역 환경 변수가 w3wp.exe에 적용되는 문제
13028정성태4/13/202215176.NET Framework: 1193. (appsettings.json처럼) web.config의 Debug/Release에 따른 설정 적용
13027정성태4/12/202215035.NET Framework: 1192. C# - 환경 변수의 변화를 알리는 WM_SETTINGCHANGE Win32 메시지 사용법파일 다운로드1
13026정성태4/11/202216367.NET Framework: 1191. C 언어로 작성된 FFmpeg Examples의 C# 포팅 전체 소스 코드 [3]
13025정성태4/11/202215647.NET Framework: 1190. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 vaapi_encode.c, vaapi_transcode.c 예제 포팅
13024정성태4/7/202213882.NET Framework: 1189. C# - 런타임 환경에 따라 달라진 AppDomain.GetCurrentThreadId 메서드
13023정성태4/6/202214477.NET Framework: 1188. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 transcoding.c 예제 포팅 [3]
13022정성태3/31/202214030Windows: 202. 윈도우 11 업그레이드 - "PC Health Check"를 통과했지만 여전히 업그레이드가 안 되는 경우 해결책
13021정성태3/31/202215864Windows: 201. Windows - INF 파일을 이용한 장치 제거 방법
13020정성태3/30/202214118.NET Framework: 1187. RDP 접속 시 WPF UserControl의 Unloaded 이벤트 발생파일 다운로드1
13019정성태3/30/202214569.NET Framework: 1186. Win32 Message를 Code로부터 메시지 이름 자체를 텍스트로 구하고 싶다면?파일 다운로드1
13018정성태3/29/202215318.NET Framework: 1185. C# - Unsafe.AsPointer가 반환한 포인터는 pinning 상태일까요? [5]
13017정성태3/28/202214262.NET Framework: 1184. C# - GC Heap에 위치한 참조 개체의 주소를 알아내는 방법 - 두 번째 이야기 [3]
13016정성태3/27/202215984.NET Framework: 1183. C# 11에 추가된 ref 필드의 (우회) 구현 방법파일 다운로드1
... 31  32  33  34  35  [36]  37  38  39  40  41  42  43  44  45  ...