我知道如何按照经典方法进行操作,例如在将Raspberry Pi设置为独立网络(NAT)中的访问点的官方文档中所述。但是,这需要许多必须一起使用的不同组件,并且必须以自己的方式配置每个组件。这些是网络(ifupdown),dhcpcd,hostapd,dnsmasq和bridge-utils。
如今,Raspbian Stretch已内置了所有必需的组件,因此无需安装其他软件。这样可以大大简化设置。
是否可以仅将Raspbian配置为充当wifi接入点而无需安装其他软件?
我知道如何按照经典方法进行操作,例如在将Raspberry Pi设置为独立网络(NAT)中的访问点的官方文档中所述。但是,这需要许多必须一起使用的不同组件,并且必须以自己的方式配置每个组件。这些是网络(ifupdown),dhcpcd,hostapd,dnsmasq和bridge-utils。
如今,Raspbian Stretch已内置了所有必需的组件,因此无需安装其他软件。这样可以大大简化设置。
是否可以仅将Raspbian配置为充当wifi接入点而无需安装其他软件?
Answers:
我们正在谈论一个接入点以及一个以太网端口eth0。
如果您希望将接入点与wlan0客户端连接到另一个wifi网络(wlan中继器)一起,则将接入点视为WiFi路由器/中继器,对于bridge来说是可选的。
无需安装其他软件即可将Raspbian Stretch配置为wifi接入点。所有需要的组件都可用:网络,DHCP服务器和桥接是systemd-networkd附带的,可以使用wpa_supplicant设置wifi 。连接两个接口eth0和wlan0可以通过路由或桥接来完成。下面首先介绍快速安装的设置,然后是详细信息。首先,我们必须切换到systemd-networked。
已在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配置为访问点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
如果需要,请重新启动。
而已。
否则继续进行,此时无需重启。
此设置示例:
|
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通过以太网电缆连接到Internet路由器,并通过DHCP从Internet路由器进行配置。给它提供一个静态IP地址(例如Address=192.168.50.2
而不是)是没有问题的DHCP=yes
。
如果没有路由,您将无法使用手机上网。您只能从RPi本身获取它,以获取更新或类似内容。
此设置示例:
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
重启。
而已。
如果您无法访问Internet路由器,则可以使用NAT(网络地址转换)对其进行伪造,以撒谎说所有软件包都来自您的RasPi AP。但这不是干净的路由,并且有局限性。路由器子网上的客户端无法连接到wifi上的客户端。但是在大多数情况下不需要这样做,因此建议您使用此设置,因为它可以简化设置。如果需要从路由器网络连接到wifi客户端,则必须使用下一节中介绍的完整路由。
此设置示例:
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地址,因为我们必须将其用作网关。
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
重启。
为了使路由工作正常,您必须在Internet路由器中设置一条静态路由,以便它可以找到通过RasPi返回的软件包到通过wifi连接到接入点的客户端的路由。在大多数Internet路由器上,您可以设置静态路由,但具体方法因型号而异。找出答案取决于您。例如,您的RasPi eth0接口的静态IP地址为192.168.50.2。然后在路由器上,网关(下一跳)为192.168.50.2,目标网络为192.168.4.0/24(或192.168.4.0网络掩码255.255.255.0)。
对于Internet路由器而言,这意味着:“将属于该子网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服务器和Internet路由器的以太网,并且希望使用wifi接入点但具有相同的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
重启。
而已。
我们必须告诉wpa_supplicant,其接口wlan0是网桥的从站。否则,它将拒绝客户端使用“错误的密码”进行连接,这意味着密钥协商不起作用。当我们告诉/ sbin / wpa_supplicant选项-dbr0
为wlan0使用网桥时,接口必须已经是网桥的成员。这就是我们处理wpa_supplicant服务的文件(覆盖)的方法。空语句ExecStart=
删除旧条目。否则,您将有两行,ExecStart=
并且wpa_supplicant将启动两次。ExecStart=
您可以使用查看的原件systemctl cat wpa_supplicant@wlan0.service
。
通常,使用以太网电缆连接到的路由器都启用了DHCP服务器。该网桥对于来自工作站(连接到接入点的设备)的DHCP请求也是透明的,因此您不必担心使用IP地址和选项配置其接口的情况。路由器将为它服务。
附加说明:
但是,如果路由器没有DHCP服务器,则可以在RasPi上设置一个。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具有在构建Ť芸香ř andom Ñ棕土ģ 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
。但您必须确保您的wifi支持5.1 GHz频段。您可以通过进行确认sudo iw phy
。这将为您提供大量信息。它还必须包含高于5000 MHz的支持频率。如果您仅看到24xx MHz的频率,那么您当然只能使用它。
另一点可能是随机数。为了对安全连接的密钥进行加密,wpa_supplicant需要随机数。在Raspberry Pi上生成该文件非常慢。如果它的熵不足以生成加密密钥,则wpa_supplicant将拒绝身份验证。您可以查看有cat /proc/sys/kernel/random/entropy_avail
多少熵可用。它应该> 1000才能足够快地工作。为了加快速度,rng-tools
默认情况下安装。请参阅优化部分以获取更多信息。
参考:
[1] 如何通过动态故障转移从网络迁移到systemd- networked
[2] WLAN通道列表
[3] Rng工具
ls /var/log/journal/
。您将看到一个类似的目录fa9462093e8d419cb646d0a0c44771c2
。这是您使用访问日记的存储journalctl
。我将更新我的答案。
proto=WPA2
在AP配置中使用。至少,我的电话抱怨没有它的“弱安全性”。
proto=RSN
。那就是文档所希望的(命名proto=WPA2
别名)。
将Raspberry Pi设置为AP的一种更简便的方法是使用pi-ap Github repo,它可以将Pi 3B + / 4自动配置为AP。
将Pi连接到已启用DHCP的连接Internet的路由器的空闲端口(在大多数消费类路由器中可能都是这种情况)。
连接后,SSH进入eth0
路由器分配给DHCP的IP上的Pi ,然后:
git clone https://github.com/f1linux/pi-ap
cd pi-ap
nano variables.sh # Change default values for SSID & password
sudo ./install.sh
喝茶,等待约2分钟后,您设置的SSID variables.sh
将显示在无线网络列表中。连接到要发布的Pi的WLAN。
要通过SSH直接通过SSH直接连接到AP本身wlan0
,请使用默认IP192.168.0.1
请注意:用于分配WiFi客户端IP的默认DHCP子网pi-ap variables.sh
为192.168.0.0/28
。如果您已经在网络上使用该子网,请在执行之前variables.sh
为WiFi客户端设置一个不同的子网。install.sh
不需要子网计算器,甚至不需要认真的网络技能就能获得良好的结果。 pi-ap甚至支持通过MAC ACL进行访问限制。
披露:我是pi-ap的开发人员。
不考虑此答案进行设置。要获得稳定的设置,请查看其他答案“ 设置接入点”。
该答案主要用于故障排除,并逐步说明如何使用详细命令和检查点,但没有背景信息。我想您有一个连接到Raspberry Pi的显示器,键盘和鼠标。该检查中的IP地址和其他设置就是示例。您必须使用您的。您可以随时查看journalctl -b -e
记录的信息。
Download ZIP
将Raspbian Stretch Lite 2018-11-13镜像到您的Linux PC。
检查点1:将校验和与下载站点上的校验和进行比较。
pc ~$ sha256sum 2018-11-13-raspbian-stretch-lite.zip
47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d 2018-11-13-raspbian-stretch-lite.zip
下一步:将映像刻录到连接的SD卡上:
pc ~$ unzip -p 2018-11-13-raspbian-stretch-lite.zip | sudo dd of=/dev/sdb bs=4M conv=fsync
检查点2:检查SD卡上的分区:
pc ~$ sudo parted /dev/sdb print
Model: Mass Storage Device (scsi)
Disk /dev/sdb: 3965MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 4194kB 50,2MB 46,0MB primary fat32 lba
2 50,3MB 1866MB 1816MB primary ext4
下一步:挂载启动分区并创建一个wpa_supplicant.conf
文件:
pc ~$ mkdir boot/
pc ~$ sudo mount /dev/sdb1 boot/
pc ~$ sudo -e boot/wpa_supplicant.conf
# insert this into the empty editor with your settings, save it and quit the editor
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="RPiNet"
mode=2
key_mgmt=WPA-PSK
psk="password"
frequency=2412
}
pc ~$ sudo umount boot/
将SD卡放入RasPi并启动。
检查点3:登录后,检查有线连接。该eth0的接口必须拥有一个IP地址:
rpi ~$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.50.177/24 brd 192.168.50.255 scope global eth0
valid_lft forever preferred_lft forever
rpi ~$ ping -I eth0 -c3 google.com
PING google.com (172.217.22.78) from 192.168.50.177 eth0: 56(84) bytes of data.
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=1 ttl=55 time=15.0 ms
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=2 ttl=55 time=14.7 ms
64 bytes from fra15s17-in-f14.1e100.net (172.217.22.78): icmp_seq=3 ttl=55 time=15.1 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 14.729/14.965/15.125/0.170 ms
开箱即用。如果它不起作用,则说明您的网络设置存在一般性问题。请先修复它,然后再继续。
检查点4:检查访问点:
rpi ~$ sudo iw dev wlan0 info
Interface wlan0
ifindex 3
wdev 0x1
addr b8:27:eb:06:e8:8b
ssid RPiNet
type AP
wiphy 0
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
txpower 31.00 dBm
在为wlan0接口768,16有一个IP地址。由于我们尚未配置接口,因此它将有一个来自169.254.0.0/16 的链接本地地址。
rpi ~$ ip -4 addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 169.254.210.182/16 brd 169.254.255.255 scope global wlan0
valid_lft forever preferred_lft forever
您会在手机上的访问点列表中看到RPiNet,但您目前无法连接到它。
下一步:完全升级并重新启动:
rpi ~$ sudo apt update
rpi ~$ sudo apt full-upgrade
rpi ~$ sudo systemctl reboot
重新启动并登录后,切换到systemd-networkd:
rpi ~$ sudo -Es
rpi ~# mkdir -p /var/log/journal
rpi ~# systemd-tmpfiles --create --prefix /var/log/journal #ignore warnings (*)
rpi ~# apt install rng-tools
rpi ~# systemctl mask networking.service
rpi ~# systemctl mask dhcpcd.service
rpi ~# sudo mv /etc/network/interfaces /etc/network/interfaces~
rpi ~# sed -i '1i resolvconf=NO' /etc/resolvconf.conf
rpi ~# systemctl enable systemd-networkd.service
rpi ~# systemctl enable systemd-resolved.service
rpi ~# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
(*)您将收到一两个混淆的警告:“ ...无法设置文件属性...”这不是错误,在这种情况下也没有关系。
使用设置为接口eth0和wlan0创建以下文件:
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.60/24
Gateway=192.168.50.1
DNS=84.200.69.80 84.200.70.40
IPForward=yes
EOF
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 84.200.70.40
EOF
重命名/etc/wpa_supplicant/wpa_supplicant.conf,使其与接口设置匹配并重新启动:
rpi ~# mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant@wlan0.service
rpi ~# systemctl reboot
检查点5:重新启动并登录后,检查有线连接eth0:
rpi ~$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.50.60/24 brd 192.168.50.255 scope global eth0
valid_lft forever preferred_lft forever
rpi ~$ ping -I eth0 -c3 google.com
PING google.com (172.217.10.14) from 192.168.50.60 eth0: 56(84) bytes of data.
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=1 ttl=51 time=93.5 ms
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=2 ttl=51 time=93.5 ms
64 bytes from lga34s12-in-f14.1e100.net (172.217.10.14): icmp_seq=3 ttl=51 time=93.5 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 93.519/93.551/93.592/0.030 ms
检查点6:检查wifi连接wlan0:
rpi ~$ sudo systemctl start wpa_supplicant@wlan0.service
rpi ~$ sudo iw dev wlan0 info
Interface wlan0
ifindex 3
wdev 0x1
addr b8:27:eb:06:e8:8b
ssid RPiNet
type AP
wiphy 0
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
txpower 31.00 dBm
rpi ~$ ip -4 addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.4.1/24 brd 192.168.4.255 scope global wlan0
valid_lft forever preferred_lft forever
在手机上检查wifi。您应该找到RPiNet
并可以连接到它。您的手机无法进入互联网,因为尚未配置路由。
下一步:为Internet连接启用NAT。要配置NAT,您必须使用以下方法扩展wpa_supplicant服务:
rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service
在空的编辑器中,插入以下语句,保存它们并退出编辑器:
[Service]
ExecStartPre=/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ExecStopPost=-/sbin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
然后做:
rpi ~$ sudo systemctl daemon-reload
rpi ~$ sudo systemctl restart systemd-networkd.service
rpi ~$ sudo systemctl restart wpa_supplicant@wlan0.service
检查点7:现在您应该可以使用手机上网。