현재(2014/11/6) 최신 버전인 hostapd-2.3 을 사용하여 여러가지 설정을 통해 AP 를 만드는 방법에 대해 설명한다.
여기서 사용하는 H/W 와 S/W 는 SDIO 8897 칩이다. 참고로 타겟은 PC 이며, 레퍼런스 형태의 SDIO 보드를 PC 에 꼽아 사용하였다.

hostapd 빌드하기

hostapd 의 최신버전은 http://w1.fi/hostapd/ 에서 받을 수 있다.
wpa_supplicant 와 마찬가지로 hostapd 는 많은 기능들을 지원한다. 자신에게 필요한 기능들만 선택하여 컴파일 할 수 있다. 기본적으로 hostapd/defconfig 파일을 사용하는데, 나의 경우 아래의 .config 파일을 사용하였다.

config 파일을 참고하자. 빌드하면, hostapd, hostapd_cli 바이너리 파일이 생성된다.

hostapd 실행하기

이제 hostapd 를 사용하여 AP 를 만들어보자.
여기서 필요한 설정 파일(hostapd.conf)을 작성하고, 실행 시 이를 적어주어야 한다.
어떻게 작성하는가에 따라 생성될 AP 의 설정이 달라진다.

설정 파일(hostapd.conf)을 아래와 같이 작성한다.

interface=uap0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ssid=UAP-WWW
hw_mode=g
channel=11
beacon_int=100
device_name=WirelessAP
interface=uap0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ssid=UAP-WWW
hw_mode=g
channel=11
beacon_int=100
auth_algs=2
wep_default_key=0
wep_key0="12345"
device_name=WirelessAP
interface=uap0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ssid=UAP-WWW
hw_mode=g
channel=11
beacon_int=100
auth_algs=1
wpa=3
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
device_name=WirelessAP

설정 파일(hostapd.conf)을 아래와 같이 작성한다.

interface=uap0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ssid=UAP-WWW
hw_mode=g
channel=11
beacon_int=100
auth_algs=1
wpa=3
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
device_name=WirelessAP
eap_server=1
wps_state=2
ap_setup_locked=1
uuid=87654321-9abc-def0-1234-56789abc0000
wps_pin_requests=/var/run/hostapd.pin-req
manufacturer=mrvl
model_name=WAP
model_number=123
serial_number=12345
device_type=6-0050F204-1
os_version=01020300
config_methods=label display push_button keypad

그리고 hostapd 를 실행한다.

#./hostapd ./hostapd.conf -d &
#./hostapd_cli -i uap0 -p /var/run/hostapd
 
>wps_pbc                             //  connect to AP by WPS PBC

STA 상에서 WPS PBC 접속 시도를 한다. 이후 접속이 완료된다.

아래와 같이 hostapd.conf 파일을 작성한다.

interface=uap0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ssid=UAP-WWW
hw_mode=g
channel=11
beacon_int=100
auth_algs=1
wpa=3
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
device_name=WirelessAP
eap_server=1
wps_state=2
ap_setup_locked=1
uuid=87654321-9abc-def0-1234-56789abc0000
wps_pin_requests=/var/run/hostapd.pin-req
manufacturer=mrvl
model_name=WAP
model_number=123
serial_number=12345
device_type=6-0050F204-1
os_version=01020300
config_methods=label display push_button keypad

아래와 같이 실행하자.

#./hostapd ./hostapd.conf -ddd &

휴대폰에서 출력된 PIN 번호(예를들어 12345670)를 입력한다.
다른 터미널 창을 열어 아래와 같이 실행한다.

#./hostapd_cli -i uap0 -p /var/run/hostapd
>wps_pin any 12345670

접속될 것이다.

다른 터미널 창을 열어 아래와 같이 실행한다.

#./hostapd_cli -i uap0 -p /var/run/hostapd
>

그리고 STA 에서 아래와 같이 실행한다.

#wps_cli
>wps_pin 00:50:43:21:8a:37 12345670            // 00:50:43:21:8a:37 는 AP 의 MAC 주소

그럼 STA 에서 AP 쪽으로 접속 시도를 한다. 그때, AP 터미널 창에는 아래와 비슷한 메세지가 출력된다.

<3>WPS-PIN-NEEDED 867ae626-40cb-5c01-a764-1d07e10a7a3e 5c:51:4f:2f:b5:d4 [ | | | | | 0-00000000-0]
...

여기서 아래와 같이 AP 쪽에서 입력한다.

>wps_pin 867ae626-40cb-5c01-a764-1d07e10a7a3e 12345670
OK

이제 STA 쪽에서 아래와 같이 입력한다.

>wps_pin any 12345670

접속이 된다.
앞서 실행한 작업의 순서를 보자면,

  1. STA 에서 AP 쪽으로 접속 시도한다.
  2. AT 에서 이를 감지하여 STA 의 UUID 와 PIN 번호를 등록한다(이때 감지한 AP 의 정보는 /var/run/hostapd.pin-req 파일에 저장된다)
  3. STA 에서 PIN 접속을 시도한다.
  4. 접속완료

이렇다.
PBC 와 PIN 이 다른점이 있다면, PBC 는 접속시 SSID 를 별도로 지정하지 않지만, PIN 은 SSID 를 별도로 지정하지만 않으면(any 로 하면), 순차적으로 AP 마다 접속시도를 한다.

  • computer/technology/hostapd_핵심가이드.txt
  • Last modified: 3 years ago
  • by likewind