본문 바로가기
서버/리눅스 서버

Docker 컨테이너로 와이파이 AP 만들기 (Intel NUC J5005)

by ㅋㅋ잠자 2022. 8. 15.
728x90

안녕하세요? 도정진입니다.

 

이게 실은 hostapd 하려면 bridge 모드 말고는 만들기가 굉장히 불편합니다.

이전 글은 아래와 같습니다.

https://blog.djjproject.com/134

 

이에 따라 컨테이너로 좀 해보면 쉽지 않을까.. 해서 찾아보았는데 아래가 되네요.

 

바로 시작합니다.

 

1. wpa_supplicant 자동 시작 종료

일단은 wpa_supplicant 가 systemctl disable 해도 동작되는 문제가 있습니다. dbus 에 의해서 시작이 되는데요.

이를 mask 처리해서 죽여야합니다. 컨테이너의 hostapd 와 같이 동작하면 짜부가 나서 죽는 경우가 있습니다.

root@debian:~# systemctl disable wpa_supplicant.service
root@debian:~# systemctl mask wpa_supplicant.service

설정하고 리부팅을 해줍니다.

root@debian:~# reboot

wpa_supplicant 가 도는지 확인을 해봅니다.

root@debian:~# ps -ef | grep wpa_su
root     15374  1091  0 05:02 pts/1    00:00:00 grep wpa_su

 

2. 컨테이너 실행

일단은 wifi 가 뭔지 찾아봅니다.

root@debian:~# ifconfig
vmbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.17  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::1e69:7aff:fe09:6d01  prefixlen 64  scopeid 0x20<link>
        ether 1c:69:7a:09:6d:01  txqueuelen 1000  (Ethernet)
        RX packets 399266  bytes 423619330 (403.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 183037  bytes 25617915 (24.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlo2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.254.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 50:76:af:ac:0e:6d  txqueuelen 1000  (Ethernet)
        RX packets 30518  bytes 3376887 (3.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 254997  bytes 330818390 (315.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

proxmox 를 사용하기 때문에 이더넷이 enp2s0 등의 이름이 아니네요. vmbr0 이더넷이고 wlo2 가 와이파이 입니다.

아래와 같이 컨테이너를 실행합니다.

root@debian:~# docker run --restart unless-stopped -dit --name wifiap \
-e INTERFACE=wlo2 \
-e OUTGOINGS=vmbr0 \
--net host --privileged offlinehacker/docker-ap

 

3. 와이파이 설정 수정

일단은 이 컨테이너는 env 로 설정을 주면 잘 동작하지만, 일단은 귀찮아서 아래와 같이 수정을 합니다.

root@debian:/opt/wifiap# docker cp wifiap:/etc/hostapd.conf hostapd.conf

root@debian:/opt/wifiap# cat hostapd.conf
interface=wlo2
driver=nl80211
ssid=j5005
hw_mode=g
channel=1
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
wpa_ptk_rekey=600
ieee80211n=1
wmm_enabled=1

ac 모드나 a 모드가 지원되는지 테스트를 해보니 잘 안되네요.

그래서 그냥 2.4G 모드의 20MHz 로 설정을 하였습니다. 아마도 이 AC 와이파이를 하려면 hostapd 를 재컴파일 해야하고 j5005 의 와이파이 드라이버 iwlwifi 도 지원을 해야할 것입니다.

 

설정값을 다시 넣어줍니다.

root@debian:~# docker cp /opt/wifiap/hostapd.conf wifiap:/etc/hostapd.conf
root@debian:~# docker restart wifiap
wifiap

 

4. 동작 체크

로그를 먼저 확인합니다.

root@debian:~# docker logs -f wifiap --tail 20
1
Setting iptables for outgoing traffics on vmbr0...
Configuring DHCP server ..
Starting DHCP server ..
Internet Systems Consortium DHCP Server 4.4.2
Copyright 2004-2020 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /run/dhcp/dhcpd.pid
Wrote 1 leases to leases file.
Listening on LPF/wlo2/50:76:af:ac:0e:6d/192.168.254.0/24
Sending on   LPF/wlo2/50:76:af:ac:0e:6d/192.168.254.0/24
Sending on   Socket/fallback/fallback-net
Starting HostAP daemon ...
Configuration file: /etc/hostapd.conf
Using interface wlo2 with hwaddr 50:76:af:ac:0e:6d and ssid "j5005"
wlo2: interface state UNINITIALIZED->ENABLED
wlo2: AP-ENABLED

연결을 시도하면 아래와 같이 로그가 추가적으로 뜹니다.

wlo2: AP-STA-CONNECTED ce:9f:46:74:fa:86
wlo2: STA ce:9f:46:74:fa:86 RADIUS: starting accounting session B377C5A131088FA1
wlo2: STA ce:9f:46:74:fa:86 WPA: pairwise key handshake completed (RSN)

 

5. 속도 측정

J5005 의 내장 안테나와 신발장에 둔 덕분인지 속도가 처참하네요.. ㅎㅎ

 

 

기회가 된다면 WIFI 5GHz 부분이 되는지도 체크를 해봐야겠네요.

 

마치겠습니다.

감사합니다.

728x90

댓글0