Hostapd 및 dnsmasq를 사용하여 Wi-Fi 핫스팟을 생성할 때 발생하는 문제

Hostapd 및 dnsmasq를 사용하여 Wi-Fi 핫스팟을 생성할 때 발생하는 문제

운영 체제: Pop!_OS 22.04 LTS(64비트)

내 노트북에 액세스 포인트를 만들고 여기에 Android 휴대폰을 연결하려고 합니다. 내 휴대전화가 연결되어 표시됩니다.IP 주소 얻기을 클릭하고 즉시 연결을 끊으세요. DHCP 문제인 것 같은데 확실하지 않습니다. 나의 주요 관심사는이것블로그. 세부사항은 다음과 같습니다:

내 프로젝트 루트 디렉터리에 3개의 파일이 있습니다. 지금 바로makeWAP.sh,호스트 구성 파일그리고dnsmasq.conf. 다음 파일을 붙여넣습니다.

makeWAP.sh

#!/bin/bash                                                                    
export DEV_IN=wlp3s0;
export DEV_OUT=enp2s0;
export DNS_SERV=10.0.0.1;
export DNS_PORT=3000;
echo "Bringing up $DEV_IN"
#This address/mask should match how you configured dnsmasq
ifconfig $DEV_IN up $DNS_SERV netmask 255.255.255.0

echo "Starting dnsmasq"
dnsmasq --resolv-file=/home/abuobaidazishan/DevProjects/makeWAP/dnsmasq.conf

echo "Configuring iptables"
#Clear everything in iptables                                                   
iptables -Z;
iptables -F;
iptables -X;

#Turn on iptables NAT, forwarding, and enable 
#forwarding in the kernel

iptables --table nat --append POSTROUTING --out-interface $DEV_OUT -j MASQUERADE
iptables --append FORWARD --in-interface $DEV_IN -j ACCEPT
sysctl -w net.ipv4.ip_forward=1

echo "Starting hostapd"
hostapd /home/abuobaidazishan/DevProjects/makeWAP/hostapd.conf

dnsmasq.conf

interface=wlp3s0
dhcp-range=10.0.0.3,10.0.0.20,12h
port=3000

호스트 구성 파일

interface=wlp3s0
driver=nl80211
ssid=WatchingU
channel=1

sh makeWAP.sh이것은 루트의 출력입니다.

Bringing up wlp3s0
Starting dnsmasq
Configuring iptables
net.ipv4.ip_forward = 1
Starting hostapd
wlp3s0: interface state UNINITIALIZED->ENABLED
wlp3s0: AP-ENABLED 
wlp3s0: STA 26:b3:4d:c1:3b:49 IEEE 802.11: authenticated
wlp3s0: STA 26:b3:4d:c1:3b:49 IEEE 802.11: associated (aid 1)
wlp3s0: AP-STA-CONNECTED 26:b3:4d:c1:3b:49
wlp3s0: STA 26:b3:4d:c1:3b:49 RADIUS: starting accounting session 922EA81DDF566B77
wlp3s0: AP-STA-DISCONNECTED 26:b3:4d:c1:3b:49

다음은 연결을 유지하려는 휴대폰의 연속 스크린샷입니다.

그림 1 그림 2

이제 DNS 쿼리의 기본 포트가 53이어야 하는데 왜 3000으로 변경했는지 궁금하실 것입니다. 글쎄, netstat -tulnp루트로 실행하면 다음과 같은 결과가 나타납니다.

root@pop-os:/home/abuobaidazishan# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      835/systemd-resolve 
udp        0      0 127.0.0.53:53           0.0.0.0:*                           835/systemd-resolve 

보시다시피 systemd-resolv는 이미 이를 사용하고 있습니다. 따라서 dnsmasq 명령이 실패하며 이는 포트가 이미 사용 중임을 나타냅니다.

출력은 다음과 같습니다 ifconfig.

enp2s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 60:18:95:2f:73:2b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 3728  bytes 962026 (962.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3728  bytes 962026 (962.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.104  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::7d6d:7224:9348:b5d6  prefixlen 64  scopeid 0x20<link>
        ether 90:0f:0c:1c:ad:51  txqueuelen 1000  (Ethernet)
        RX packets 329808  bytes 320182341 (320.1 MB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 139852  bytes 18440551 (18.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

알려주시면 큰 도움이 될 것 같아요이런 일이 일어나고 있습니다. 인터넷 검색을 해보니 다들 조금씩 접근 방식이 다른 것 같습니다. 이를 위해 어느 것을 따라야할지 잘 모르겠습니다. 그리고 제 질문으로 볼 때 제가 초보라는 걸 꽤 확신하시는 것 같아요. 따라서 어떤 도움이라도 대단히 감사하겠습니다.

감사합니다!

답변1

다음 팁을 시도해 보세요.

  1. 네트워크 관리자 비활성화

    sudo systemctl disable NetworkManager
    
  2. "wpa_pairwise"를 설정해 보세요. 예: /etc/hostapd.conf에 다음 줄을 추가합니다.

    wpa_pairwise=TKIP CCMP
    
  3. 다른 Linux 커널 버전을 사용해 보세요. 내 경우 이 솔루션은 "최신" 커널 버전이 아닌 "특정" 커널 버전에서만 작동했습니다.

  4. 또는 로 wpa_passphrase대체 해 보십시오 .wpa_psk/etc/hostapd.conf

제 경우에는 이것이 문제를 해결했습니다. Wi-Fi PSK 비밀번호 인증과 관련된 Hostapd의 버그처럼 느껴집니다.이 관련 질문.

관련 정보