순간이 영원해 지는 곳

리눅스로 AP 만들기 (hostapd 설치) 본문

통신 & 네트워크

리눅스로 AP 만들기 (hostapd 설치)

nenunena 2011. 1. 3. 13:34


master mode를 지원하는 무선 랜카드가 있으면 리눅스에 hostapd를 설치하여 WiFi를 위한 AP(Access Point)를 만들 수 있다.

우분투 10-10 을 기준으로 했으나, 커널 버전(2.6.27 또는 그 이상)을 맞추고 설치해야하는 프로그램만 모두 설치하면 리눅스 종류에 상관없이 가능하다.

hostapd[http://w1.fi/hostapd/] 가 지원하는 무선랜카드 드라이버는 다음과 같다.

여기서 Linux mac80211 drivers 는 리눅스에서 제공하는 무선 랜카드 드라이버이다.

제일 먼저 확인해야 할 것은 자신의 무선 랜카드를 AP로 사용할 수 있는지 여부이다.
아래 웹페이지에는 Linux mac80211 drivers에서 지원하는 무선 랜카드와 AP로 동작할 수 있는지 여부를 알려주는 표가 있다.
http://wireless.kernel.org/en/users/Drivers

Atheros 나 Ralink 社의 제품이 AP 기능을 많이 지원한다. Intel 제품은 AP 기능을 지원하지 않는 것으로 보인다.

필자는 XNote 노트북 LE50 을 사용했으며, 장착된 무선랜카드는 Ralink rt2500pci 였다.

rt2x00 무선랜카드 드라이버는 별도로 개발된 것이 있었지만 필자는 따로 드라이버를 설치하진 않았다.
http://rt2x00.serialmonkey.com/wiki/index.php/Main_Page

무선랜을 사용할 수 있는지 확인해보고 드라이버가 설치되지 않았다면 드라이버를 설치한다.

어떤 드라이버를 사용하는지는 아래와 같은 명령어를 치고 Network controller 부분에 내용을 확인하면 된다[http://www.su-root.eu/computing/turn-your-linux-computer-in-a-wireless-access-point-using-hostapd].

lspci -k

필자의 경우, 명령어 실행 결과는 아래와 같았다.

08:02.0 Network controller: RaLink RT2500 802.11g (rev 01)
        Subsystem : Device 18e8:6146
        Kernel driver in use : rt2500pci
        Kernel modules: rt2500pci

hostapd 사용을 위해 여러 웹페이지를 참고 했는데 hostapd 외에 필수적으로 필요한 프로그램은 libnlbrctl 이고 동작 확인용으로 iw 까지 설치하면 되는 것으로 보인다.
처음엔 아래 링크에 설명된 것을 따라하다가 모든 프로그램을 설치하려고 했었다.
http://acx100.erley.org/git.html

우분투를 써보니 프로그램 설치가 너무나 간편하다.

네트워크가 연결된 상태에서
터미널에 sudo apt-get install [패키지명] 이나 sudo yum install [패키지명] 명령어를 입력하여 설치하거나
우분투 메뉴에 있는 "우분투 소프트웨어 센터" 에서 검색을 하면 프로그램이든 라이브러리든 간단하게 설치가 가능하다. 또 설치여부도 확인할 수 있다. 제거도 된다.

* libnl 설치

[http://acx100.erley.org/git.html]를 보면 libnl은 hostapd 가 kernel과 통신하기 위해 필요한 듯 하다.

"우분투 소프트웨어 센터" 에서 libnl 을 검색한 결과에서

development library and headers for libnl (libnl-dev)
library for dealing with netlink sockets (libnl1)
library for dealing with netlink sockets (libnl2)

를 설치했다. libnl1 은 기본설치된 상태였으며, libnl2, libnl-dev 를 추가로 설치했다.
libnl-dev 이 없으면 hostapd 를 make 할때 헤더파일 오류가 났던 것으로 기억한다.

* iw 설치

[http://acx100.erley.org/git.html]를 보면 iw는 hostapd 정상 작동 여부 및 인터페이스 카드 상태 확인에 필요한 것으로 보인다.

필자는 터미털에서 sudo apt-get install iw 를 입력하여 설치했다.

* brctl 설치

유선 인터페이스와 무선 인터페이스 간에 다리(bridge) 역할을 해주는 프로그램이다.

"우분투 소프트웨어 센터" 에서 bridge-utils 를 검색하면 나온다. brctl 검색하면 안 나오더라.

utilities for configuring the Linux Ethernet bridge (bridge-utils)

* OpenSSL 라이브러리 설치

hostapd 를 make 할때 헤더파일 오류가 나는 것을 방지하기 위해 필요하다. 보통 리눅스에 기본적으로 설치된다고 하는데, 설치가 되어 있지 않아 따로 설치 하였다.

필자는 sudo apt-get install libssl-dev 를 실행하여 설치했다.
"우분투 소프트웨어 센터" 에서도 설치할 수 있다.
SSL development libraries, header files and documentation (libssl-dev)

* hostapd 설치

나중에야 알았지만 sudo apt-get install hostapd 로 설치가 가능하다.
세부 설정이 어떻게 되는지는 모르지만..

여튼 필자는 hostapd 홈페이지[http://hostap.epitest.fi/hostapd/]에서 최신 안정 버전(hostapd-0.7.3.tar.gz)을 다운로드 받아서 make로 설치했다.

압축을 푼 폴더에 hostapd 디렉토리로 이동한다.
아래 명령을 실행한다.

cp defconfig .config

vi .config
또는
vim .config

.config 파일안에 주석으로 처리된 아래 행의 주석을 해제한다.
이것은 Linux mac80211 drivers 를 무선랜카드 드라이버로 사용하는 경우에 해당되는 것으로 보인다.
다른 드라이버를 사용하는 경우엔 설정방법이 달라질 수 있다.

CONFIG_DRIVER_NL80211=y

http://acx100.erley.org/git.html 에는 상황에 따라 설정해 줄것이 많지만
필자는 LIBNL 만 아래와 같이 지정했다.
LIBNL과 관련된 파일이 /usr과 /usr/lib에 있었기 때문이다.
(CFLAGS 와 LIBS 까지는 지정을 해주는 것이 맞을듯 하지만 make 가 성공했으므로 그냥 넘어간다. -_-ㅋ)

LIBNL=/usr

수정이 끝났으면 저장한 뒤, 같은 디렉토리에서 make 명령을 실행 (필자는 이 디렉토리에 Makefile이 존재했기 때문)
이렇게 make를 하면 해당 디렉토리에 hostapd 라는 실행파일이 생성된다.

* hostapd 설정 및 실행

같은 디렉토리에 hostapd.conf 파일을 편집한다.
아래 링크를 참조했으며, hostapd.conf 파일안에 주석으로 설명이 잘 되어 있다.
http://www.su-root.eu/computing/turn-your-linux-computer-in-a-wireless-access-point-using-hostapd
AP 동작 옵션을 설정하는 파일이며 필자는 아래와 같이 설정했다.

# 무선랜카드 인터페이스 지정
interface=wlan0

# bridge 지정
bridge=br0

# 무선랜카드 드라이버 지정
driver=nl80211

# AP 의 SSID 설정
ssid=linux_ap

# 동작 모드설정 a/b/g
hw_mode=g

# AP에서 사용할 채널 설정( 802.11에서 지원하는 무선 주파수 대역에 붙인 번호라고 보면 된다.)
channel=6

 기타 인증이나 암호화 설정은 변경하지 않았다.

이후 과정은 아래 링크를 참고하였다.
http://www.su-root.eu/computing/turn-your-linux-computer-in-a-wireless-access-point-using-hostapd

터미널에서 아래 명령어를 입력한다.
(network connection manager, DHCP 클라이언트 종료, 인터페이스 down)

/etc/rc.d/wicd stop
killall dhcpcd
ifconfig eth0 down
ifconfig wlan0 down

필자는 위에 명령어 중 아래 두 명령어만 실행되었다.

그 다음 su 상태에서 위에 링크대로 다음 명령어를 실행

su
echo 1 > /proc/sys/net/ipv4/ip_forward

그리고 인터페이스 브릿지에 연결할 인터페이스를 추가한다.(유선랜-브릿지-무선랜)
brctl setfd 명령은 브릿지의 forward dealy 를 설정하는 명령어 이다.[http://www.faqs.org/docs/Linux-HOWTO/BRIDGE-STP-HOWTO.html]

brctl addbr br0
brctl addif br0 eth0
brctl setfd br0 0

무선랜 인터페이스를 브릿지와 연결해야 하지만 master mode가 아니면 브릿지에 추가할 수가 없다.
(brctl addif br0 wlan0)

Linux mac80211 drivers (NL80211) 를 사용하는 경우엔 아래 명령어를 사용해 무선랜을 master mode로 변경할 수 없다.

iwconfig wlan0 mode Master

여러가지로 알아본 결과 NL80211 드라이버를 사용하는 경우,  무선랜의 master mode 변경과 bridge에 추가는 hosapd에서 처리해 준다고 한다. 따라서 우리가 master mode로 변경할 필요는 없다.

터미널에서 iw list 라고 쳤을 때 supported interface modes 에 AP가 존재하면 된다.

이제 hostapd를 실행해 보자.
아래는 생성위치를 지정하지 않고 make 를 실행한 경우이며, hostapd 디렉토리 안에서 실행해야 한다.

./hostapd -dd hostapd.conf

위와 같이 실행한 경우 AP에서 일어나는 이벤트가 화면에 출력된다.
무슨 의미인지는 잘 모르겠다. ㅎㅎ
백그라운드로 실행하기 위해서는 -dd 대신 -B 옵션을 주면 된다.

hostapd 가 동작중인 상태에서
iwconfig wlan0 명령을 실행하면 mode : Master 인 것을 확인할 수 있다.
brctl show 명령을 실행해보면 따로 추가하지 않았는데도 wlan0이 추가된 것을 확인할 수 있다.

그리고 down 시킨 인터페이스를 다시 up 시킨다.

ifconfig eth0 up
ifconfig br0 up

WiFi 장비로 AP를 검색해 보면 위에서 지정한 SSID의 AP를 확인할 수 있다.


바로 옆에 다른 노트북(Windows XP)을 이용해 접속해 본 결과, 매우 느리지만 자동으로 IP도 할당받고 인터넷도 되는 것을 확인할 수 있었다. 어? 그런데 Gateway까지 ping 을 날려보니 request time out이 자주 일어난다.

맥북으로 접소가니 느리진 않은데, AP 접속 직후엔 웹페이지가 금방 열리는데, 또 금방 AP와의 연결이 끊어지고 만다.

hostapd 디버깅 메시지를 보니 두 경우 모두 AP에 접속한 노트북쪽에서 deauthentication 요청을 날렸기 때문이었다.

우분투를 설치한 노트북으로 AP에 접속하니 아무 이상없이 잘 된다. ping도 잘 간다.

이건 더 알아봐야 할 듯 하다.





* 그 밖에 참고 링크

hostapd Linux documentation page
http://linuxwireless.org/en/users/Documentation/hostapd

rt2500 master mode and wireless-2.6[solved]
http://rt2x00.serialmonkey.com/phpBB/viewtopic.php?t=4404

리눅스와 무선 랜카드를 이용 무선 AP만들기......(시도중)
http://trick.textcube.com/21
 
[강좌] 유무선 공유기 제작: PCMCIA, HostAP, Bridge 설치
http://www.howto.pe.kr/zboard/zboard.php?id=lecture&page=8&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=reg_date&desc=asc&no=157

WLAN을 AP로 사용 해 보신 분계세요???
http://kldp.org/node/77554



'통신 & 네트워크' 카테고리의 다른 글

TCP delayed ACK time  (0) 2013.01.04
RTP, RTCP, RTSP 정리  (4) 2011.01.26
WFQ 동작 과정 (패킷 처리 예제)  (5) 2009.08.17
CSMA, CSMA/CD, CSMA/CA 정리  (31) 2009.08.16
패킷의 여행  (4) 2009.03.18
Comments