리눅스서버(ubuntu)에서 와이파이 서비스가 안될때
1. 무선 랜카드가 AP 모드를 지원하는지 확인
AP 모드가 안 되면, 핫스팟처럼 사용 불가합니다.
iw list | grep -A 10 "Supported interface modes"
여기서 AP 라는 라인이 있어야 해요:
Supported interface modes:
* IBSS
* managed
* AP
AP가 없으면, 해당 무선랜카드로는 와이파이 핫스팟 불가능합니다. USB Wi-Fi 동글 중에도 안 되는 모델 꽤 있어요.
2. NetworkManager로 핫스팟 설정
GUI 환경이 있다면 간단하게 설정할 수 있고, CLI 환경이면 nmcli 명령어로 설정할 수 있습니다.
CLI로 핫스팟 만들기:
nmcli dev wifi hotspot ifname wlan0 ssid MyHotspot password "12345678"
wlan0는 실제 무선 인터페이스 이름으로 바꿔야 해요 (ip a로 확인 가능)- SSID는 네트워크 이름
- password는 8자 이상이어야 함
실행 후 핫스팟이 잘 잡히면, 휴대폰에서
MyHotspot이름으로 보일 거예요.
3. ufw 방화벽 확인 (있는 경우)
sudo ufw status
필요하다면, 포트 허용:
sudo ufw allow 53,67,68,80,443,5353/udp
4. DNS 및 DHCP 서비스 동작 여부 확인
핫스팟 동작 시, DHCP 서버가 없으면 클라이언트가 IP를 못 받아요.
NetworkManager를 쓰면 자동으로 dnsmasq 등을 통해 DHCP도 같이 돌지만, 수동 설정 시에는 hostapd, dnsmasq 설정이 필요합니다.
===========================================================
4: wlp3s0: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 3c:c5:dd:02:63:66 brd ff:ff:ff:ff:ff:ff
===========================================================
나의 미니pc에서 ip link 영령어 실행결과의 내용 중,
위의 내용을 볼 때 무선인터페이스의 이름은 wlp3s0이고 현재 Down 상태라서 지금은 꺼져 있는 상태이고, 이 상태에서는 와이파이 수신도 송신도 안됨.
1단계 : 무선랜 인터페이스 활성화
sudo ip link set wlp3s0 up
상태 확인: ip link show wlp3s0
2단계 : 핫스팟 생성
nmcli dev wifi hotspot ifname wlp3s0 ssid MyHotspot password “12345678”
- 이 명령어가 성공하면, 휴대폰에서 myhotspot이라는 와이파이가 보여야 함
- 명령어가 실행 안되면 NetworkManager가 설치되어 있는지 확인
- which nmcli
===> 설치 안되어 있으면 설치: sudo apt install network-manager
===> iw 명령어도 안되면 설치: sudo apt install iw
와이파이 상태 확인: nmcli connection show
방화벽(UFW)을 다시 켰더니 또 와이파이 연결만 되고 인터넷이 안 되는 현상이 있을때
이건 흔하게 발생하는 문제인데, 원인은 다음과 같다
🎯 원인 요약
핫스팟 모드에서는 노트북(미니 PC)이 라우터 역할을 해야 하기 때문에:
- IP 할당 (DHCP) 👉 이미 해결
- 트래픽 전달 (NAT) 👉 인터넷 공유
- 방화벽이 이를 차단하면 👉 폰은 연결되지만 인터넷이 안됨
✅ 해결: UFW에서 NAT 및 포워딩 허용
아래 순서대로 설정해주면 됩니다.
🔧 1. IP 포워딩 활성화
sudo nano /etc/sysctl.conf
다음 줄 추가 또는 주석 해제:
net.ipv4.ip_forward=1
적용:
sudo sysctl -p
🔧 2. UFW에 NAT 설정 추가
bash복사편집sudo nano /etc/ufw/before.rules
*filter보다 위쪽에 다음 블록 추가:
*nat
:POSTROUTING ACCEPT [0:0]
# NAT for hotspot
-A POSTROUTING -s 10.42.0.0/24 -o [인터넷인터페이스] -j MASQUERADE
COMMIT
여기서 [인터넷인터페이스]는 유선인터넷이 되는 인터페이스 이름이에요. 예: enp2s0
👉 확인:
ip route | grep default
예: default via ... dev enp2s0
🔧 3. UFW 포워딩 허용
sudo nano /etc/default/ufw
이 줄을:
DEFAULT_FORWARD_POLICY="DROP"
➡️ 이렇게 바꿔주세요:
DEFAULT_FORWARD_POLICY="ACCEPT"
🔧 4. UFW에서 필요한 포트 열기
sudo ufw allow 67/udp # DHCP
sudo ufw allow 68/udp
sudo ufw allow 53/udp # DNS
sudo ufw allow 53/tcp
sudo ufw allow in on wlp3s0
sudo ufw allow out on wlp3s0
🔄 5. UFW 재시작
sudo ufw disable
sudo ufw enable
✅ 완료 후 확인
- 서버 재부팅 또는 UFW 재시작
- 폰에서 연결 시도 → 인터넷 가능 여부 확인
<<필요할 때만 와이파이 켜는 스크립트>>
🧾 1. 핫스팟 실행 스크립트 만들기
sudo nano /usr/local/bin/start-hotspot.sh
내용 붙여넣기👇
#!/bin/bash
# 무선 인터페이스
IFACE="wlp3s0"
SSID="MyHotspot"
PASSWORD="12345678"
# 로그 파일
LOGFILE="/var/log/wifi-hotspot.log"
echo "[$(date)] Starting Wi-Fi hotspot..." >> "$LOGFILE"
/usr/bin/nmcli dev wifi hotspot ifname "$IFACE" ssid "$SSID" password "$PASSWORD" >> "$LOGFILE" 2>&1
저장 후 닫기.
✅ 실행 권한 부여
sudo chmod +x /usr/local/bin/start-hotspot.sh
⚙️ 2. systemd 서비스 등록
bash복사편집sudo nano /etc/systemd/system/wifi-hotspot.service
아래 내용 붙여넣기👇
[Unit]
Description=Start Wi-Fi Hotspot at boot
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/start-hotspot.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
저장하고 닫기.
🟢 3. 서비스 활성화 및 테스트
sudo systemctl daemon-reload
sudo systemctl enable wifi-hotspot.service
sudo systemctl start wifi-hotspot.service
로그 확인
bash복사편집cat /var/log/wifi-hotspot.log
🔁 재부팅 후 확인
- 서버 재부팅:
sudo reboot - 재부팅 후 핫스팟 자동 실행되는지 확인
- 폰에서 SSID (
MyHotspot) 보이는지 테스트
<<사용하지 않을 때 와이파이 끄는 스크립트>>
📜 스크립트: stop-hotspot.sh
sudo nano /usr/local/bin/stop-hotspot.sh
다음 내용 붙여넣기:
#!/bin/bash
# 무선랜 이름
IFACE="wlp3s0"
# 로그 파일
LOGFILE="/var/log/wifi-hotspot.log"
echo "[$(date)] Stopping Wi-Fi hotspot..." >> "$LOGFILE"
# Hotspot 연결 해제
/usr/bin/nmcli connection down Hotspot >> "$LOGFILE" 2>&1
# 인터페이스 상태를 끄기로 전환
/sbin/ip link set "$IFACE" down >> "$LOGFILE" 2>&1
⛓️ 실행 권한 부여
sudo chmod +x /usr/local/bin/stop-hotspot.sh
✅ 사용법
sudo /usr/local/bin/stop-hotspot.sh
이후 필요할 때는:
sudo /usr/local/bin/start-hotspot.sh