如何在 Raspberry Pi 上为接入点和客户端使用单个无线适配器?

Gab*_*abe 5 wireless-networking dhcp-server ifconfig vlan hostapd

我已经能够使用 wlan0 上的 hostapd 使用 USB Wi-Fi 加密狗在我的 Raspberry Pi 上创建无线接入点。我希望能够做的是让接入点位于某个虚拟接口(即 wlan0:1)或 vlan(wlan0.123)上,并将 wlan0 连接到现有接入点。

这样我就可以通过它提供的接入点或通过它能够连接的网络连接到设备。

最终目标是:我可以使用它提供的接入点连接到设备。然后它会扫描它找到的无线接入点,询问我想连接到哪个接入点,然后尝试连接到它。然后它可以告诉我它能够在新连接上获得的 IP 地址,或者告诉我它连接失败(因为我仍然会通过它提供的接入点连接)。

如果有其他方法可以做到这一点(没有两个物理 Wi-Fi 适配器),我会全力以赴。

目前,我正在采取的步骤是让 AP 在 vlan 接口上工作。这不起作用…… AP 是可见的,但 DHCP 服务器似乎没有发布 IP 地址。

以下是 /etc/network/interfaces 的内容:

auto lo
auto wlan0 wlan0.10
auto eth0

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0

iface wlan0.10 inet static
  address 192.168.50.1
  netmask 255.255.255.0
  network 192.168.50.0
  broadcast 192.168.50.255
  gateway 192.168.50.1
  vlan_raw_device wlan0

iface wlan0 inet manual
Run Code Online (Sandbox Code Playgroud)

以下是hostapd.conf的内容:

interface=wlan0
driver=rtl871xdrv
country_code=NZ
ctrl_interface=wlan0.10
ctrl_interface_group=0
ssid=RPiAP
hw_mode=g
channel=1
wpa=3
wpa_passphrase=PASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
beacon_int=100
auth_algs=3
macaddr_acl=0
wmm_enabled=1
eap_reauth_period=360000000
Run Code Online (Sandbox Code Playgroud)

注意上面我不得不说接口是wlan0。如果我放 wlan0.10,hostapd 似乎不喜欢它。

最后这是我的 dhcp 配置(isc-dhcp-server):

shared-network VLAN10 {
subnet 192.168.50.0 netmask 255.255.255.0 {
       range 192.168.50.10 192.168.50.250;
       option broadcast-address 192.168.50.255;
       option routers 192.168.50.1;
       default routers 192.168.50.1;
       default-lease-time 600;
       max-lease-time 7200;
       option domain-name "local";
}
}
Run Code Online (Sandbox Code Playgroud)

看起来 AP/dhcp 不喜欢在 VLAN 上,因为我的手机似乎卡在“从 RPiAP 获取 IP 地址...”上。或者也许我必须做一些 iptables 规则来删除标记?

小智 0

hostap和dhcp服务器工作正常,但是你的手机和树莓派的时间没有同步。尝试将两个设备设置为相同的时间。