
Я успешно настроил USB wlan1
как AP через hostapd
, и isc-dhcpd
(он слушает только wlan1
-интерфейс) на Raspberry 4 (используя Raspbian). Независимо от того, wlan0
подключен ли (встроенный WIFI) к точке доступа WAN, wlan1
клиенты могут пинговать этот wlan1
интерфейс. IP-переадресация/маскарад работают, и если wlan0
подключен к точке доступа WAN, wlan1
клиенты также имеют доступ в Интернет. Идеально!
Но в момент, когда я подключаюсь eth0
, wlan1
клиенты все еще могут подключаться к этой точке доступа (Status connected
), но wlan1
больше не могут пинговать этот интерфейс (и больше нет доступа к WAN). Это странно! DHCP-сервер передал клиенту те же допустимые IP, что и раньше, и статический IP wlan1
также остается прежним ( eth0
и wlan1
имеет статический IP). wlan1
можно пинговать локально с rapsberry (но не с внешнего клиента).
Когда я отключаю его от сети eth0
, он снова работает.
Что не так и почему я больше не могу пропинговать этот интерфейс?
Переадресация 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
...
решение1
Ваши IP-адреса:
- 10.8.0.2/8 для
wlan1
- 10.8.5.1/8 для
eth0
Они находятся втакой жеподсеть. 10.0.0.0/8 охватывает все от 10.0.0.0 до 10.255.255.255.
Однако в вашем диапазоне DHCP маска сети внезапно становится /24.
Общее правило заключается в том, что если вы хотите отправить трафик внутри подсети, вам нужен коммутатор (мост), а для отправки трафика между подсетями вам нужен маршрутизатор. Когда ваша машина получает пакет от одного из ваших подключенных клиентов, который считает, что 10.8.5.0/24 — это подсеть, она не понимает, что с ним делать, поскольку он адресован хосту в той же подсети, что и отправитель.
Вероятно, вы хотите, чтобы /24 был определен везде, поэтому замените сетевую маску для eth0
и wlan1
на /24, а не на /8.
Что касается наблюдаемого поведения: маршруты имеют вес. Более быстрые интерфейсы всплывают наверх. Ваша машина считает wlan1
, что eth0
оба указывают на одно и то же место назначения. Таким образом, она отправляет пакет получшийинтерфейс (самый низкий вес в таблице маршрутизации), который является проводным интерфейсом Ethernet. Если он был правильно настроен с отдельными подсетями, он будет работать просто отлично.