━━━ 액세스 포인트 설정하기 ━━━
이더넷 포트 eth0 과 함께 액세스 포인트에 대해 이야기하고 있습니다 .
다른 Wi-Fi 네트워크 (무선 리피터)에 대한 wlan0 클라이언트 연결 과 함께 액세스 포인트를 원할 경우 액세스 포인트를 WiFi 라우터 / 리피터 (브릿지 옵션)로 확인하십시오 .
추가 소프트웨어를 설치하지 않고도 Raspbian Stretch 를 Wi-Fi 액세스 포인트로 구성 할 수 있습니다 . 필요한 모든 구성 요소를 사용할 수 있습니다. 네트워킹, DHCP 서버 및 브리징은 systemd-networkd 와 함께 제공되며 , wpa_supplicant로 wifi를 설정할 수 있습니다 . 라우팅 또는 브리징을 통해 두 개의 인터페이스 eth0 및 wlan0을 연결할 수 있습니다. 먼저 빠른 설치를위한 설정과 세부 사항이 있습니다. 먼저 systemd-networkd 로 전환해야합니다 .
2020-01-18로 업데이트 된 Raspberry Pi 4B에서 Raspbian Buster Lite 2019-09-26 으로 테스트 되었습니다.
업데이트가 완료되었습니다 sudo apt update && sudo apt full-upgrade && sudo reboot
.
여기 에서 이전 Raspbian 버전에 대해 마지막으로 테스트 된 개정판을 찾을 수 있습니다 .
♦ 일반 설정
시스템 네트워크로 전환
자세한 내용은 (1) 및 systemd-networkd로 이름 확인을 구성하는 방법을 참조하십시오 . 여기서는 짧게 말입니다. 다음 명령을 실행하십시오.
# deinstall classic networking
rpi ~$ sudo -Es
rpi ~# apt --autoremove purge ifupdown dhcpcd5 isc-dhcp-client isc-dhcp-common
rpi ~# rm -r /etc/network /etc/dhcp
# setup systemd-resolved
rpi ~# apt --autoremove purge avahi-daemon
rpi ~# apt install libnss-resolve
rpi ~# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
rpi ~# systemctl enable systemd-resolved.service
# enable systemd-networkd
rpi ~# systemctl enable systemd-networkd.service
액세스 포인트로 wpa_supplicant 구성
구성하려면 wpa_supplicant를 액세스 포인트로에 대한 설정이 파일 생성 country=
, ssid=
, psk=
어쩌면을 frequency=
. cat
EOF로 시작 하고 두 가지 EOF를 포함 하여 명령 행에 이것을 한 블록으로 복사하여 붙여 넣을 수 있습니다 (구분자 EOF는 파일의 일부를 얻지 못합니다).
rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="RPiNet"
mode=2
frequency=2437
#key_mgmt=NONE # uncomment this for an open hotspot
# delete next 3 lines if key_mgmt=NONE
key_mgmt=WPA-PSK
proto=RSN WPA
psk="password"
}
EOF
rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant.service
rpi ~# systemctl enable wpa_supplicant@wlan0.service
일반 설정을 완료했습니다. 돌아가
♦ 독립형 액세스 포인트 설정
이 설정의 예 :
wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
\ /
(dhcp) 192.168.4.1
마십시오 "일반 설정"은 다음 구성에 다음 파일을 생성 wlan0을 . 액세스 포인트 만 있습니다. 이더넷 장치가 구성되어 있지 않습니다.
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
EOF
원하는 경우 재부팅하십시오.
그게 다야.
그렇지 않으면 지금 다시 부팅 할 필요가 없습니다.
♦ 라우팅없이 액세스 포인트 및 eth0 설정
이 설정의 예 :
|
wifi | wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / | \ /
(dhcp) 192.168.4.1 | (dhcp) 192.168.50.1
설정
마십시오 "독립형 액세스 포인트 설정" 다음 구성에 다음 파일을 생성 eth0를을 .
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
EOF
재부팅하십시오.
그게 다야.
세부
인터페이스 eth0 은 이더넷 케이블로 인터넷 라우터에 연결되며 인터넷 라우터에서 DHCP를 통해 구성을 가져옵니다. 예를 들어 Address=192.168.50.2
대신에 고정 IP 주소를 지정하는 것은 문제가되지 않습니다 DHCP=yes
.
라우팅이 없으면 휴대폰으로 인터넷에 접속할 수 없습니다. RPi 자체에서만 업데이트 또는 이와 유사한 정보를 얻을 수 있습니다.
♦ NAT를 사용하여 액세스 포인트 및 eth0 설정 (권장)
이 설정의 예 :
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \
(dhcp) 192.168.4.1 (dhcp)
설정
마십시오 "일반 설정"은 다음 구성에 다음 파일을 생성 wlan0 과 eth0를을 . 이전 설정 중 하나를 시도한 경우 두 파일을 덮어 쓸 수 있습니다. 액세스 포인트에 라우터와 다른 서브넷을 사용해야합니다. 이 예의 라우터는 서브넷 192.168.4.0/24를 사용하지 않습니다. 다른 서브넷이 필요한 경우 주소 줄을 변경하십시오 (예 :) Address=192.168.5.1/24
.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
# IPMasquerade is doing NAT
IPMasquerade=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
IPForward=yes
EOF
재부팅하십시오.
그게 다야.
세부
인터넷 라우터에 액세스 할 수없는 경우 NAT (네트워크 주소 변환)로 위조하여 모든 패키지가 RasPi AP에서 온 것임을 알 수 있습니다. 그러나 이것은 깨끗한 라우팅이 아니며 제한이 있습니다. 라우터의 서브넷에있는 클라이언트는 wifi의 클라이언트에 연결할 수 없습니다. 그러나 대부분의 경우 이것은 필요하지 않으므로 설정을 단순화하므로이 설정을 사용하는 것이 좋습니다. 라우터 네트워크에서 wifi 클라이언트에 연결해야하는 경우 다음 섹션에 설명 된대로 전체 라우팅을 사용해야합니다.
♦ 라우팅을 사용하여 액세스 포인트 및 eth0 설정
이 설정의 예 :
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \ /
(dhcp) 192.168.4.1 192.168.50.2 192.168.50.1
설정
마십시오 "일반 설정"은 다음 구성에 다음 파일을 생성 wlan0 과 eth0를을 . 이전 설정 중 하나를 시도한 경우 두 파일을 덮어 쓸 수 있습니다. 액세스 포인트와 라우터 네트워크에 서로 다른 서브넷을 사용해야합니다. 고정 IP 주소를 게이트웨이로 사용해야하므로 고정 IP 주소를 사용해야합니다.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.2/24
Gateway=192.168.50.1
DNS=84.200.69.80 1.1.1.1
IPForward=yes
EOF
재부팅하십시오.
라우팅이 완벽하게 작동하려면 인터넷 라우터에 고정 경로를 설정해야 RasPi를 통해 WiFi로 액세스 지점에 연결된 클라이언트로 패키지를 다시 가져올 경로를 찾을 수 있습니다. 대부분의 인터넷 라우터에서는 고정 경로를 설정할 수 있지만 그 방법은 모델마다 다릅니다. 그것을 찾는 것은 당신에게 달려 있습니다. 예를 들어 RasPi eth0 인터페이스의 고정 IP 주소는 192.168.50.2입니다. 그런 다음 라우터에서 게이트웨이 (다음 홉)는 192.168.50.2이고 대상 네트워크는 192.168.4.0/24 (또는 192.168.4.0 넷 마스크 255.255.255.0)입니다.
인터넷 라우터의 의미 : "서브넷 192.168.4.0/24
(AP에서 대상 네트워크)에 속하는 모든 패키지 를 내 서브넷의 다음 라우터 인 RasPi AP 192.168.50.2
(게이트웨이)로 보냅니다 . 어디로 갈지 알고 있습니다."
그게 다야.
♦ 브리지로 액세스 포인트 설정
이 설정의 예 :
RPi
wifi ┌──────bridge──────┐ wired wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
\ | / DHCP-server
(dhcp (dhcp 192.168.50.1
from router) from router)
DHCP 서버 및 인터넷 라우터가있는 이더넷 네트워크가 있고 Wi-Fi 액세스 포인트로 동일한 IP 주소로 확장하려는 경우 브리지를 사용합니다. 이것은 종종 라우터의 업 링크로 사용됩니다.
설정
마십시오 "일반 설정"은 다음 네트워크 인터페이스를 구성하려면 다음 세 개의 파일을 만듭니다. 이전 설정 중 하나를 시도한 경우 존재하는 경우 를 /etc/systemd/network/
제외하고 모든 파일을 삭제할 수 있습니다 99-default.link
. IP 주소는 예입니다. 당신은 당신의 자신을 사용해야합니다.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/02-br0.netdev <<EOF
[NetDev]
Name=br0
Kind=bridge
EOF
rpi ~# cat > /etc/systemd/network/04-br0_add-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Bridge=br0
EOF
rpi ~# cat > /etc/systemd/network/12-br0_up.network <<EOF
[Match]
Name=br0
[Network]
MulticastDNS=yes
DHCP=yes
# to use static IP uncomment these and comment DHCP=yes
#Address=192.168.50.60/24
#Gateway=192.168.50.1
#DNS=84.200.69.80 1.1.1.1
EOF
이제 wpa_supplicant 에게 브릿지를 사용하도록 지시해야 합니다 . 다음과 같이 서비스를 수정하여 수행합니다.
rpi ~# systemctl edit wpa_supplicant@wlan0.service
빈 편집기에서 다음 명령문을 삽입하고 저장하고 편집기를 종료하십시오.
[Service]
ExecStartPre=/sbin/iw dev %i set type __ap
ExecStartPre=/bin/ip link set %i master br0
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0
ExecStopPost=-/bin/ip link set %i nomaster
ExecStopPost=-/sbin/iw dev %i set type managed
재부팅하십시오.
그게 다야.
세부
인터페이스 wlan0 이 브리지의 슬레이브 임을 wpa_supplicant 에게 알려줘야 합니다 . 그렇지 않으면 클라이언트가 "잘못된 비밀번호"로 연결하는 것을 거부합니다. 키 협상이 작동하지 않음을 의미합니다. 우리가 말할 때 / sbin에 / wpa_supplicant를 옵션 에 대한 브리지를 사용하는 wlan0 다음 인터페이스는 이미 다리의 구성원이어야합니다. 이것이 wpa_supplicant 서비스에 대한 드롭 인 파일 (오버레이)로 수행하는 작업 입니다. 빈 명령문 은 이전 항목을 삭제합니다. 그렇지 않으면 두 줄이 있고 wpa_supplicant 가 두 번 시작됩니다. 에서 볼 수 있는 원본 입니다 .-dbr0
ExecStart=
ExecStart=
ExecStart=
systemctl cat wpa_supplicant@wlan0.service
일반적으로 이더넷 케이블로 연결된 라우터에는 DHCP 서버가 활성화되어 있습니다. 브리지는 스테이션 (액세스 포인트에 연결된 장치)의 DHCP 요청에도 투명하므로 IP 주소 및 옵션을 사용하여 인터페이스를 구성 할 필요가 없습니다. 라우터가 서비스를 제공합니다.
excursus :
그러나 라우터에 DHCP 서버가없는 경우 RasPi 에서 DHCP 서버를 설정할 수 있습니다. systemd-networkd 에는 내장 DHCP 서버를 구성 할 수있는 옵션이 있지만 문제는 systemd-networkd 가 라우터 자체에서 실행되고 있다고 가정한다는 것입니다. 스테이션에 잘못된 옵션, 특히 라우터 옵션을 제공합니다. 구성 할 방법이 없습니다. 그래서 우리는 설치해야합니다dnsmasq
이 경우 필요에 따라 구성 할 수 있습니다. 다음과 같이 설치 및 구성하십시오 (예 : 고유 한 IP 주소 사용).
rpi ~$ sudo -Es
rpi ~# apt install dnsmasq
rpi ~# systemctl stop dnsmasq
rpi ~# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
rpi ~# cat > /etc/dnsmasq.conf <<EOF
interface=br0
dhcp-range=192.168.50.128,192.168.50.164,255.255.255.0,24h
dhcp-option=option:router,192.168.50.1
dhcp-option=option:dns-server,8.8.8.8,1.1.1.1
EOF
rpi ~# systemctl start dnsmasq
rpi ~# exit
rpi ~$
이 예에서는 스테이션에 제공하도록 예약 된 IP 주소 192.168.50.128 ~ 192.168.50.164가 있습니다. 다른 고정 IP 주소의 경우이 풀 외부의 주소와 브리지 자체의 IP 주소도 사용하십시오.
♦ 최적화
wpa_supplicant 를 시작할 때 주로 다음 메시지가 저널에 표시됩니다.
wpa_supplicant[427]: random: Cannot read from /dev/random: Resource temporarily unavailable
wpa_supplicant[427]: random: Only 12/20 bytes of strong random data available from /dev/random
wpa_supplicant[427]: random: Not enough entropy pool available for secure operations
wpa_supplicant[427]: WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
큰 문제는 아닙니다. 암호화 키를 생성하려면 wpa_supplicant에 난수가 필요합니다. 이 작업은 약간 느리게 수행되므로 기다려야합니다. 다행히도 RasPi이있는 빌드 갖는 T 루 R andom N 엄버 G의 enerator (TRNG 참조). 우리는 그것을 사용하고 소프트웨어의 조각 설치하여 임의의 숫자를 점점 속도를 높일 수 있습니다 (3) 과를 :
rpi ~$ sudo apt install rng-tools
업데이트 : Raspbian Stretch 2019-04-08
부터는 설치할 필요가 없습니다 . 기본적으로 설치됩니다.
rng-tools
♦ 문제 해결
시스템 네트워크
서비스 상태를 확인하십시오.
rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status wpa_supplicant@wlan0.service
또는 조금 더 :
rpi ~$ journalctl --boot --pager-end
진행중인 로깅을 따르는 것이 도움이된다는 것을 알았습니다.
rpi ~$ journalctl --boot --follow
파일을 삭제 한 경우 결과를 볼 수 있습니다.
rpi ~$ systemctl cat wpa_supplicant@wlan0.service
장치의 런타임 환경을 확인하려면 장치를 표시하고 예를 들어 두 ExecStart=
줄 이 있는지 확인하십시오 .
rpi ~$ systemctl show wpa_supplicant@wlan0.service
그리고 아무것도 다른 사람이 당신이에서 디버그 옵션을 활성화 할 수 있습니다 도움이 경우 /sbin/wpa_supplicant
에 -d
파일의 드롭 :
rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 -d
결과는 저널에 있습니다. 이 방법으로 잘못된 키 협상 문제를 발견했습니다.
와이파이
액세스 포인트를 설정 한 경우 휴대폰으로 액세스 포인트를 찾아야합니다. 사용 가능한 네트워크가 표시되면 이름이 RPiNet으로 표시되며 연결할 수 있습니다. RasPi에서 다음 명령을 사용할 수도 있습니다.
rpi ~$ sudo iw dev wlan0 info
phy#0
Interface wlan0
ifindex 3
wdev 0x2
addr b8:27:eb:06:e8:8b
ssid RPiNet
type AP
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
보시다시피 AP 유형 (액세스 포인트)이며 사용중인 채널을 보여줍니다. 문제는 채널을 주파수로 변환하는 것일 수 있습니다. 주파수는 채널과 일치해야합니다. 당신은 볼 수 있습니다 (2) WLAN 채널의 목록. 5.1 GHz 대역에서 사용 채널 36 예를 들어, 당신은 설정해야합니다 frequency=5180
에서 /etc/wpa_supplicant\wpa_supplicant.conf
. 그러나 Wi-Fi가 5.1GHz 대역을 지원하는지 확인해야합니다. 로 확인할 수 있습니다 sudo iw phy
. 이것은 당신에게 많은 정보를 줄 것입니다. 또한 5000MHz 이상의 지원되는 주파수를 포함해야합니다. 24xx MHz의 주파수 만 보이는 경우에는이 주파수 만 사용할 수 있습니다.
다른 점은 임의의 숫자 일 수 있습니다. 보안 연결을위한 키를 암호화하려면 wpa_supplicant에 임의의 숫자가 필요합니다. 이것을 생성하는 것은 Raspberry Pi에서 매우 느립니다. 암호화 키를 생성하기에 엔트로피가 충분하지 않으면 wpa_supplicant가 인증을 거부합니다. 당신이 함께 볼 수 cat /proc/sys/kernel/random/entropy_avail
엔트로피를 사용할 수있는 얼마나 많은. 충분히 빨리 작동하려면> 1000이어야합니다. 이 속도를 높이기 위해 rng-tools
가 기본적으로 설치됩니다. 자세한 내용은 최적화 섹션을 참조 하십시오.
참조 :
[1] 동적 장애 조치를 통해 네트워킹에서 시스템 네트워크로 마이그레이션하는 방법
[2] WLAN 채널 목록
[3] Rng-tools