오렌지파이 제로(OrangePi Zero) hostapd 사용하여 AP 만들기

Orange Pi Zero에서 hostapd를 사용하여 AP모드로 설정하는 방법이다.

lan을 연결하여 무선 인터넷 공유기로 사용할 수 있다.


1. 패키지 설치

아래와 같이 hostapd, isc-dhcp-server, iptables-persistent를 설치해야 한다.

sudo apt-get update

sudo apt-get install hostapd isc-dhcp-server iptables-persistent

isc-dhcp-server 설치 최초 서비스 실행이 실패할 수도 있다. 아래 설정을 모두 마친 서비스 실행해야 한다.

iptables-presistent 설정은 아래 그림 참조 ( yes)


2. DHCP 서버 설정

/etc/dhcp/dhcpd.conf 설정은 아래를 참조하여 IP 설정한다.

# dhcpd.conf

#

# Sample configuration file for ISC dhcpd

#

 

# option definitions common to all supported networks...

option domain-name "example.org";

option domain-name-servers 8.8.8.8, 8.8.6.6;

 

default-lease-time 600;

max-lease-time 7200;

 

# The ddns-updates-style parameter controls whether or not the server will

# attempt to do a DNS update when a lease is confirmed. We default to the

# behavior of the version 2 packages ('none', since DHCP v2 didn't

# have support for DDNS.)

ddns-update-style none;

 

# If this DHCP server is the official DHCP server for the local

# network, the authoritative directive should be uncommented.

#authoritative;

 

# Use this to send dhcp log messages to a different log file (you also

# have to hack syslog.conf to complete the redirection).

#log-facility local7;

 

# No service will be given on this subnet, but declaring it helps the

# DHCP server to understand the network topology.

 

#subnet 10.152.187.0 netmask 255.255.255.0 {

#}

 

# This is a very basic subnet declaration.

 

#subnet 10.254.239.0 netmask 255.255.255.224 {

#  range 10.254.239.10 10.254.239.20;

#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;

#}

 

# This declaration allows BOOTP clients to get dynamic addresses,

# which we don't really recommend.

 

#subnet 10.254.239.32 netmask 255.255.255.224 {

#  range dynamic-bootp 10.254.239.40 10.254.239.60;

#  option broadcast-address 10.254.239.31;

#  option routers rtr-239-32-1.example.org;

#}

 

# A slightly different configuration for an internal subnet.

#subnet 10.5.5.0 netmask 255.255.255.224 {

#  range 10.5.5.26 10.5.5.30;

#  option domain-name-servers ns1.internal.example.org;

#  option domain-name "internal.example.org";

#  option routers 10.5.5.1;

#  option broadcast-address 10.5.5.31;

#  default-lease-time 600;

#  max-lease-time 7200;

#}

 

# Hosts which require special configuration options can be listed in

# host statements.   If no address is specified, the address will be

# allocated dynamically (if possible), but the host-specific information

# will still come from the host declaration.

 

#host passacaglia {

#  hardware ethernet 0:0:c0:5d:bd:95;

#  filename "vmunix.passacaglia";

#  server-name "toccata.example.com";

#}

 

# Fixed IP addresses can also be specified for hosts.   These addresses

# should not also be listed as being available for dynamic assignment.

# Hosts for which fixed IP addresses have been specified can boot using

# BOOTP or DHCP.   Hosts for which no fixed address is specified can only

# be booted with DHCP, unless there is an address range on the subnet

# to which a BOOTP client is connected which has the dynamic-bootp flag

# set.

#host fantasia {

#  hardware ethernet 08:00:07:26:c0:a5;

#  fixed-address fantasia.example.com;

#}

 

# You can declare a class of clients and then do address allocation

# based on that.   The example below shows a case where all clients

# in a certain class get addresses on the 10.17.224/24 subnet, and all

# other clients get addresses on the 10.0.29/24 subnet.

 

#class "foo" {

#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";

#}

 

#shared-network 224-29 {

#  subnet 10.17.224.0 netmask 255.255.255.0 {

#    option routers rtr-224.example.org;

#  }

#  subnet 10.0.29.0 netmask 255.255.255.0 {

#    option routers rtr-29.example.org;

#  }

#  pool {

#    allow members of "foo";

#    range 10.17.224.10 10.17.224.250;

#  }

#  pool {

#    deny members of "foo";

#    range 10.0.29.10 10.0.29.230;

#  }

#}

 

subnet 192.168.99.0 netmask 255.255.255.0 {

  range 192.168.99.10 192.168.99.50;

  option broadcast-address 192.168.99.255;

  option routers 192.168.99.1;

  option subnet-mask 255.255.255.0;

}

 

/etc/default/isc-dhcp-server 설정은 아래와 같이 dhcpd.conf파일의 위치를 설정하고, ‘INTERFACESv4’ wlan0 설정한다.


3. 네트워크 interface 설정

wlan0 IP 주소를 고정해 사용한다. 예제에는 dhcpd.conf 에서 routers ip 설정한 192.168.99.1 IP 주소로 설정했다.


4. hostapd 설정

/etc/hostapd/hostapd.conf 파일 생성하여 AP 설정파일을 만든다. (아래 그림 참조)

hostapd_cli 통해 컨트롤 하려면 아래 내용도 hostapd.conf 추가해야 한다.

/etc/default/hostapd hostapd.conf파일 위치 설정해야 한다. (DAEMON_CONF)

/etc/init.d/hostapd DAEMON_CONF 위치도 설정해야 한다.


5. Network Address Translation 설정

/etc/sysctl.conf 아래 그림 참조하여 수정한다

그리고, 리부팅 전에 아래도 적용해야 한다.

sh -c “echo 1 > /proc/sys/net/ipv4/ip_forward”

 

6. iptables 설정

iptables 설정은 다음과 같다.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT



sudo sh -c "iptables-save > /etc/iptables/rules.v4”




댓글

이 블로그의 인기 게시물

간단한 cfar 알고리즘에 대해

windows에서 간단하게 크롬캐스트(Chromecast)를 통해 윈도우 화면 미러링 방법

base64 인코딩 디코딩 예제 c 소스

아두이노(arduino) 심박센서 (heart rate sensor) 심박수 측정 example code

python asyncio를 이용한 async socket server client example code