본문 바로가기

개발자/Raspberry Pi

Rapsberry Pi 3 Access Point 만들기 AP 만들기

 

공유기 없이 라즈베리파이와 주변장치 연결하기(ap mode)

 

SSH로 접속하고 로그인 하는 과정은 생략하도록 하겠습니다.

1. 업데이트 & 업그레이드

$sudo apt-get update $sudo apt-get upgrade -y 

2. 패키지 설치

$sudo apt-get install hostapd -y $sudo apt-get install dnsmasq -y 

여기서 hostapd는 wifi ap mode로 설정할 때 사용하며

dnsmasq 는 DHCP나 DNS를 설정할 때 사용합니다.

3. 자동실행 설정

$sudo systemctl disable hostapd $sudo systemctl disable dnsmasq 

여기서 바로 넘어가면 설정이 되지 않은채로 실행되므로 이를 정지시켜 줍니다.

4. hostapd 설정

# /etc/hostapd/hostapd.conf
맨 밑에 추가해 주면 됩니다.

interface=wlan0 driver=nl80211 ssid=RPI3wifi hw_mode=g channel=6 wmm_enabled=0 macaddr_acl=0 auth_algs=1 wpa=2 wpa_passphrase=1234567890 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP

대충 보자면 wlan0을 설정하고 ssid를 설정하고 뭐라뭐라 되있는데 솔직히 2개만 신경썼습니다.

ssid랑 wpa_passphrase

ssid는 우리가 와이파이를 켰을 때 보이는 이름이며

wpa_passphrase는 비밀번호입니다.

다른건 드라이버나 채널 암호화 방식등등 입니다.

완료되었다면 저장 후 종료를 해줍니다.

nano 에디터 기준으로 Ctrl + x, y, enter 를 하면 저장 후 종료하게 됩니다.

# /etc/default/hostapd

#demon_conf=""

부분을

demon_conf="/etc/hostapd/hostapd.conf" 

로 바꾸어 줍니다.

5. dnsmasq 설정

# /etc/dnsmasq.conf

#Pi3Hotspot Config #stop DNSmasq from using resolv.conf no-resolv #Interface to use interface=wlan0 bind-interfaces dhcp-range=10.0.0.3,10.0.0.20,12h 

저장-종료를 해줍니다.

6. network 설정

# /etc/network/interfaces

allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

3번째 줄에 #을 추가하여 아래와 같이 바꿔줍니다.

allow-hotplug wlan0 iface wlan0 inet manual # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

이제 스크립트를 수정해 주어야 합니다.

왜 수정하느냐?

라즈베리파이를 켰을 때 일일이 연결해서(이더넷같은 방법으로) ap mode 켜주고 할 순 없으니까요

7. rc.local 설정

rc.local은 라즈베리파이가 부팅될 대 실행되는 프로그램이나 커맨드에 관한 부분입니다. 자세한 내용은 아래 링크를 참조해 주시기 바랍니다.

https://www.raspberrypi.org/documentation/linux/usage/rc-local.md

# /etc/rc.local

#!/bin/sh -e

위와같이 되어있는 맨 윗줄을

#!/bin/bash -e

로 바꾸어 줍니다.

그리고 fi (printf ~~ 바로 아래) 와 exit 0 사이에 아래 스크립트를 추가해 줍니다.

#Wifi config - if no prefered Wifi generate a hotspot # RPi Network Conf Bootstrapper createAdHocNetwork() { echo "Creating RPI Hotspot network" ifconfig wlan0 down ifconfig wlan0 10.0.0.5 netmask 255.255.255.0 up service dnsmasq start service hostapd start echo " " echo "Hotspot network created" echo " " } echo "=================================" echo "RPi Network Conf Bootstrapper" echo "=================================" echo "Scanning for known WiFi networks" ssids=( 'mySSID1','mySSID2' ) connected=false for ssid in "$" do echo " " echo "checking if ssid available:" $ssid echo " " if iwlist wlan0 scan | grep $ssid > /dev/null then echo "First WiFi in range has SSID:" $ssid echo "Starting supplicant for WPA/WPA2" wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null 2>&1 echo "Obtaining IP from DHCP" if dhclient -1 wlan0 then echo "Connected to WiFi" connected=true break else echo "DHCP server did not respond with an IP lease (DHCPOFFER)" wpa_cli terminate break fi else echo "Not in range, WiFi with SSID:" $ssid fi done if ! $connected; then createAdHocNetwork fi

제일 처음 고쳤던 sh를 bash로 바꾸는 부분을 잘 몰라서 검색을 해보았습니다.

키워드 : sh vs bash

얻은 링크 : http://stackoverflow.com/questions/5725296/difference-between-sh-and-bash

다음으로 스크립트에 관한 내용입니다.

여기서 신경쓸 부분은

ssids=( ‘ssid1’, ‘ssid2’ )

부분입니다.

이 부분은 주변에 와이파이를 스캔해본 뒤 일치하는 ssid가 있으면 wpa_supplicant.conf 에 설정되어 있는데로 연결을 시도하며 그게 아니라면 ap mode로 진입합니다.

위처럼 ‘,’ 를 이용하여 여러개를 넣을 수 있으며 1개만 넣어주어도 됩니다.

일치하는 ssid가 있으면 ap mode로 바뀌지 않으므로 일부러 틀린 ssid를 넣어 와이파이가 공유기에 접속하지 못하게 하였습니다.

저장-종료 후 재부팅을 해줍니다.

$sudo reboot 

이까지 되었다면 라즈베리파이를 ap mode로 사용할 수 있습니다.

8. 추가사항(필수)

이대로 진행해보니 에러가 하나 발생하였습니다.

pip를 설치하려는데 에러가 나길레

$ping google.com 

을 해보니 알 수 없는 주소라는 에러가 출력되었습니다.

그런데

$ping 8.8.8.8 

은 잘됩니다.

dns 문제인가 싶어 dnsmasq를 먼저 수정해 보았습니다.

하지만 뭘 수정해야 할지 모르므로 구글링

키워드 : dnsmasq raspberry pi

얻은 링크 : https://www.raspberrypi.org/forums/viewtopic.php?t=46154

중간에  server=8.8.8.8 이라는 부분이 보였습니다.

이를 dnsmasq.conf에 추가해 줍니다.

# /etc/dnsmasq.conf

server=8.8.8.8 

를 맨 마지막에 추가해 주었습니다.

저장-종료 후 재부팅을 해줍니다.

$sudo reboot 

설정이 잘 되었는지 확인

$ping google.com 

잘 되는군요.

여기까지 이번 글을 마치도록 하겠습니다.

다음 시간에는 Django 설치법으로 뵙겠습니다.

 

참고자료

 

 

이미지 출처 : http://www.zizzibaddi.com/blog/raspberrypi-wireless-access-point

 

 

 

 

 

더욱 좋은 정보를 제공하겠습니다.~ ^^

이 글 공유하기

facebook twitter kakaoTalk kakaostory naver band