윈도우 운영체제의 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
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]