目标是通过覆盆子PI将非WiFi计算机连接到WiFi网络。我们将在非WiFi计算机和WiFi网络之间使用Raspberry PI 4 Model B作为桥梁。 Raspberry PI连接到WiFi并使用以太网与其他计算机的连接共享。
Raspberry PI 4 Model B有802.11ac WiFi,似乎很适合这项任务。此堆栈溢出答案和伴随脚本以及此代理ARP方法和Debian'与代理ARP的桥接网络连接是我如何实现这一工作的主要来源,并且是本指南的灵感。
我有两个单独的导游。按照相同的子网步骤或下面的单独子网步骤根据您愿意的配置。我的过程随着时间的推移而发展,我更喜欢相同的子网方法,因为它意味着成为客户的无缝桥。
这些说明仅在2021-01-11-Raspios-Buster-armhf-Lite.img的新安装上进行了测试和验证,这是Raspberry PI OS的无头版。推荐推荐使用Raspberry PI OS的新安装或在尝试之前备份PI。
某些路由器和网络不会允许这些指令工作。一些网络将主动阻止设备共享网络访问。你的旅费可能会改变。如果一个选项未能可靠地工作,请尝试另一个。
此选项很复杂,但提供更无缝的体验。连接到PI的桥接客户端应该表现得像它们直接连接到上游网络。
以下脚本在一个方面配置所有内容,用于使用标准覆盆子PI OS安装的PI。此脚本基于一个非常有用的堆栈溢出答案。
#!/ usr / bin / env bashset -e [$ euid-ne 0]&&&回声"以root&#34运行; >&&&退出1 #################################### ###########您不应需要更新此行以下的任何信息############################ ###############################ALP IP桥接守护程序#DHCP-Helper - DHCP / BOOTP继电器代理更新&amp ;& Apt Install -y Parprouted DHCP-HelpersystemCtl STOP DHCP-expersystemCtl启用DHCP-Helper#启用IPv4转发.SED -I'' s /#net.ipv4.ip_forward = 1 / net.ipv4.ip_forward = 1 / /etc/sysctl.conf# Service配置标准WiFi连接。如果用户名和密码不正确,则连接将丢失.Service#如果它'尚未启用的WLAN0,请为WLAN0启用IP转发。^选项IP转发1 $' /etc/dhcpcd.conf || printf"选项IP转发1 \ n" >> /etc/dhcpcd.conf#禁用Eth0.Grep&#39的DHCPCD控件; ^ Denyinterfaces eth0 $' /etc/dhcpcd.conf || printf" denyinterfaces eth0 \ n" >> /etc/dhcpcd.conf#配置dhcp-helper.cat> / etc / default / dhcp-helper<< eofdhcphelper_opts =" -b wlan0" eof#启用avahi反射器如果它' s尚未启用.sed -i'' ' s /#enable-reflector = no / enable-reflector =是/' /etc/avahi/avahi-daemon.confgrep' ^ enable-reflector =是$' /etc/avahi/avahi-daemon.conf || {printf"出了问题...... \ n \ n" printf"手动设置' enable-reflector = yes在/etc/avahi/avahi-daemon.conf' conf' \ n" }#我要承认,我不理解ARP和IP转发足以解释#究竟在这里发生了什么。我正在建立他人的工作。简而言之,这是一种从WiFi转发到Ethernet.cat的流量的服务。<' > /usr/lib/systemd/system/parprouted.service [单位]描述= proxy arp路由servicedocument = https://raspberrypi.stackexchange.com/q/88954/79866Rquires=sys-subsystem-net-devices-wlan0。设备dhcpcd.serviciCer = sys-subsystem-net-devices-wlan0.device dhcpcd.service [service] type = forking#重启,直到wlan0获取的carrierrestart = on-failurestartsec = 5timeoutstartsec = 30#克隆DHCP分配的IP到eth0所以DHCP - Helper将对正确的子网Xecstartpre = / bin / bash -c' / sbin / ip addr添加$(/ sbin / ip -4 -br addr显示wlan0 | / bin / grep -po" \ d + d +。\\ d + \\。\\ d + \\。\\ d +")/ 32 dev eth0' execstartpre = / sbin / ip链接set dev eth0upexecstartpre = / sbin / IP链接set wlan0 promisc onexecstart = - / usr / sbin / parprouted eth0 wlan0execstoppost = / sbin / IP链接集wlan0 promisc offexecstoppost = / sbin / IP链接set dev eth0 downexecstoppost = / bin / bash -c' / sbin / ip addr del $(/ sbin / ip -4 -br addr show wlan0 | / bin / grep -po" \\ d + \\。\\ d + \\。\\ d +&#34 ;)/ 32 dev eth0' [安装l] Wantby = wpa_supplicant.serviceeofstemctl daemon-reloadsystemctl启用parproutedsystemctl启动ParProuted DHCP-Helper
您的PI可能需要一瞬间连接到WiFi,但一旦它执行(随后的重启),它应该能够在以太网端口上开始转发流量。
此选项比第一个选项更简单。但是,此选项会导致更有限的设置。
桥接客户端将在单独的子网上,因此网络配置可能无法像您期望的那样运作。如果您可以将桥接客户端连接到Internet,则此选项很好。请注意,此脚本有点自归类,并为您选择DNS服务器和子网IP范围。根据需要更新脚本。
#!/ usr / bin / env bashset -e [$ euid-ne 0]&&&回声"以root&#34运行; >&&&退出1Autt Update&& \ debian_frontend = nonInteractive apt安装-y \ dnsmasq netfilter-perstistent iptastent#create and persist iptables规则。up -a postrouting -o wlan0-j masqueradenetfilter-persistent save#启用IPv4转发.sed -i' ' s /#net.ipv4.ip_forward = 1 / net.ipv4.ip_forward = 1 / /etc/sysctl.conf#以太网适配器将在此新子网上使用10.1.1.1的静态IP.CAT<< 39; eof' > /etc/network/interfaces.d/eth0auto eth0allow-hotplug eth0iface eth0 inet静态地址10.1.1.1 netmask 255.255.255.0网关10.1.1.1.of#在/etc/dnsmasq.d/bridge.conf下创建一个dnsmasq dhcp config。 raspberry pi#将充当DHCP服务器到通过以太网连接的客户端。&1R; eof' > /etc/dnsmasq.d/bridge.confinterface=eth0bind-interfacesserver = 8.8.8.8domain-neededbogus-privdhcp-range=10.1.1.2,10.1.1.254,12heofstemctl掩码networking.service
您的PI可能需要一瞬间连接到WiFi,但一旦它执行(随后的重启),它应该能够在以太网端口上开始转发流量。
您现在应该能够将设备连接到Raspberry PI上的以太网端口并接收IP地址。
我对通过覆盆子PI桥联系的桌面的一些非常基本的速度测试,并对结果感到惊喜。
我无法保证这对于每种可能的情况有多么可靠,但它适用于我。
$ iperf3 --reverse --format m -version4 - client iperf.he.netchnecting to host iperf.he.net,端口5201reverse模式,远程主机iperf.he.net正在发送[6]本地10.1.1.187端口52264连接到216.218.227.10端口5201 [ID]间隔传输比特率[6] 0.00-1.00秒2.06 MBITS 17.3 MBITS / SEC [6] 1.00-2.00 SEC 7.57 MBS 7.57 MBITS / SEC [6] 2.00- 3.00秒8.46 MBYTES 71.0 MBITS / sec [6] 3.00-4.00秒8.48 mbytes 71.2 mbits / sec [6] 4.00-5.00秒8.49 mbytes 71.2 mbits / sec [6] 5.00-6.00 sec 6.32 mbytes 53.0 mbits / sec [6] 6.00-7.00秒8.54 mbytes 71.6 Mbits / Sec [6] 7.00-8.00秒8.06 MBSTES 67.6 MBITS / SEC [6] 8.00-9.00 SEC 6.92 MBYTES 58.0 MBITS / SEC [6] 9.00-10.00 SEC 7.73 MBYTES 64.9 MBITS / SEC- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 转移比特率retrate retrate [6] 0.00-10.00秒77.6 mbytes 65.1 mbits / sec 809发件人[6] 0.00-10.00秒72.6 mbytes 60.9 mbits / sec receiveriperf完成。