将Raspberry Pi设置为访问点-简单的方法


16

我知道如何按照经典方法进行操作,例如在将Raspberry Pi设置为独立网络(NAT)中的访问点的官方文档中所述。但是,这需要许多必须一起使用的不同组件,并且必须以自己的方式配置每个组件。这些是网络(ifupdown)dhcpcdhostapddnsmasqbridge-utils

如今,Raspbian Stretch已内置了所有必需的组件,因此无需安装其他软件。这样可以大大简化设置。

是否可以仅将Raspbian配置为充当wifi接入点而无需安装其他软件?

Answers:


26

━━━设置接入点━━━

我们正在谈论一个接入点以及一个以太网端口eth0

如果您希望将接入点与wlan0客户端连接到另一个wifi网络(wlan中继器)一起,则将接入点视为WiFi路由器/中继器,对于bridge来说是可选的

无需安装其他软件即可将Raspbian Stretch配置为wifi接入点。所有需要的组件都可用:网络,DHCP服务器和桥接是systemd-networkd附带的,可以使用wpa_supplicant设置wifi 。连接两个接口eth0wlan0可以通过路由或桥接来完成。下面首先介绍快速安装的设置,然后是详细信息。首先,我们必须切换到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配置为访问点

要将wpa_supplicant配置为访问点country=,请使用ssid=psk=和可能使用的设置创建此文件frequency=。您可以将其复制并粘贴到以catEOF 开头(包括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通过以太网电缆连接到Internet路由器,并通过DHCP从Internet路由器进行配置。给它提供一个静态IP地址(例如Address=192.168.50.2而不是)是没有问题的DHCP=yes

如果没有路由,您将无法使用手机上网。您只能从RPi本身获取它,以获取更新或类似内容。


♦使用eth0和NAT设置访问点(推荐)

此设置示例:

                 wifi                        wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /            \
           (dhcp)   192.168.4.1       (dhcp)

设定

执行“常规设置”,然后创建以下文件以配置wlan0eth0。如果您尝试了以前的设置之一,则可以覆盖两个文件。确保为接入点使用与路由器不同的子网。本示例中的路由器不使用子网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客户端,则必须使用下一节中介绍的完整路由。


♦设置访问点,并使用eth0和路由

此设置示例:

                 wifi                        wired            wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
            \             /            \              /
           (dhcp)   192.168.4.1   192.168.50.2   192.168.50.1

设定

执行“常规设置”,然后创建以下文件以配置wlan0eth0。如果您尝试了以前的设置之一,则可以覆盖两个文件。确保对接入点和路由器网络使用不同的子网。我们必须使用静态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选项-dbr0wlan0使用网桥时,接口必须已经是网桥的成员。这就是我们处理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工具


rpi〜#systemd-tmpfiles --create --prefix / var / log / journalroot使用此输出消息@pi失败:〜#systemd-tmpfiles --create --prefix / var / log / journal无法为'/设置文件属性var / log / journal',值= 0x00800000,掩码= 0x00800000:不支持操作无法设置文件'/ var / log / journal / 6d18954849a74479955b761e891619aa'的文件属性,值= 0x00800000,掩码= 0x00800000:不支持操作,因此不能使用日志已实施。实施程序不是一个好的开始。
Jan Hus

1
嗨@JanHus谢谢您的反馈。这仅是警告而不是错误,没关系。我也每次都明白。持久日志已创建。一起看ls /var/log/journal/。您将看到一个类似的目录fa9462093e8d419cb646d0a0c44771c2。这是您使用访问日记的存储journalctl。我将更新我的答案。
Ingo

是的,我确实检查了文件是否已创建。但是我被束缚了,停了下来。我今天继续。到目前为止,这是关于该主题的更好的“教程”之一。感谢您发布。PS称之为持久性好吗?使用临时进程创建它时,几乎不会造成混淆。
Jan Hus

2
@Ingo我认为建议proto=WPA2在AP配置中使用。至少,我的电话抱怨没有它的“弱安全性”。
罗宾·丁斯

2
@RobinDinse当然可以。我监督了。感谢您的提示。我加了proto=RSN。那就是文档所希望的(命名proto=WPA2别名)。
Ingo

3

将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.sh192.168.0.0/28。如果您已经在网络上使用该子网,请执行之前variables.sh为WiFi客户端设置一个不同的子网。install.sh

不需要子网计算器,甚至不需要认真的网络技能就能获得良好的结果。 pi-ap甚至支持通过MAC ACL进行访问限制。

披露:我是pi-ap的开发人员。


0

━━━与检查点逐步检查安装━━━

不考虑此答案进行设置。要获得稳定的设置,请查看其他答案“ 设置接入点”

该答案主要用于故障排除,并逐步说明如何使用详细命令和检查点,但没有背景信息。我想您有一个连接到Raspberry Pi的显示器,键盘和鼠标。该检查中的IP地址和其他设置就是示例。您必须使用您的。您可以随时查看journalctl -b -e记录的信息。

Download ZIPRaspbian 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

(*)您将收到一两个混淆的警告:“ ...无法设置文件属性...”这不是错误,在这种情况下也没有关系。

使用设置为接口eth0wlan0创建以下文件:

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:现在您应该可以使用手机上网。


@Wim您在一个已删除的答案中问:“如何使用新的Raspbian版本Buster来完成此任务?” 如果您要设置接入点,则此答案“━━━逐步检查检查点━━━━”不正确。为此,您应在此侧使用其他答案“━━━设置接入点━━━━”。它也可以与Raspbian Buster一起使用。我已经验证了。
Ingo,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.