无法通过 Raspberry Pi 4 Wifi AP 转发和接收互联网流量

无法通过 Raspberry Pi 4 Wifi AP 转发和接收互联网流量

有许多教程展示了如何使用 Raspberry Pi 4 设置 Wifi AP,所有教程都具有不同的配置。我正在尝试使用以下特定设置进行操作:

  • RPi4 充当 Wifi AP。它安装了Raspberry 版 Kali。它有一个eth0通过我的家用 Wifi 路由器连接到互联网的接口(我们称之为路由器HomeWifi)。这个 RPi4 有一个我想用作 Wifi AP 接口接收来自其他设备的本地网络流量。所以,基本上,这个 RPi4 位于我和我想要连接到互联网的设备wlan0之间。HomeWifi

  • 一台 Debian 笔记本电脑位于 RPi4 后面,想要访问互联网。我们称此设备为TestDevice

以下是我在 RPi4 上设置的各种配置:

1- 在/etc/network/interfaces

auto lo
   iface lo inet loopback

auto eth0
   allow-hotplug eth0
   iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static
   address 192.168.220.1/24

2- 在/etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211

hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=0
macaddr_acl=0
ignore_broadcast_ssid=0

auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

ssid=mypirouter
wpa_passphrase=password_for_mypirouter

3- 在/etc/init.d/hostapd

DAEMON_CONF=/etc/hostapd/hostapd.conf

4- 在/etc/dnsmasq.conf

resolve-file="/etc/resolv.dnsmasq"
server=1.1.1.1
interface=wlan0
bind-dynamic
dhcp-range=192.168.220.50,192.168.220.150,12h
dhc-option=option:router,192.168.1.1
log-queries
log-dhcp

5- 在/etc/resolv.conf

nameserver 127.0.0.1

关于我为什么这样做,这里有一个注释:我参考了NOTES页面中的部分man dnsmasq。它说

...in order to configure dnsmasq to act as cache for the host on which it is running, put "nameserver 127.0.0.1" in /etc/resolv.conf....

6/etc/resolv.dnsmasq

nameserver 1.1.1.1
nameserver 8.8.8.8

7/proc/sys/net/ipv4/ip_forward

1

8/etc/sysctl.conf

net.ipv4.ip_forward=1

9- 以下是设置iptables

*nat
:PREROUTING ACCEPT [1:32]
:INPUT ACCEPT [1:32]
:OUTPUT ACCEPT [1:248]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [9023:800718]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8673:816768]
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
COMMIT

结果:

在 RPi4 上运行以下服务后:

sudo systemctl start hostapd
sudo systemctl start dnsmasq

我确认这两项服务都在 RPi4 上运行。

然后,在我的 上,我成功TestDevice连接到了 SSID 。在 上运行显示它已分配 IP 为,完全在上述配置范围内。mypirouterifconfigTestDevice192.168.220.141

现在,当我尝试时ping www.google.comTestDevice出现以下错误:

PING www.google.com 56(84) bytes of data
From TestDevice (192.168.220.141) icmp_seq=1 Destination Host Unreachable
From TestDevice (192.168.220.141) icmp_seq=2 Destination Host Unreachable
...

但是,如果我尝试通过其静态 IP ping RPi4

ping 192.168.220.1

我可以收到这样的回复:

PING 192.168.220.1 56(84) bytes of data
64 bytes from 192.168.220.1: icmp_seq=1 ttl=64 time=2.46 ms
64 bytes from 192.168.220.1: icmp_seq=2 ttl=64 time=2.84 ms
...

此时,我怀疑 出了问题iptables。但我不确定如何修复它。任何建议都非常感谢。

答案1

在你的域名系统配置中,有以下行:

dhc-option=option:router,192.168.1.1

…还有以下用于 DHCP 客户端的 IP 池:

dhcp-range=192.168.220.50,192.168.220.150,12h

与往常一样255.255.255.0子网掩码,这意味着192.168.1.1位于另一个子网中。但这还不是最糟糕的;它实际上也不是“在线”的。相反,该路由器位于单独的网络段中,无法直接访问。

如果你直接删除这个选项,域名系统仍会发送,但会自行找出要发送的地址。这在大多数情况下都有效,如果域名系统在默认网关本身上运行。


如果你实际上不想与接入点创建不同的网段,你也可以桥接 Wi-Fi AP 接口和有线接口,从而无需域名系统以及任何iptables设置完毕。

相关内容