오렌지파이 제로(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”




댓글

이 블로그의 인기 게시물

CA-CFAR 예제 코드

간단한 cfar 알고리즘에 대해

터미널 컬러 로그 메시지 출력 팁 ANSI Color

간단한 칼만 필터(Kalman Filter) 소스 코드와 사용 예제

python winsound를 이용한 윈도우 환경에서 소리 재생 예제