我通过在 Raspberry 4(使用 Raspbian)上成功地将 USB 设置wlan1
为 AP hostapd
,并且isc-dhcpd
(它仅侦听-interface)。wlan1
无论wlan0
(板载 WIFI)是否连接到 WAN 热点,wlan1
客户端都可以 ping 该wlan1
接口。IP 转发/伪装有效,如果wlan0
连接到 WAN AP,wlan1
客户端也可以访问互联网。完美的!
但是在我插入插件的那一刻eth0
,wlan1
客户端仍然可以连接到那个 AP(状态connected
),但是不能再 PING 那个wlan1
接口(并且不再有 WAN 访问)。那真是怪了!DHCP 服务器像以前一样将相同的有效 IP 推送给客户端,静态 IPwlan1
也保持不变(eth0
并且wlan1
具有静态 IP)。wlan1
可以从 rapsberry 本地 ping(但不能从外部客户端)。
当我拔掉插头eth0
时,它又可以工作了。
出了什么问题,为什么我什至不能再 ping 那个接口了?
sysctl IPv4 转发已启用。
...
$ ip link
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
...
$ ip addr
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether e4:5f:01:84:db:34 brd ff:ff:ff:ff:ff:ff
inet 10.8.0.2/8 brd 10.255.255.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
...
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether e4:5f:01:84:db:37 brd ff:ff:ff:ff:ff:ff
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether a0:f3:c1:23:2d:62 brd ff:ff:ff:ff:ff:ff
inet 10.8.5.1/8 brd 10.255.255.255 scope global noprefixroute wlan1
valid_lft forever preferred_lft forever
...
$nft list ruleset
...
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
masquerade
}
}
...
$ cat /etc/hostapd/hostapd.conf
interface=wlan1
#If this fails, try rt1871xdrv a
#driver=nl80211
# Name of the new network: best use the hostname
ssid=xxx
# Pick a channel not already in use
channel=1
# Change to b for older devices?
hw_mode=g
macaddr_acl=0
auth_algs=3
# Disable this to insure the AP is visible:
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=xxx
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
#bridge=br0 # no bridge! We're using routing
country_code=JP
cat /etc/dhcpcd.conf
...
interface eth0
static ip_address=10.8.0.2/8
static routers=10.8.0.1
static domain_name_servers=127.0.0.1
interface wlan1
static ip_address=10.8.5.1/8
nohook wpa_supplicant
static domain_name_servers=127.0.0.1
interface wlan0
static domain_name_servers=127.0.0.1
cat /etc/dhcp/dhcpd.conf
...
authoritative;
subnet 10.8.5.0 netmask 255.255.255.0 {
range 10.8.5.201 10.8.5.250;
option broadcast-address 10.8.5.255;
option routers 10.8.5.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 10.8.5.1;
}
host ares {
hardware ethernet 04:ea:56:ae:58:03;
fixed-address 10.8.5.20;
}
$ ipconfig # on Windows 11 Client
...
Wireless LAN adapter Wi-Fi:
Connection-specific DNS Suffix . : local
Description . . . . . . . . . . . : Intel(R) Dual Band Wireless-AC 8265
Physical Address. . . . . . . . . : 04-EA-56-AE-58-03
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::9300:7ccf:3e03:eaf9%17(Preferred)
IPv4 Address. . . . . . . . . . . : 10.8.5.20(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Lease Obtained. . . . . . . . . . : Friday, 16 December 2022 22:56:38
Lease Expires . . . . . . . . . . : Friday, 16 December 2022 23:06:37
Default Gateway . . . . . . . . . : 10.8.5.1
DHCP Server . . . . . . . . . . . : 10.8.5.1
DHCPv6 IAID . . . . . . . . . . . : 168094294
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-26-1E-05-25-48-2A-E3-3A-C9-F0
DNS Servers . . . . . . . . . . . : 10.8.5.1
NetBIOS over Tcpip. . . . . . . . : Enabled
...
您的 IP 地址是:
wlan1
eth0
它们在同一个子网中。10.0.0.0/8 涵盖从 10.0.0.0 到 10.255.255.255 的所有内容。
然而,在您的 DHCP 范围内,网络掩码突然变成了 /24。
一般规则是,如果要在子网内发送流量,则需要交换机(网桥),而在子网之间发送流量则需要路由器。当您的机器从您的一个连接的客户端获取数据包时 - 它认为 10.8.5.0/24 是一个子网,它不知道如何处理它,因为它被发送到与发起者位于同一子网中的主机。
eth0
您可能希望在所有地方定义 /24,因此将和的网络掩码替换为wlan1
/24,而不是 /8。至于观察到的行为:路线很重要。更快的界面浮到顶部。你的机器相信
wlan1
并且eth0
都指向同一个目的地。因此,它通过最佳接口(路由表中权重最低)发送数据包,即有线以太网接口。如果它正确配置了单独的子网,它会工作得很好。