Microsoft MVP성태의 닷넷 이야기
Windows: 71. ad-hoc 보다 더 편리한 "가상 Wifi" 를 이용한 인터넷 공유 [링크 복사], [링크+제목 복사],
조회: 41947
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

ad-hoc 보다 더 편리한 "가상 Wifi" 를 이용한 인터넷 공유

Windows 7부터 재미있는 기능이 소개되었는데요. ^^

Windows 7 adds native Virtual WiFi technology from Microsoft Research 
; http://www.istartedsomething.com/20090516/windows-7-native-virtual-wifi-technology-microsoft-research/

바로 "Virtual WiFi" 입니다.

이해를 돕기 위해 기존의 AD-HOC 과 비교해 볼까요? ad-hoc 네트워크를 구성해 인터넷 공유를 하려는 경우 반드시 2개의 네트워크 카드가 필요했습니다. 대개 노트북으로 인터넷 공유를 사용하곤 하는데요. 그럴 때는 인터넷 가능한 회선을 유선 네트워크 카드에 연결하고, 무선 네트워크 어댑터를 ad-hoc 네트워크로 사용했었습니다.

유선 NIC: 인터넷 연결 및 공유 설정
무선 NIC: AD-HOC 네트워크 구성

보시는 바와 같이 이런 ad-hoc 네트워크 구성으로 사용된 '무선 NIC'은 다른 목적으로 사용하는 것이 불가능합니다. 즉, 인터넷 가능한 유선이 없다거나, 아예 무선 NIC 하나만 장착된 컴퓨터에서는 인터넷 공유를 할 수 없습니다.

이런 단점이 "윈도우 7"부터 추가된 "가상 와이파이" 기능을 이용하면 자연스럽게 해결됩니다. "Windows 7 adds native Virtual WiFi technology from Microsoft Research" 문서에 보이는 것처럼 VWifi는 기존 무선 NIC을 가상화시켜 추가적인 무선 어댑터를 구성할 수 있도록 해줍니다.

따라서, 유선 NIC 카드 필요없이 노트북에 무선 NIC 하나만 장착되었다고 해도 (ad-hoc 이 아닌) "인터넷 공유가 되는 무선 네트워크"를 구성할 수 있습니다.

원래의 무선 NIC: 인터넷 연결 및 공유 설정
추가된 가상 무선 NIC: (AD-HOC 과 유사한) 무선 WIFI Access Point 로 동작

간단하게 정리하면, 윈도우 7에서 "가상 WiFi"를 설정한다는 것은 여러분들의 노트북에 "무선 액세스 포인트 기기"가 내장되는 것과 같다고 보시면 됩니다.

오~~~ 멋지지 않나요? ^^ (앞으로는 "ad-hoc 네트워크 설정하는 방법"을 검색하지 마시고 "가상 WiFi 설정하는 방법"을 검색하세요.)

이를 활용하면, 무선 랜카드 밖에 장착되지 않은 소형 태블릿을 - 예를 들어, 윈도우 8이 장착된 "서피스 프로(Surface Pro)" 같은 경우에도 Access Point 기기로써 동작시킬 수 있게 됩니다. (아쉽게도 서피스 프로에 들어간 무선 랜 카드가 "Hosted network supported" 기능이 있는지는 확인 못했습니다. ^^) 뭐랄까, 윈도우 7/8이 장착된 타블렛은 "좀 더 무거운 Olleh 에그"인 셈이군요.




그런데, 가상 WIFI가 구성되려면 3가지 조건이 맞아야 합니다.

  1. 윈도우 7 이상의 운영체제
  2. 가상 WIFI를 지원하는 무선 네트워크 카드
  3. 가상 WIFI를 지원하는 무선 네트워크 카드 디바이스 드라이버

현재 여러분들의 시스템에 가상 WIFI가 가능한지 테스트하는 가장 간단한 방법은 명령행에서 다음과 같이 입력해 보는 것입니다.

D:\Windows\system32>netsh wlan show drivers

Interface name: Wireless Network Connection

    Driver                    : Intel(R) WiFi Link 5300 AGN
    Vendor                    : Intel Corporation
    Provider                  : Microsoft
    Date                      : 2009-03-26
    Version                   : 12.4.1.4
    INF file                  : D:\Windows\INF\netw5v64.inf
    Files                     : 1 total
                                D:\Windows\system32\DRIVERS\netw5v64.sys
    Type                      : Native Wi-Fi Driver
    Radio types supported     : 802.11a 802.11b 802.11g
    FIPS 140-2 mode supported : Yes
    Hosted network supported  : No
    Authentication and cipher supported in infrastructure mode:
                                Open            None
                                ...[생략]...
                                Open            Vendor defined
    Authentication and cipher supported in ad-hoc mode:
                                Open            None
                                ...[생략]...
                                WPA2-Personal   CCMP

위에서 "Hosted network supported" 값이 "No" 면 지원하지 않는 것이고, "Yes"면 지원하는 것입니다. 현재 제가 사용하는 "삼성 센스 NT700Z5C-S88 크로노스" 노트북은 "Yes"로 나오고 예전에 사용한 "Dell Studio 1557" 은 "No"로 나옵니다.

그런데, "No"로 나왔다고 해서 아쉬워하지 않아도 됩니다. ^^ 간혹 디바이스 드라이버가 구형이라서 그런 걸 수도 있는데요. 실제로 "Dell Studio 1557" 노트북에 장착된 "Intel(R) WiFi Link 5300 AGN" 무선 랜 카드는 "Virtual WiFi"를 지원하는 모델입니다. 따라서 인텔 사이트에 방문해서 최신 버전으로 드라이버를 업그레이드 하면,

Intel® PROSet/Wireless Software and Drivers for Windows 7*
; https://downloadcenter.intel.com/SearchResult.aspx?lang=eng&ProductFamily=Wireless+Networking&ProductLine=Intel%c2%ae+Centrino%c2%ae+Wi-Fi+Products&ProductProduct=Intel%c2%ae+WiFi+Link+5300+and+Intel%c2%ae+WiFi+Link+5100+products

다음과 같이 다시 "Hosted network supported" 값이 "Yes"로 바뀝니다.

D:\Windows\system32>netsh wlan show drivers

Interface name: Wireless Network Connection

    Driver                    : Intel(R) WiFi Link 5300 AGN
    Vendor                    : Intel Corporation
    Provider                  : Intel
    Date                      : 2012-01-22
    Version                   : 14.3.2.1
    INF file                  : D:\Windows\INF\oem4.inf
    Files                     : 4 total
                                D:\Windows\system32\DRIVERS\NETwNs64.sys
                                ...[생략]...
    Type                      : Native Wi-Fi Driver
    Radio types supported     : 802.11a 802.11b 802.11g
    FIPS 140-2 mode supported : Yes
    Hosted network supported  : Yes
    Authentication and cipher supported in infrastructure mode:
                                Open            None
                                ...[생략]...
                                Open            Vendor defined
    Authentication and cipher supported in ad-hoc mode:
                                ...[생략]...
                                WPA2-Personal   CCMP
    ...[생략]...

자, 이제 준비가 다 되었으니 그럼 "가상 WiFi"를 이용해 실제로 인터넷 공유를 해볼까요? ^^

우선, 명령행으로 다음과 같이 가상 어댑터를 생성하고, ad-hoc에서 했던 것처럼 "인터넷 공유" 기능을 켜는 방법이 있습니다.

netsh wlan set hostednetwork mode=allow ssid=myaccess key=12345678
netsh wlan start hostednetwork

물론, 이런 복잡함 없이 간단하게 프로그램을 이용하는 방법이 더 선호되긴 합니다. ^^ 그래서, 다음의 "Virtual Router" 프로그램을 다운로드 받고,

Virtual Router - Wifi Hot Spot for Windows 8, Windows 7 and 2008 R2
; http://virtualrouter.codeplex.com/

실행해서 '무선 와이파이'기기로써 동작할 수 있도록 "SSID", 암호와 함께 "인터넷 공유(ICS: Internet Connection Sharing)"를 해줄 어댑터를 지정해 준 후 "Start Virtual Router" 버튼을 누르면 다음과 같이 동작하게 됩니다.

win7_virtual-wifi_1.png

그림에서 보면, "Interl(R) WiFi Link 5300 AGN" 어댑터에 연결된 "Wireless Network Connection"이 그대로 보존되면서 인터넷 공유 기능이 켜져 있습니다. 그리고, 새롭게 "Microsoft Virtual WiFi Mniport Adapter" 라는 가상 장치가 생성되고 그것을 통해 가상 WiFi 기능이 제공되는데 이런 일련의 설정들이 "Virtual Router" 프로그램을 이용해 한번에 끝납니다.

이후, 아이패드를 비롯해 다른 무선 모바일 기기에서 "ap8" 이름을 가진 SSID를 연결하면 인터넷을 사용할 수 있습니다. ^^




이제 약간의 문제를 살펴볼까요? ^^ "Virtual Router"를 설정한 후 재부팅했을 때 "The hosted network couldn't be started. The group or resource is not in the correct state to perform the requested operation" 와 같은 메시지를 받으면서 서비스가 안된다면 다음의 Hotfix를 다운로드해서 설치하면 됩니다.

Applications that use Virtual WiFi technology do not work after you restart a computer that is running Windows 7 or Windows Server 2008 R2
; http://support.microsoft.com/kb/2496820

마지막으로, 사소한 문제인데 "Intel® PROSet/Wireless Software and Drivers for Windows 7*" 프로그램을 설치하다가 다음과 같은 오류 메시지가 나오는 경우가 있습니다.

bsutilcs has stopped working

Problem signature:
  Problem Event Name:   CLR20r3
  Problem Signature 01: bsutil.exe
  Problem Signature 02: 1.0.0.0
  Problem Signature 03: 50fda370
  Problem Signature 04: mscorlib
  Problem Signature 05: 4.0.0.0
  Problem Signature 06: 4ba22001
  Problem Signature 07: 3dac
  Problem Signature 08: 106
  Problem Signature 09: System.IO.FileNotFoundException
  OS Version:   6.1.7601.2.1.0.274.10
  Locale ID:    1042
  Additional Information 1: b3d9
  Additional Information 2: b3d947ccf0c0d4073730b38907c17cb6
  Additional Information 3: 022b
  Additional Information 4: 022b764586d5f6cdc6e99a0fdefa3f08

Read our privacy statement online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
  D:\Windows\system32\en-US\erofflps.txt

저도 이유는 알 수 없지만... ^^ 걱정하지 마시고 그냥 진행하셔도 정상적으로 최신 NIC 드라이버가 설치됩니다. (엄밀히, 이유를 알 수 없다기 보다는 굳이 알아낼 필요가 없으므로 넘어간 것입니다. ^^)




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







[최초 등록일: ]
[최종 수정일: 4/15/2013]

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

비밀번호

댓글 작성자
 



2013-05-03 02시01분
[박일용] 좋은 정보 고맙습니다.
[guest]
2015-01-06 01시07분
Managed Wifi API
; http://managedwifi.codeplex.com/SourceControl/changeset/view/41381

How can I make WiFi passwords per-user rather than per-system?
; https://devblogs.microsoft.com/oldnewthing/20230606-00/?p=108298

Over The Air: Exploiting Broadcom’s Wi-Fi Stack (Part 1)
; https://googleprojectzero.blogspot.com/2017/04/over-air-exploiting-broadcoms-wi-fi_4.html?m=1

Over The Air: Exploiting Broadcom’s Wi-Fi Stack (Part 2)
; https://googleprojectzero.blogspot.com/2017/04/over-air-exploiting-broadcoms-wi-fi_11.html

Over The Air - Vol. 2, Pt. 1: Exploiting The Wi-Fi Stack on Apple Devices
; https://googleprojectzero.blogspot.com/2017/09/over-air-vol-2-pt-1-exploiting-wi-fi.html

Over The Air - Vol. 2, Pt. 2: Exploiting The Wi-Fi Stack on Apple Devices
; https://googleprojectzero.blogspot.com/2017/10/over-air-vol-2-pt-2-exploiting-wi-fi.html

Over The Air - Vol. 2, Pt. 3: Exploiting The Wi-Fi Stack on Apple Devices
; https://googleprojectzero.blogspot.com/2017/10/over-air-vol-2-pt-3-exploiting-wi-fi.html
정성태

... 76  77  78  79  80  81  82  [83]  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11861정성태4/6/201919614디버깅 기술: 126. windbg - .NET x86 CLR2/CLR4 EXE의 EntryPoint
11860정성태4/5/201923464오류 유형: 527. Visual C++ 컴파일 오류 - error C2220: warning treated as error - no 'object' file generated
11859정성태4/4/201920698디버깅 기술: 125. WinDbg로 EXE의 EntryPoint에서 BP 거는 방법
11858정성태3/27/201921605VC++: 129. EXE를 LoadLibrary로 로딩해 PE 헤더에 있는 EntryPoint를 직접 호출하는 방법파일 다운로드1
11857정성태3/26/201919513VC++: 128. strncpy 사용 시 주의 사항(Linux / Windows)
11856정성태3/25/201919769VS.NET IDE: 134. 마이크로소프트의 CoreCLR 프로파일러 리눅스 예제를 Visual Studio F5 원격 디버깅하는 방법 [1]파일 다운로드1
11855정성태3/25/201921919개발 환경 구성: 436. 페이스북 HTTPS 인증을 localhost에서 테스트하는 방법
11854정성태3/25/201917574VS.NET IDE: 133. IIS Express로 호스팅하는 사이트를 https로 접근하는 방법
11853정성태3/24/201920383개발 환경 구성: 435. 존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면? - 두 번째 이야기 [1]
11852정성태3/20/201919604개발 환경 구성: 434. 존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면?파일 다운로드1
11851정성태3/19/201923359Linux: 8. C# - 리눅스 환경에서 DllImport 대신 라이브러리 동적 로드 처리 [2]
11850정성태3/18/201922378.NET Framework: 813. C# async 메서드에서 out/ref/in 유형의 인자를 사용하지 못하는 이유
11849정성태3/18/201921773.NET Framework: 812. pscp.exe 기능을 C#으로 제어하는 방법파일 다운로드1
11848정성태3/17/201918494스크립트: 14. 윈도우 CMD - 파일이 변경된 경우 파일명을 변경해 복사하고 싶다면?
11847정성태3/17/201922961Linux: 7. 리눅스 C/C++ - 공유 라이브러리 동적 로딩 후 export 함수 사용 방법파일 다운로드1
11846정성태3/15/201921608Linux: 6. getenv, setenv가 언어/운영체제마다 호환이 안 되는 문제
11845정성태3/15/201921763Linux: 5. Linux 응용 프로그램의 (C++) so 의존성 줄이기(ReleaseMinDependency) [3]
11844정성태3/14/201923081개발 환경 구성: 434. Visual Studio 2019 - 리눅스 프로젝트를 이용한 공유/실행(so/out) 프로그램 개발 환경 설정 [1]파일 다운로드1
11843정성태3/14/201918036기타: 75. MSDN 웹 사이트를 기본으로 영문 페이지로 열고 싶다면?
11842정성태3/13/201916378개발 환경 구성: 433. 마이크로소프트의 CoreCLR 프로파일러 예제를 Visual Studio CMake로 빌드하는 방법 [1]파일 다운로드1
11841정성태3/13/201916695VS.NET IDE: 132. Visual Studio 2019 - CMake의 컴파일러를 기본 g++에서 clang++로 변경
11840정성태3/13/201918319오류 유형: 526. 윈도우 10 Ubuntu App 환경에서는 USB 외장 하드 접근 불가
11839정성태3/12/201922231디버깅 기술: 124. .NET Core 웹 앱을 호스팅하는 Azure App Services의 프로세스 메모리 덤프 및 windbg 분석 개요 [3]
11838정성태3/7/201925861.NET Framework: 811. (번역글) .NET Internals Cookbook Part 1 - Exceptions, filters and corrupted processes [1]파일 다운로드1
11837정성태3/6/201939806기타: 74. 도서: 시작하세요! C# 7.3 프로그래밍 [10]
11836정성태3/5/201923376오류 유형: 525. Visual Studio 2019 Preview 4/RC - C# 8.0 Missing compiler required member 'System.Range..ctor' [1]
... 76  77  78  79  80  81  82  [83]  84  85  86  87  88  89  90  ...