성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] 그냥 RSS Reader 기능과 약간의 UI 편의성 때문에 사용...
[이종효] 오래된 소프트웨어는 보안 위협이 되기도 합니다. 혹시 어떤 기능...
[정성태] @Keystroke IEEE의 문서를 소개해 주시다니... +_...
[손민수 (Keystroke)] 괜히 듀얼채널 구성할 때 한번에 같은 제품 사라고 하는 것이 아...
[정성태] 전각(Full-width)/반각(Half-width) 기능을 토...
[정성태] Vector에 대한 내용은 없습니다. Vector가 닷넷 BCL...
[orion] 글 읽고 찾아보니 디자인 타임에는 InitializeCompon...
[orion] 연휴 전에 재현 프로젝트 올리자 생각해 놓고 여의치 않아서 못 ...
[정성태] 아래의 글에 정리했으니 참고하세요. C# - Typed D...
[정성태] 간단한 재현 프로젝트라도 있을까요? 저런 식으로 설명만 해...
글쓰기
제목
이름
암호
전자우편
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'>윈도우 - (네트워크 어댑터의 우선순위로 인한) 열거되는 IP 주소 순서를 조정하는 방법</h1> <p> 예를 들어, 다음과 같은 코드를,<br /> <a name='code'></a> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > using System; using System.Net.NetworkInformation; using System.Net.Sockets; namespace ConsoleApp1 { class Program { static void Main(string[] args) { foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces()) { if (item.NetworkInterfaceType == NetworkInterfaceType.Ethernet && item.OperationalStatus == OperationalStatus.Up) { foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses) { if (ip.Address.AddressFamily == AddressFamily.InterNetwork) { Console.WriteLine(ip.Address.ToString()); } } } } } } } </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;' > C:\test> ConsoleApp1.exe 172.26.48.6 192.168.0.167 </pre> <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;' > PS C:\WINDOWS\system32> <span style='color: blue; font-weight: bold'>ipconfig</span> Windows IP Configuration Ethernet adapter <span style='color: blue; font-weight: bold'>Ethernet 4</span>: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::8162:af6a:2f6c:ec60%13 IPv4 Address. . . . . . . . . . . : <span style='color: blue; font-weight: bold'>172.26.48.6</span> Subnet Mask . . . . . . . . . . . : 255.255.240.0 Default Gateway . . . . . . . . . : Ethernet adapter <span style='color: blue; font-weight: bold'>Ethernet 5</span>: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::b5d3:1eaa:1fd3:6197%12 IPv4 Address. . . . . . . . . . . : <span style='color: blue; font-weight: bold'>192.168.0.167</span> Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.0.1 </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > PS C:\WINDOWS\system32> <span style='color: blue; font-weight: bold'>Get-NetIPInterface | where {$_.ConnectionState -eq "Connected" -and $_.AddressFamily -eq "IPv4" } | select ifIndex,InterfaceAlias,InterfaceMetric,AddressFamily,ConnectionState | sort InterfaceMetric | FT</span> ifIndex InterfaceAlias InterfaceMetric AddressFamily ConnectionState ------- -------------- --------------- ------------- --------------- <span style='color: blue; font-weight: bold'>13 Ethernet 4 15</span> IPv4 Connected <span style='color: blue; font-weight: bold'>12 Ethernet 5 35</span> IPv4 Connected 1 Loopback Pseudo-Interface 1 75 IPv4 Connected </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;' > 윈도우 10에서 사라진 "Adapters and Bindings" 네트워크 우선순위 조정 기능 - 두 번째 이야기 ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/11782'>https://www.sysnet.pe.kr/2/0/11782</a> </pre> <br /> 위의 글에서 설명했지만, 결국 중요한 것은 ROUTE 테이블에서 보이는 Metric 수치가 낮아야 우선 순위가 높으므로, 차이가 얼마나 나는지 확인을 해야 합니다.<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 PRINT -4</span> =========================================================================== Interface List 12...00 15 5d 00 13 33 ......Microsoft Hyper-V Network Adapter #5 13...00 15 5d 00 13 34 ......Microsoft Hyper-V Network Adapter #4 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.167 35 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 <span style='color: blue; font-weight: bold'>172.26.48.0 255.255.240.0 On-link 172.26.48.6 271</span> 172.26.48.6 255.255.255.255 On-link 172.26.48.6 271 172.26.63.255 255.255.255.255 On-link 172.26.48.6 271 <span style='color: blue; font-weight: bold'>192.168.0.0 255.255.255.0 On-link 192.168.0.167 291</span> 192.168.0.167 255.255.255.255 On-link 192.168.0.167 291 192.168.0.255 255.255.255.255 On-link 192.168.0.167 291 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 192.168.0.167 291 224.0.0.0 240.0.0.0 On-link 172.26.48.6 271 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 192.168.0.167 291 255.255.255.255 255.255.255.255 On-link 172.26.48.6 271 =========================================================================== Persistent Routes: None </pre> <br /> 172.26.48.0 네트워크의 Metric이 271, 192.168.0.0 네트워크가 291이므로 20의 차이가 납니다. 따라서 172.26.48.0 네트워크의 InterfaceMetric 값을 +21 이상으로 설정해 준다면 192.168.0.0 네트워크의 우선 순위가 더 높아질 수 있습니다. 기존 값이 "15"니까, (보기 좋게 ^^;) 5 단위로 떨어지게 +25를 해 "40"으로 설정한 후,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > PS C:\WINDOWS\system32> <span style='color: blue; font-weight: bold'>Set-NetIPInterface -InterfaceIndex 13 -InterfaceMetric 40</span> PS C:\WINDOWS\system32> <span style='color: blue; font-weight: bold'>Get-NetIPInterface | where {$_.ConnectionState -eq "Connected" -and $_.AddressFamily -eq "IPv4" } | select ifIndex,InterfaceAlias,InterfaceMetric,AddressFamily,ConnectionState | sort InterfaceMetric | FT</span> ifIndex InterfaceAlias InterfaceMetric AddressFamily ConnectionState ------- -------------- --------------- ------------- --------------- 12 Ethernet 5 35 IPv4 Connected <span style='color: blue; font-weight: bold'>13 Ethernet 4 40</span> IPv4 Connected 1 Loopback Pseudo-Interface 1 75 IPv4 Connected </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 PRINT -4</span> =========================================================================== Interface List 12...00 15 5d 00 13 33 ......Microsoft Hyper-V Network Adapter #5 13...00 15 5d 00 13 34 ......Microsoft Hyper-V Network Adapter #4 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.167 35 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 <span style='color: blue; font-weight: bold'>172.26.48.0 255.255.240.0 On-link 172.26.48.6 296</span> 172.26.48.6 255.255.255.255 On-link 172.26.48.6 296 172.26.63.255 255.255.255.255 On-link 172.26.48.6 296 <span style='color: blue; font-weight: bold'>192.168.0.0 255.255.255.0 On-link 192.168.0.167 291</span> 192.168.0.167 255.255.255.255 On-link 192.168.0.167 291 192.168.0.255 255.255.255.255 On-link 192.168.0.167 291 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 192.168.0.167 291 224.0.0.0 240.0.0.0 On-link 172.26.48.6 296 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 192.168.0.167 291 255.255.255.255 255.255.255.255 On-link 172.26.48.6 296 =========================================================================== Persistent Routes: None </pre> <br /> 정상적으로 우선 순위에 변동이 생겼으니, 이제 우리의 C# 프로그램에서도 IP 순서가 바뀌어서 나오게 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\test> ConsoleApp1.exe 192.168.0.167 172.26.48.6 </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1503
(왼쪽의 숫자를 입력해야 합니다.)