성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>윈도우 운영체제의 route 명령어 사용법</h1> <p> IPv4 기준으로 라우팅 테이블 확인을 다음과 같이 할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\> <span style='color: blue; font-weight: bold'>route PRINT -4</span> =========================================================================== 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 =========================================================================== </pre> <br /> 자, 그럼 라우팅 테이블의 항목을 삭제/추가/변경해보겠습니다. 실습을 위해 위의 출력 결과에서 다음의 항목을 삭제해 보겠습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Network Destination Netmask Gateway Interface Metric 255.255.255.255 255.255.255.255 On-link 127.0.0.1 331 </pre> <br /> 그럼 간단하게 이런 route 명령어를 내리면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\Windows\System32> <span style='color: blue; font-weight: bold'>route DELETE 255.255.255.255 IF 1</span> OK! </pre> <br /> 위의 인자 값 의미는 각각 다음과 같습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > route DELETE [Network Destination] IF [Interface number] Network Destination == 255.255.255.255 Interface number == 1 (참고로, IF 인자를 주지 않으면 Network Destination이 일치하는 모든 값을 삭제함) </pre> <br /> 여기서 문제는 "Interface"가 아닌 "Interface number"를 줘야 한다는 것인데, 왜 그 값이 "1"이어야 하는지 쉽게 알 수 없다는 점입니다. 일단, "Interface number" 목록은 route PRINT -4 출력에 이미 포함되어 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\> <span style='color: blue; font-weight: bold'>route PRINT -4</span> =========================================================================== Interface List <span style='color: blue; font-weight: bold'>16</span>...00 15 5d 00 13 15 ......Hyper-V Virtual Ethernet Adapter #2 <span style='color: blue; font-weight: bold'>4</span>...00 e0 4c 23 1a cf ......Realtek PCIe GBE Family Controller #3 <span style='color: blue; font-weight: bold'>27</span>...2c 56 dc 94 8d d7 ......Hyper-V Virtual Ethernet Adapter #3 <span style='color: blue; font-weight: bold'>10</span>...7c 5c f8 db 08 0c ......Bluetooth Device (Personal Area Network) <span style='color: blue; font-weight: bold'> 1...........................Software Loopback Interface 1</span> =========================================================================== ...[생략]... </pre> <br /> 위의 목록에서 좌측의 첫 번째 숫자가 바로 "Interface number"가 됩니다. 그리고 우리가 삭제하려는 항목은 "Interface" 값이 "127.0.0.1"이기 때문에 루프백 주소이므로 위의 목록에서 1번임을 알 수 있습니다. 따라서, "route DELETE 255.255.255.255 IF 1" 명령이 해당 항목을 삭제할 수 있게 되는 것입니다.<br /> <br /> 그렇다면, 지우는 김에 다음의 항목도 삭제해 보겠습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Network Destination Netmask Gateway Interface Metric 255.255.255.255 255.255.255.255 On-link 10.0.75.1 271 </pre> <br /> route DELETE 명령을 위한 Network Destination은 255.255.255.255이지만, IF 값은 어떻게 구해야 할까요? 위의 항목은 "Interface == 10.0.75.1" 값을 갖는데 이와 매칭되는 항목을 "Interface List"에서 찾기가 쉽지 않습니다.<br /> <br /> 이럴 때는, ipconfig을 이용하면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\Windows\System32> <span style='color: blue; font-weight: bold'>ipconfig /all</span> 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 . . . . . . . . . . . : <span style='color: blue; font-weight: bold'>Hyper-V Virtual Ethernet Adapter #2</span> 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. . . . . . . . . . . : <span style='color: blue; font-weight: bold'>10.0.75.1</span>(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 ...[생략]... </pre> <br /> 보는 바와 같이, "10.0.75.1" 주소를 갖는 어댑터의 "Hyper-V Virtual Ethernet Adapter #2" 문자열을 구할 수 있고, 이것을 Interface List에서 찾으면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > =========================================================================== Interface List <span style='color: blue; font-weight: bold'>16...00 15 5d 00 13 15 ......Hyper-V Virtual Ethernet Adapter #2</span> 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 =========================================================================== </pre> <br /> 16번 인터페이스로 식별이 됩니다. 따라서 다음과 같이 명령을 내리면 해당 항목을 삭제할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > route DELETE 255.255.255.255 <span style='color: blue; font-weight: bold'>IF 16</span> </pre> <br /> (또는 제어판의 네트워크 공유 센터의 어댑터 목록을 이용해 매칭시킬 수도 있습니다.)<br /> <br /> <hr style='width: 50%' /><br /> <br /> "Interface number"를 구할 수 있게 되었으면 나머지 작업은 쉽습니다. 우선, ADD를 실행해 위에서 지웠던 2개의 항목을 복원해 보겠습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 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 </pre> <br /> route ADD 명령어의 형식은 다음과 같은데,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > route ADD [Network Destination] MASK [Netmask] [Gateway] METRIC [Metric Number] IF [Interface Number] </pre> <br /> 여기서 값을 알 수 없는 것은 [Gateway]에 해당하는 "On-link"입니다. 비록 On-link라고 되어 있지만 이런 경우 "0.0.0.0"을 입력하면 됩니다. 따라서, 다음과 같이 값을 복원할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > route ADD 255.255.255.255 MASK 255.255.255.255 0.0.0.0 <span style='color: blue; font-weight: bold'>METRIC 331</span> IF 1 route ADD 255.255.255.255 MASK 255.255.255.255 0.0.0.0 <span style='color: blue; font-weight: bold'>METRIC 271</span> IF 16 </pre> <br /> 위와 같이 실행 후 route PRINT -4로 확인하면 이렇게 추가된 것을 볼 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Network Destination Netmask Gateway Interface Metric 255.255.255.255 255.255.255.255 On-link 127.0.0.1 <span style='color: blue; font-weight: bold'>406</span> 255.255.255.255 255.255.255.255 On-link 10.0.75.1 <span style='color: blue; font-weight: bold'>286</span> </pre> <br /> 그런데 이상하군요. 우리가 의도한 METRIC 값은 각각 331, 271이었는데 엉뚱하게 406, 286이 들어가 있습니다. 값의 차가 각각 75, 15가 납니다.<br /> <br /> 이에 대한 해답은 다음의 글에서 구할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Forcing Windows 7 to use wired when available ; <a target='tab' href='http://blog.yeshere.org/2011/06/forcing-windows-7-to-use-wired-when.html'>http://blog.yeshere.org/2011/06/forcing-windows-7-to-use-wired-when.html</a> How to change the Gateway Metric on Windows 7 ; <a target='tab' href='http://blog.yeshere.org/2011/06/how-to-change-gateway-metric-on-windows.html'>http://blog.yeshere.org/2011/06/how-to-change-gateway-metric-on-windows.html</a> </pre> <br /> 그래서 "netsh int ip show config"을 실행하면 이런 출력 결과를 얻게 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\> <span style='color: blue; font-weight: bold'>netsh int ip show config</span> 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) <span style='color: blue; font-weight: bold'>InterfaceMetric: 15</span> 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) <span style='color: blue; font-weight: bold'>InterfaceMetric: 75</span> Statically Configured DNS Servers: None Register with which suffix: None Statically Configured WINS Servers: None </pre> <br /> 즉, 각각의 어댑터 별로 임의의 가중치가 있는 것입니다. 따라서 이 값을 고려해 원하는 331, 271을 설정하려면 다음과 같이 명령을 내려 METRIC 값을 바꿔줄 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > route <span style='color: blue; font-weight: bold'>CHANGE</span> 255.255.255.255 MASK 255.255.255.255 0.0.0.0 METRIC <span style='color: blue; font-weight: bold'>256</span> IF 1 route <span style='color: blue; font-weight: bold'>CHANGE</span> 255.255.255.255 MASK 255.255.255.255 0.0.0.0 METRIC <span style='color: blue; font-weight: bold'>256</span> IF 16 </pre> <br /> 그런데 재미있게도 METRIC 값이 모두 256으로 일치합니다. 그러고 보면, 윈도우는 별다른 설정이 없는 한 각각의 인터페이스에 설정된 METRIC 값으로 256을 기본값으로 사용하지만 어댑터에 따른 가중치로 인해 METRIC 우선순위가 달라지게 되는 것입니다.<br /> <br /> 어쨌든, 이렇게 기본값(256)으로 설정하고 나면 원하는 값으로 나옵니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Network Destination Netmask Gateway Interface Metric 255.255.255.255 255.255.255.255 On-link 127.0.0.1 <span style='color: blue; font-weight: bold'>331</span> 255.255.255.255 255.255.255.255 On-link 10.0.75.1 <span style='color: blue; font-weight: bold'>271</span> </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2172
(왼쪽의 숫자를 입력해야 합니다.)