리눅스서버(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)이 라우터 역할을 해야 하기 때문에:

  1. IP 할당 (DHCP) 👉 이미 해결
  2. 트래픽 전달 (NAT) 👉 인터넷 공유
  3. 방화벽이 이를 차단하면 👉 폰은 연결되지만 인터넷이 안됨

✅ 해결: 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

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다