서버/리눅스 서버

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

ㅋㅋ잠자 2022. 8. 15. 05:09
반응형

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

 

이게 실은 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 부분이 되는지도 체크를 해봐야겠네요.

 

마치겠습니다.

감사합니다.

반응형