개요
라즈베리파이 4B에 Ubuntu 22.04 Server를 올렸으며, 필요에 의해 라즈베리파이를 WIFI AP 모드로 만들어주어야 했다.
라즈베리파이 4B의 WIFI는 802.11ac(WIFI 5)로 동작한다.
따라서, WIFI를 802.11ac로 설정하기 위한 방법이 필요했으며, 구글링해보니 리눅스에서 hostapd 라는 패키지(?)를 사용해 간단하게 내장된 WIFI를 AP 모드로 셋팅해 줄 수 있었다.
따라서, 본 페이지에서는 Ubuntu 22.04 Server CLI 환경에서 WIFI를 AP 모드로 설정하는 방법에 대해서 알아본다.
자세히는 802.11ac(WIFI 5)와 802.11n(WIFI 4)로 AP를 설정하는 방법을 알아볼 것이다.
추가적으로 본 페이지에서는 hostapd라는 리눅스 프로그램을 사용하여서 WIFI를 AP 모드로 변환하기 위한 과정만을 설명한다. 다시 말해, Dynamic IP 부여를 위한 DHCP 설정 방법은 다루지 않는다. 즉, 본 내용을 통해서 Layer 2간의 연결을 수행할 순 있지만 Layer 3간의 연결은 Static IP를 통해서만 진행할 수 있다는 것이다.
hostapd 설치
hostapd는 C++ QT로 작성된 응용 프로그램이다. 이 프로그램은 일반 PC에서 표준 WIFI AP를 쉽게 구성할 수 있도록 지원해준다. 또한, 이 프로그램은 완전히 무료이며 오픈 소스로 제공되고 있다.
hostapd를 설치하기 위한 방법은 아래와 같다.
# hostapd 설치
$ sudo apt-get install hostapd
hostapd는 직접 hostapd 명령으로 WIFI를 AP 모드로 실행시킬 수 있으며
또한, hostapd 데몬을 통해 WIFI를 AP 모드로 실행시킬 수 있다.
hostapd 실행
- hostapd 데몬 모드
hostapd를 데몬 모드로 실행하기 위해서는 hostapd의 설정 파일에 데몬이 실행되기 위해 사용할 AP 설정 파일의 경로를 등록해주어야 한다.
# hostapd 설정 파일 수정
$ sudo vi /etc/default/hostapd
# hostapd 데몬이 참조할 WIFI AP 설정 파일 경로를 DAEMON_CONF에 작성
--- vi ---
DAEMON_CONF="/etc/hostapd/hostapd.conf"
----------
:wq
# WIFI AP의 설정 파일 생성
$ sudo vi /etc/hostapd/hostapd.conf
AP 설정 파일(/etc/hostapd/hostapd.conf)에 들어갈 내용은 WIFI 버전(4=802.11n, 5=802.11ac)에 따라 다르게 작성되어야 하며, 이 내용은 본 페이지 아래 부분에 작성해두었으니 참조하면 된다.
hostapd.conf에는 AP로 사용할 WIFI 인터페이스를 작성하고 해당 인터페이스에서 지원하는 여러가지 기능들을 On/Off 하는 내용이 들어간다.
# hostapd 데몬 등록
$ sudo systemctl unmask hostapd
$ sudo systemctl enable hostapd
$ sudo systemctl start hostapd
# hostapd 데몬이 잘 등록되었는지 확인
$ sudo systemctl status hostapd
hostapd 데몬이 참조할 WIFI AP 설정 파일을 생성하고 경로를 등록하였다면, 위 명령을 통해 hostapd 데몬을 시스템 상에 등록해주면 된다.
- hostapd 일반 모드
hostapd는 데몬 모드뿐만 아닌 hostapd 명령을 통해서도 WIFI를 AP 모드로 사용할 수 있게 지원해준다.
# hostapd 실행 명령
# -dd 옵션은 디버깅 모드
$ sudo hostapd -dd hostapd.conf
위 명령을 통해 WIFI를 AP 모드로 설정해줄 수 있다.
hostapd.conf에는 AP로 사용할 WIFI 인터페이스를 작성하고 해당 인터페이스에서 지원하는 여러가지 기능들을 On/Off 하는 내용이 들어간다.
- 802.11n 설정 (hostapd.conf 내용)
interface=wlan0
driver=nl80211
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ssid=WIFI_AP_SSID
wpa_passphrase=WIFI_AP_PW
country_code=US
# 802.11n은 5GHz도 지원함으로 hw_mode=a로 또한 설정 가능
hw_mode=g
channel=7
ieee80211n=1
require_ht=1
- 802.11ac 설정 (hostapd.conf 내용)
interface=wlan0
driver=nl80211
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ssid=WIFI_AP_SSID
wpa_passphrase=WIFI_AP_PW
country_code=US
hw_mode=a
channel=165
# 802.11n & 802.11ac & HT & VHT를 모두 Enable 해야 속도가 올라감
ieee80211n=1
require_ht=1
ieee80211ac=1
require_vht=1
파일 내용의 가장 아래 부분에 hw_mode나 channel, ieee80211ac, ieee80211a, require_ht, require_vht 등에 대한 내용은 아래 관련 링크를 참조하면 된다.
관련 링크 : https://android.googlesource.com/platform/external/wpa_supplicant_8/+/master/hostapd/hostapd.conf
channel을 작성해주지 않으면, 자동적으로 검색해서 특정 무선 채널을 할당해준다고 위 링크에 설명되어 있으나,
실험해보니 에러가 발생하였으며, 직접적으로 특정 무선 채널 영역 번호를 작성해주었어야 했다.
WIFI의 사용가능한 channel 영역을 검색하기 위해서는 아래 과정을 따르면 된다.
$ sudo iw list
해당 명령을 실행시키면, 무선 인터페이스가 지원하는 WIFI 채널 영역과 번호가 출력되며 그 내용을 참조하여서 위 hostapd.conf 파일의 channel에 값을 적절하게 할당해주면 된다.
위 캡처본은 필자의 컴퓨터에서 iw list를 실행시킨 결과이다.
결과를 보면, 필자의 컴퓨터에 부착되어있는 WIFI 인터페이스는 2.4GHz 대역에서 사용가능한 채널 번호는 1~13번임을 확인할 수 있으며 14번은 사용하지 못하는 상태임을 알 수 있다.
References
https://www.udoo.org/forum/threads/creating-a-wireless-access-point.751/
https://m.blog.naver.com/love_tolty/222668394306
https://askubuntu.com/questions/1441072/ubuntu-server-22-04-how-to-create-wifi-access-point
https://android.googlesource.com/platform/external/wpa_supplicant_8/+/master/hostapd/hostapd.conf
https://forum.openwrt.org/t/5g-problem-with-hostapd-acs-failed-to-compute-ideal-channel/53013
https://android.googlesource.com/platform/external/wpa_supplicant_8/+/master/hostapd/hostapd.conf
https://limjunho.github.io/2020/08/25/Raspberry-Pi-AP%EB%A7%8C%EB%93%A4%EA%B8%B0.html
'Linux' 카테고리의 다른 글
tmux 유용한 명령어 (0) | 2024.06.26 |
---|---|
포트 번호 기반 IP 라우팅 (port-based routing using ip and iptables) in Linux (0) | 2024.03.30 |
Ubuntu 22.04 Server(CLI) WIFI 연결 방법 (1) | 2024.02.26 |
[vim] 초기 설정 (0) | 2024.02.15 |
Ubuntu 22.04 커널 컴파일 방법 (1) | 2024.01.22 |