现状

现状

现状

Raspbian Stretch 通过 wlan0(型号 RT5370)无线连接到私有子网 10.0.0.0/16。无需进一步修改,Raspbian Stretch 即可访问互联网,DNS 也可以正常工作。PS:我无法物理访问连接到互联网的路由器 - 只能无线访问。

我添加了另一个 RT5370 NIC 作为 wlan1,并使用 hostapd 将其设置为无线接入点。

因为我不知道路由器的DHCP服务器地址范围,所以我不想给wlan0添加静态地址。

我已经在 wlan1 192.168.0.1/28(16 个主机地址)上配置了一个静态 IPv4 地址,并且我将 dnsmasq 设置为该网络的 DHCP 服务器。

问题

它确实应该非常简单。

Raspbian Stretch 可以 1) 访问互联网或 2) 充当 WAP 来连接客户端。问题是这两个功能不能同时工作。

我看过一些指南,其中互联网连接是通过铜线而不是无线电波建立的,但我不明白如果互联网连接接口是无线的而不是有线的,那有什么区别。无论如何...

我尝试过的方法

全新重启后,我可以成功 ping google.com 和 8.8.8.8。

检查后,我可以看到 wlan0 和 wlan1 ifconfig,它们似乎设置正常。

这是 的输出route

Kernel IP routing table
Destination Gateway     Genbask         Flags Metric Ref Use Iface
default     10.0.0.36   0.0.0.0         UG    303    0     0 wlan0
default     192.168.0.1 0.0.0.0         UG    304    0     0 wlan1
10.0.0.0    0.0.0.0     255.255.0.0     U     303    0     0 wlan0
192.168.0.0 0.0.0.0     255.255.255.240 U     303    0     0 wlan1

我不知道为什么这里看起来像有两个默认网关,而单个默认路由似乎更合适,但互联网可以工作,所以我继续......

在证明 Raspbian Stretch 可以访问互联网后,我尝试:

root@computer:/# hostapd /etc/hostapd/hostapd.conf

并得到这个:

Configuration file: /etc/hostapd/hostapd.conf
nl80211: Could not configure driver mode
nl80211: deinit ifname=wlan1 disabled_11b_rates=0
nl80211: driver initialization failed.
wlan1: interface state UNINITIALIZED->DISABLED
wlan1: AP-DISABLED
hostapd_free_hapd_data: Interface wlan1 wasn't started

现在,有趣的是,在我这样做之后:

root@computer:/# killall wpa_supplicant
root@computer:/# hostapd /etc/hostapd/hostapd.conf &

我明白了:

Configuration file: /etc/hostapd/hostapd.conf
Using interface wlan1 with hwaddress aa:bb:cc:11:22:33 and ssid "myssid"
wlan1: interface state UNINITIALIZED->ENABLED
wlan1: AP-ENABLED

这使得我能够通过 wlan1 成功地将客户端机器连接到 myssid,但现在我无法 ping google.com 或 8.8.8.8,并且我注意到 wlan0 没有显示在 ifconfig 中,我的路由表现在如下所示:

Kernel IP routing table
Destination Gateway     Genbask         Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0     255.255.255.240 U     303    0     0 wlan1

为了恢复 wlan0,我执行以下操作:

root@computer:/# service dhcpcd restart
root@computer:/# sysctl daemon-reload

现在 wlan0 和 wlan1 显示在 ifconfig 中,Raspbian Stretch 可以 ping google.com 和 8.8.8.8,但连接到 wlan1 的客户端无法访问 Internet。

此时我的路由表如下所示:

Kernel IP routing table
Destination Gateway     Genbask         Flags Metric Ref Use Iface
default     10.0.0.36   0.0.0.0         UG    303    0     0 wlan0
10.0.0.0    0.0.0.0     255.255.0.0     U     303    0     0 wlan0
192.168.0.0 0.0.0.0     255.255.255.240 U     304    0     0 wlan1

如果我能允许 wlan1 客户端访问互联网,这一切就都结束了:)

答案1

由于从 Internet 网关路由器到连接到 wlan1 (192.168.0.0/28) 的网络没有路由,所以我最终只能在 wlan0 和 wlan1 之间设置具有 PAT 过载的动态 NAT。

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

任务完成!

如果我可以访问 Internet 网关路由器,我可能会添加从 Raspbian Stretch 的 wlan0 地址到 192.168.0.0/28 网络的静态路由,但 1) 我无法访问该路由器,2) 我还必须设置 - a) DHCP 服务器上的 DHCP 保留(我也没有访问权限)或 b) Raspbian Stretch 的 wlan0 上的静态 IP 地址 - 如果我想避免在 wlan0 dhcp 权限到期时进行更改。因此,在这种情况下静态路由不起作用。

无论如何,这是我见过或听说过的第一个可以正常工作的路由器/防火墙不是使用有线连接 WAN或者局域网。

人们完全可以在开放的免费 WiFi 网络上使用它,而不必使用 VPN 或 SOCKS 代理(如果您对 iptables 有足够的了解来保护您的连接)。

相关内容