대부도 여행

2012년 하계 워크샵때 찍은 사진들 입니다.

 

 

 

 

 

 

 

 

 

 

[펌] [Wi-Fi] 무선랜 소개

오늘날 무선 인터넷(Data Service)을 위해 가장 많이 사용되고 있는 기술은 LTE/WiBro/3G가 아닌 바로 "무선랜" (= Wi-Fi = Wireless LAN) 입니다. 왜 그럴까요? 그건 LTE/WiBro/3G등은 사업자가 그 망을 구축하기 위해서는 "매우 매우" 많은 돈이 드는 반면 무선랜은 아주 쌉니다. 그래서 오늘은 무선랜에 대한 표준 이야기와 기본 용어에 대해서 설명드리겠습니다. 본 내용은 무선랜에 대한 공부를 시작하시는 분들에게 큰 틀을 보여 드리기 위함이고, 이후 각 기술부분에 대한 상세 설명은 이후에 차차 소개해 드릴께요.


일단 "Wi-Fi"와 "Wireless LAN"의 용어의 차이는 뭘까요? 이를 이해하기 위해서는 무선랜 표준 기관에 대한 이해가 필요한데요.

  • IEEE: IEEE 802.11 Working Group에서 "Wireless LAN"이란 용어를 사용하였고, 이 표준에서는 주로 무선랜(무선 구간)에 대한 MAC과 PHY 계층을 주로 다루고 있습니다. (http://www.ieee802.org/11/)
  • Wi-Fi Alliance: 벤더(무선랜 제조사 및 통신사업자)를 중심으로한 비영리 단체이며 여기서 "Wi-Fi"란 용어를 사용하였고, 본 단체에서는 IEEE 802.11 무선 기술을 이용하여 사용자에게 Wi-Fi 서비스를 제공키 위한 전체적인 네트워크 구조 정의와 장비 인증(장비가 시장에 나오기 전에 받는 인증 딱지) 발급을 하고 있습니다. 우리나라도 올 9월부터 TTA에서 이 Wi-Fi 장비 인증(Certificate)을 하고 있다고 들었습니다. (http://www.wi-fi.org)

그래서 Wi-Fi와 Wireless LAN은 그 용어를 정의한 단체의 차이가 있다고 보시면 되고, 편하게 "무선랜"="Wi-Fi"="Wireless LAN"이라 생각하시면 될 것 같습니다. (보통은 Wi-Fi란 단어를 많이 사용하지요)


이제 IEEE와 Wi-Fi Alliance를 섞어서 무선랜에서 다루는 기술용어를 살펴 보도록 하겠습니다. 설명에 앞서 아래 그림의 Wi-Fi network element를 먼저 살펴 보면,

  • STA(Station): IEEE 802.11 용어이며, 그냥 Wi-Fi 단말(Wi-Fi interface를 가진 단말)이라고 보시면 됩니다.
  • AP(Access Point): STA와 무선으로 연결되는 장비입니다. (AP란 단어는 다들 익숙하시죠?)
  • AAA: STA(단말)를 인증해 주는 서버입니다.
  • Home AAA: 만약 Wi-Fi 로밍을 하게 되는 경우(현재 KT, SKT에서 모두 제공), 인증은 Home AAA에서 받게 됩니다. 예를 들어, KT Wi-Fi 로밍 서비스를 받고 있는 제가 미국으로 출장을 갔습니다. 그리고 미국에서 KT와 로밍 제휴된 AP에 접속을 하게 되면 저에 대한 인증은 KT AAA(그림에서 Home AAA)에서 받게 됩니다.



그림의 밑에부터 설명드릴께요.
PHY & MAC
IEEE에서는 802.11a, b, g, n등의 표준을 통해 무선구간의 기능(쉽게 얘기하면 "대역폭")을 향상시키고 있습니다. 예를 들어, 최근의 표준인 802.11n은 600Mbps의 속도를 제공합니다. 현재 시중에 있는 무선랜 단말(노트북, 스마트폰, 패드류 등)은 보통 802.11b/g/n을 지원합니다. 물론 AP도 이 표준들을 지원하고 있겠죠...

Authentication & Security
사용자 인증과 무선구간의 암호화에 대한 이야기인데요.
먼저 IEEE에서는 802.1x라는 표준을 통해
  • 단말과 L2 스위치간에 EAP 프로토콜(정확히는 EAPoL: EAP over LAN)을 사용하여 사용자 credential(예. 사용자 ID/PW)을 L2 스위치로 전달하고,
  • L2 스위치와 AAA간에 RADIUS 프로토콜을 사용하여 사용자 credential을 AAA에 보내어 사용자 인증을 하게 하자.

고 정의하였습니다(여기서 EAP와 RADIUS 프로토콜은 IETF RFC 표준임). 이 표준은 무선랜을 위한 인증 표준은 아니고 출발은 유선랜의 인증 방식을 위한 것이었는데(그래서 위의 설명을 L2 스위치로 함), 이 표준을 802.11에서 가져 왔습니다. 그래서 802.11에서는 "802.1x 기반의 인증"(= "EAP 기반의 인증")을 가입자 인증 방식으로 사용하였습니다(EAP 기반 인증에는 EAP-TLS, EAP-TTLS, EAP-AKA 등등 그 방법이 다양함). 그리고 무선 구간의 암호화 방식으로는 WEP를 정의하였습니다. 그런데 다들 들어 보셨겠지만 WEP는 보안에 매우 취약한 문제가 있어 다들 사용하지 말라고들 하지요.

한편 IEEE에서 표준화를 진행하고 있는 동안, Wi-Fi Alliance도 열심히 뭔가(WPA & WPA2)를 만들어 가고 있었습니다. 이 WPA & WPA2에서는 인증 방식은 IEEE에서 정의한 802.1x 기반의 인증을 그대로 사용하되 WEP는 문제가 많으니 다른 방식의 무선구간 암호화 방식을 정의하였고 이것이 TKIP(WPA)와 CCMP(WPA2) 입니다.

그런 후 IEEE에서는 Wi-Fi Alliance에서 정의한 WPA와 WPA2 방식을 자신의 표준에서 받아 들이게 되었고, 그 표준이 IEEE 802.11i입니다.


인증과 암호화 방식을 간단히 얘기하면 다음과 같습니다.

"인증을 위해 Wi-Fi 단말과 AP 사이는 EAP 프로토콜(=802.1x 프로토콜)을 사용하고, AP와 AAA 사이는 RADIUS 프로토콜을 사용한다. 그래서 단말의 인증 요청은 AP를 거쳐 AAA로 전달되고, AAA가 단말 인증을 한다"

"Wi-Fi 단말과 AP 사이의 무선 구간의 암호화는 WEP, TKIP(WPA), CCMP(WPA2) 방식이 있으며, WEP는 안쓰는 것이 좋다"


Authentication for Roaming Case

자 이제 로밍(KT 가입자가 미국에 출장가서 Wi-Fi 사용)입니다. 로밍 규격은 IEEE와는 별 관계가 없구요. 주로 Wi-Fi Alliance의 산하기관인 WBA(Wireless Broadband Alliance)에서 정의하고 있습니다.
일단 가입자 인증 부분인데요. EAP 기반의 인증은 EAP-TLS, EAP-TTLS, EAP-AKA, EAP-SIM 등등 매우 다양한 방식이 존재하고 각 통신사업자마다 자기들 정책에 맞는 걸 사용하고 있습니다. 즉, 이렇게 EAP 기반의 서로 다른 인증 방식으로 사용하고 있는 상황에서 어떻게 로밍 유저가 인증을 간단한 구조로 받을 수 있게 할까? 고민하던 WBA에서는 UAM(Universal Access Method)이라는 걸 정의하였는데요. 이 표준이 WISPr 1.0/2.0 입니다. 별건 아니구요. 로밍에 대해서는 "EAP 같은거 사용하지 말고, HTTP를 지원만 하면 인증을 받을 수 있는 방법을 정의하자!"입니다. 그래서 이 방식의 경우, KT 가입자가 미국에 가는 경우, EAP 기반의 인증이 아닌 자신의 ID/PW를 HTTPS에 실어서 미국 Wi-Fi AP로 보내면, 이 AP는 가입자의 ID를 보고(ID는 username@domain으로 구성이 되어 있어 domain을 보면 어떤 나라 사업자인지 알 수 있음. 예를 들어, cmyoo@kt.com) KT AAA(Home AAA)로 RADIUS 메시지를 릴레이 하게 되는 것입니다. 이때 각 사업자간의 AAA 연동 규격도 WBA에서 정의하였는데 이것이 WRIX-i 입니다.

[펌] wpa_supplicant를 사용한 무선랜 사용 ( WPAPSK 무선 보안 방식 / AES 암호화 )

필요한 소프트웨어
wireless-tools, wpa_supplicant, dhcpcd


iwconfig명령으로 사용 가능한 무선랜 카드 장치 이름 확인할 수 있다. wlan0이 무선 랜카드 임을 알 수 있다.
$ iwconfig
lo no wireless extensions.

wlan0 IEEE 802.11bgn Mode:Managed Access Point: Not-Associated
Tx-Power=0 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off

sit0 no wireless extensions.

eth0 no wireless extensions.
유선 랜 장치를 비활성화하고 무선 랜 장치를 활성화 한다.
$ ifconfig eth0 down
$ ifconfig wlan0 up


연결 가능한 무선 공유기의 ssid 이름 및 무선 보안 여부를 확인해야 함.
$ iwlist wlan0 scanning
.......................
Encryption key:on <-- 무선 보안 사용 중임
ESSID:"ssid_name" <-- ssid 이름
.......................
IE: WPA Version 1 <-- 무선 보안 정보
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
.......................


wpa_supplicant 명령을 사용하려면 wpa_supplicant.conf가 필요하다.
이를 위해 우선 psk키를 생성한다.

$ wpa_passphrase ssid_name > /etc/wpa_supplicant/wpa_supplicant.conf
password 입력 후 엔터


입력한 password가 psk로 바꿔어 진 것을 확인 할 수 있다.
$ cat /etc/wpa_supplicant/wpa_supplicant.conf
# reading passphrase from stdin
network={
ssid="ssid_name"
#psk="입력한 password"
psk="생성된 psk"
}

생성된 파일 wpa_supplicant.conf 에 추가 정보를 입력한다.
# reading passphrase from stdin
network={
ssid="ssid_name"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk="생성된 psk"
}

ssid가 ssid_name인 공유기에 연결한다
$ iwconfig wlan0 essid "ssid_name"
$ wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf &

[1] 1920
CTRL-EVENT-SCAN-RESULTS
Trying to associate with 00:00:00:00:00:00 (SSID='ssid_name' freq=2412 MHz)
Associated with 00:00:00:00:00:00
WPA: Key negotiation completed with 00:00:00:00:00:00 [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=0 id_str=]

ip를 dhcp로 할당 받는다
$ dhcpcd wlan0 &
[2] 1923
wlan0: dhcpcd 4.0.15 starting
wlan0: broadcasting for a lease
wlan0: offered 192.168.0.2 from 192.168.0.1
wlan0: acknowledged 192.168.0.2 from 192.168.0.1
wlan0: checking 192.168.0.2 is available on attached networks
wlan0: leased 192.168.0.2 for 864000 seconds

또는 수동으로 ip를 설정하려면
$ ifconfig wlan0 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255
$ route add default gw 192.168.0.1 wlan0
$ echo nameserver 192.168.0.1 > /etc/resolv.conf <--DNS 서버 설정

인터넷 사용가능 여부 테스트
$ ping google.com
PING google.com (74.125.127.147) 56(84) bytes of data.
64 bytes from pz-in-f147.1e100.net (74.125.127.147): icmp_seq=1 ttl=48 time=135 ms



참고

Wireless LAN with WPA (AES)
Return top

"그리움..."

no comment. yet