저는 임베디드 Linux 시스템(kernel-5.10.24)을 개발 중이고 시스템에 RTL8723 WIFI 모듈이 있습니다.
이제 Hostapd/udhcpd/dnsmasq를 사용하여 대상 보드를 WIFI AP로 구성합니다.
Hostapd.conf는 다음과 같습니다.
interface=wlan0
driver=nl80211
ssid=TestWIFIAP
channel=1
hw_mode=g
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
udhcpd.conf는
start 192.168.0.20 #default: 192.168.0.20
end 192.168.0.254 #default: 192.168.0.254
# The interface that udhcpd will use
interface wlan0 #default: eth0
remaining yes
......
opt dns 8.8.8.8 8.8.4.4
opt subnet 255.255.255.0
opt router 192.168.0.1
시스템의 wlan0 구성은 다음과 같습니다.192.168.0.1
Hostapd/udhcpd를 시작한 후 Windows PC를 AP에 연결할 수 있으며 PC에 할당된 IP는 입니다 192.168.0.20
.
내 PC에서 AP의 IP를 ping할 수 있지만 , AP 내에서 내 PC의 IP를 ping 192.168.0.1
할 수는 없습니다 .192.168.0.20
AP의 네트워크 정보는 다음과 같습니다.
# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:40 errors:0 dropped:0 overruns:0 frame:0
TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3744 (3.6 KiB) TX bytes:3744 (3.6 KiB)
wlan0 Link encap:Ethernet HWaddr 30:95:87:XX:XX:XX
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15966 errors:0 dropped:64 overruns:0 frame:0
TX packets:7603 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20882819 (19.9 MiB) TX bytes:647826 (632.6 KiB)
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 wlan0
iperf -s
그런 다음 AP에서 실행을 시작했고 iperf -c 192.168.0.1 -t 10
내 PC에서는 제대로 작동합니다. 하지만
AP에서 실행하면 실패했습니다.iperf -c 192.168.0.20 -t 10
비슷한 질문을 검색해 보았지만 확실한 해결책/설명이 없었습니다.
Linux AP의 방화벽 설정은 다음과 같습니다.
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
arping -I wlan0 192.168.0.20
Windows PC용 MAC 도 얻을 수 있습니다. 그러나 Linux AP에서 Windows PC를 ping하는 데 여전히 실패합니다.
답변1
나는 또 다른 시험을 치르고 답을 얻었다.
Linux 보드를 호스트 모드로 설정하고 사무실 WIFI AP에 연결했는데 IP는 192.168.95.77입니다.
그런 다음 Windows PC를 동일한 WIFI AP에 연결했는데 IP는 192.168.95.96입니다.
Windows PC에서 Linux 보드로 ping을 보낼 수 있지만 Linux 보드에서 Windows PC로 ping할 수는 없습니다. 질문에 게시한 것과 동일한 문제입니다.
그래서 IT 팀에 문의하여 Windows PC에 192.168
서브넷에서 들어오는 핑을 거부하도록 방화벽이 구성되어 있음을 확인했습니다.