본문 바로가기

질문답변

우분투 WiFi 핫스팟 영구 설정

페이지 정보

작성자 관리자
댓글 1건 조회 260회 작성일 2026-02-26 08:59:31

본문

Ubuntu WiFi 핫스팟 완전 설정 가이드

새로운 컴퓨터에 설치하기 위한 단계별 가이드

네트워크 구성 예시

  • 유선 인터페이스: enp109s0 (인터넷 연결)
  • 무선 인터페이스: wlp0s20f3 (핫스팟)
  • 핫스팟 IP 대역: 10.0.0.0/24

1. 필수 패키지 설치

WiFi 핫스팟을 구축하기 위해 두 가지 필수 패키지가 필요합니다. hostapd는 WiFi 액세스 포인트 역할을 수행하며, dnsmasq는 DHCP 서버와 DNS 포워더 역할을 담당합니다.

bash

sudo apt update
sudo apt install hostapd dnsmasq iptables-persistent -y
  

설치 후 서비스 중지 (설정 완료 전까지):

bash

sudo systemctl stop hostapd
sudo systemctl stop dnsmasq
  

2. hostapd 설정 (WiFi AP)

hostapd는 무선 인터페이스를 액세스 포인트로 동작시키는 데몬입니다. SSID, 비밀번호, 채널, 보안 모드 등을 설정합니다.

설정 파일 생성:

bash

sudo nano /etc/hostapd/hostapd.conf
  

파일 내용:

bash

interface=wlp0s20f3
driver=nl80211
ssid=YourSSID
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
wpa_passphrase=YourPassword
  
설정 항목 설명
interface 무선 인터페이스 이름 (iwconfig로 확인)
ssid WiFi 네트워크 이름
hw_mode=g 2.4GHz 대역 (a: 5GHz)
wpa=2 WPA2 보안
wpa_pairwise=CCMP AES 암호화 (TKIP는 취약하므로 사용 지양)
wpa_passphrase WiFi 비밀번호 (8자 이상)

3. dnsmasq 설정 (DHCP/DNS)

dnsmasq는 가벼운 DHCP 및 DNS 서버입니다. 핫스팟에 연결된 클라이언트에게 IP 주소를 할당하고 DNS 쿼리를 처리합니다.

설정 파일 편집:

bash

sudo nano /etc/dnsmasq.conf
  

파일 내용 (기존 내용은 주석 처리 후 추가):

bash

interface=wlp0s20f3
dhcp-range=10.0.0.50,10.0.0.150,12h
dhcp-option=3,10.0.0.1
dhcp-option=6,10.0.0.1,8.8.8.8
bind-interfaces
server=8.8.8.8
  
설정 항목 설명
interface DHCP를 제공할 인터페이스
dhcp-range 할당할 IP 범위와 임대 시간
dhcp-option=3 게이트웨이 주소 (필수!)
dhcp-option=6 DNS 서버 주소
bind-interfaces 지정된 인터페이스에만 바인딩

4. 네트워크 인터페이스 정적 IP 설정

무선 인터페이스에 고정 IP 주소를 할당해야 합니다.

방법 A: /etc/network/interfaces 사용

bash

sudo nano /etc/network/interfaces
  

추가할 내용:

bash

auto wlp0s20f3
iface wlp0s20f3 inet static
    address 10.0.0.1
    netmask 255.255.255.0
  

방법 B: Netplan 사용

bash

sudo nano /etc/netplan/01-network-manager-all.yaml
  

기존 내용에 추가:

yaml

wlp0s20f3:
  dhcp4: no
  addresses: [10.0.0.1/24]
  
bash

sudo netplan apply
  

NetworkManager 충돌 방지

NetworkManager가 무선 인터페이스를 관리하지 않도록 설정:

bash

sudo nano /etc/NetworkManager/NetworkManager.conf
  

추가:

bash

[keyfile]
unmanaged-devices=interface-name:wlp0s20f3
  

5. IP 포워딩 활성화

핫스팟 클라이언트가 인터넷에 접속하려면 IP 포워딩이 활성화되어야 합니다.

임시 활성화:

bash

sudo sysctl -w net.ipv4.ip_forward=1
  

영구 설정:

bash

sudo nano /etc/sysctl.conf
  

파일 끝에 추가:

bash

net.ipv4.ip_forward=1
  
bash

sudo sysctl -p
  

6. firewalld 설정

⚠️ 핵심: 무선 인터페이스가 속한 영역의 target을 ACCEPT로 설정해야 합니다. 이 설정이 없으면 "admin prohibited filter" 오류로 인터넷이 차단됩니다!

무선 인터페이스 영역 확인:

bash

sudo firewall-cmd --get-active-zones
  

무선 인터페이스를 internal 영역에 추가:

bash

sudo firewall-cmd --zone=internal --add-interface=wlp0s20f3 --permanent
sudo firewall-cmd --reload
  

internal 영역 target을 ACCEPT로 변경 (필수!):

bash

sudo firewall-cmd --zone=internal --set-target=ACCEPT --permanent
sudo firewall-cmd --reload
  

public 영역에 masquerade 활성화:

bash

sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload
  

설정 확인:

bash

sudo firewall-cmd --zone=internal --list-all
  

target: ACCEPT로 표시되어야 합니다!

7. 서비스 활성화 및 시작

서비스 활성화:

bash

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl enable dnsmasq
  

서비스 시작:

bash

sudo systemctl start hostapd
sudo systemctl start dnsmasq
  

서비스 상태 확인:

bash

sudo systemctl status hostapd
sudo systemctl status dnsmasq
  

8. 재부팅 후 확인

재부팅:

bash

sudo reboot
  

재부팅 후 확인 항목:

bash

# 서비스 상태
systemctl status hostapd dnsmasq

# IP 주소
ip addr show wlp0s20f3

# IP 포워딩
cat /proc/sys/net/ipv4/ip_forward

# 방화벽
sudo firewall-cmd --zone=internal --list-all
  

9. 문제 해결 가이드

문제: 클라이언트가 인터넷에 연결되지 않음

가장 흔한 원인은 방화벽 설정입니다.

bash

# internal 영역 target 확인
sudo firewall-cmd --zone=internal --list-all

# ACCEPT로 변경
sudo firewall-cmd --zone=internal --set-target=ACCEPT --permanent
sudo firewall-cmd --reload
  

진단 명령어:

bash

# 패킷 모니터링
sudo tcpdump -i wlp0s20f3 -n

# NAT 패킷 확인
sudo tcpdump -i enp109s0 -n icmp

# 방화벽 로그
sudo journalctl -u firewalld -f
  

문제: hostapd 시작 실패

bash

# 무선 인터페이스 확인
iwconfig

# 로그 확인
sudo journalctl -u hostapd -n 50
  

문제: DHCP 할당 안 됨

bash

# dnsmasq 로그 확인
journalctl -u dnsmasq

# DHCP 할당 확인
sudo cat /var/lib/misc/dnsmasq.leases
  

부록: 설정 파일 위치 요약

파일 경로 용도
/etc/hostapd/hostapd.conf WiFi AP 설정
/etc/dnsmasq.conf DHCP/DNS 서버 설정
/etc/network/interfaces 정적 IP 설정 (legacy)
/etc/netplan/*.yaml 정적 IP 설정 (Netplan)
/etc/sysctl.conf IP 포워딩 설정
/etc/NetworkManager/NetworkManager.conf NM 인터페이스 제외 설정

빠른 설정 명령어 모음

bash

# === 한 번에 실행 ===

# 1. 패키지 설치
sudo apt install hostapd dnsmasq iptables-persistent -y

# 2. IP 포워딩
sudo sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

# 3. firewalld 설정
sudo firewall-cmd --zone=internal --add-interface=wlp0s20f3 --permanent
sudo firewall-cmd --zone=internal --set-target=ACCEPT --permanent
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload

# 4. 서비스 활성화
sudo systemctl unmask hostapd
sudo systemctl enable hostapd dnsmasq
sudo systemctl start hostapd dnsmasq
  

만약 IP가 잡히지 않으면 다음을 추가

bash


sudo nano /etc/systemd/system/wlan0-static.service
[Unit]
Description=Assign static IP to AP interface after hostapd starts
After=hostapd.service
Wants=hostapd.service

[Service]
Type=oneshot
ExecStart=/sbin/ip link set wlp0s20f3 up
ExecStart=/sbin/ip addr add 10.0.0.1/24 dev wlp0s20f3
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload
sudo systemctl enable wlan0-static.service
sudo systemctl start wlan0-static.service

ip addr show wlp0s20f3
journalctl -u wlan0-static.service

 

최종 점검

ifconfig -a | grep wlp0s20f3
wlp0s20f3: flags=4163  mtu 1500
        inet 10.0.0.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether c0:a5:e8:aa:d0:57  txqueuelen 1000  (Ethernet)
        RX packets 21052  bytes 4537776 (4.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19793  bytes 20612047 (20.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
systemctl status hostapd dnsmasq

● hostapd.service - Access point and authentication server for Wi-Fi
   Loaded: loaded (/lib/systemd/system/hostapd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2026-03-22 17:29:31 KST; 1h 14min ago
   Main PID: 11909 (hostapd)
   Tasks: 1 (limit: 37811)
   Memory: 1.3M
   CPU: 204ms

● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2026-03-22 17:29:50 KST; 1h 13min ago
   Main PID: 12044 (dnsmasq)

⚠️ hostapd 로그 (클라이언트 연결 상태)

3월 22 17:59:19 hostapd[11909]: wlp0s20f3: STA 98:b8:ba:10:71:2a WPA: pairwise key handshake completed
3월 22 18:23:38 hostapd[11909]: wlp0s20f3: STA ac:f6:f7:b3:a6:b1 associated (aid 2)
3월 22 18:23:46 hostapd[11909]: wlp0s20f3: STA 5e:e5:00:33:83:90 WPA: pairwise key handshake completed

⚠️ dnsmasq 로그 (경고)

3월 22 17:49:55 dnsmasq-dhcp[12044]: DHCP packet received on wlp0s20f3 which has no address
✅ 완료! 이제 클라이언트에서 WiFi 에 연결하여 인터넷이 되는지 확인하세요.

댓글목록

관리자님의 댓글

관리자 작성일
wlp0s20f3 은 본인의 wifi 모듈 이름을 적어야 합니다.

댓글쓰기

내용

회원로그인

로그인 회원가입
Copyright © radio.kr. All rights reserved.