나는 Hostapd를 사용하여 무선 액세스 포인트를 설정했고, dhcp에는 dnsmasq를, 종속 포털에는 nodogsplash를 사용하고 있습니다. 초기 설정에서는 모든 것이 예상대로 작동합니다. 며칠 후 다시 테스트를 해보니 클라이언트가 인증되자 nodogsplash에서 클라이언트가 인증됐다고 보고했는데, 클라이언트를 통해 인터넷에 접속하려고 했더니 접속이 되지 않았습니다. nodogsplash 없이 이 작업을 수행하는 경우 다음 규칙을 수동으로 추가하세요.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
클라이언트가 인터넷에 액세스할 수 있습니다.
구성 파일이나 종속 포털 페이지에서는 아무것도 변경하지 않았습니다.
클라이언트를 인증하는 부분인 nodogsplash 출력에서 가장 자세한 모드를 활성화했습니다.
[5][Thu Jun 18 12:44:19 2020][2075](src/fw_iptables.c:839) Authenticating 10.0.10.160 64:cc:2e:d6:a5:a4
[7][Thu Jun 18 12:44:19 2020][2075](src/util.c:90) Executing command: iptables --wait -t mangle -A ndsOUT -s 10.0.10.160 -m mac --mac-source 64:cc:2e:d6:a5:a4 -j MARK --or-mark 0x30000
[7][Thu Jun 18 12:44:19 2020][2075](src/util.c:93) Setting default SIGCHLD handler SIG_DFL
[7][Thu Jun 18 12:44:19 2020][2075](src/util.c:90) Executing command: iptables --wait -t mangle -A ndsINC -d 10.0.10.160 -j MARK --or-mark 0x30000
[7][Thu Jun 18 12:44:19 2020][2075](src/util.c:93) Setting default SIGCHLD handler SIG_DFL
[7][Thu Jun 18 12:44:19 2020][2075](src/util.c:90) Executing command: iptables --wait -t mangle -A ndsINC -d 10.0.10.160 -j ACCEPT
[7][Thu Jun 18 12:44:19 2020][2075](src/util.c:93) Setting default SIGCHLD handler SIG_DFL
[7][Thu Jun 18 12:44:19 2020][2075](src/auth.c:288) Unlocking client list
[7][Thu Jun 18 12:44:19 2020][2075](src/auth.c:288) Client list unlocked
[5][Thu Jun 18 12:44:19 2020][2075](src/http_microhttpd.c:459) Client [64:cc:2e:d6:a5:a4, 10.0.10.160] authenticated
[7][Thu Jun 18 12:44:23 2020][2075](src/http_microhttpd.c:317) access: GET /nodogsplash_auth/
[7][Thu Jun 18 12:44:23 2020][20751(src/main.c:97) SIGCHLD handler: Trying to reap a child
[7][Thu Jun 18 12:44:23 2020][20751(src/main.c:103) SIGCHLD handler: waitpid(): No child exists now.
[7][Thu Jun 18 12:44:23 2020][2075](src/http_microhttpd.c:317) access: GET /splash.css
[7][Thu Jun 18 12:44:23 2020][2075](src/main.c:97) SIGCHLD handler: Trying to reap a child
[7][Thu Jun 18 12:44:23 2020][2075](src/main.c:103) SIGCHLD handler: waitpid(): No child exists now.
SIGCHLD에 무슨 일이 일어나고 있는지 모르겠지만 그 외에는 어떤 문제도 보고되지 않는 것 같습니다.
내가 사용하고 있는 도구의 구성에는 아무것도 변경되지 않았으므로 이는 기본 시스템(Kali Linux)의 일부 변경으로 인해 발생할 수 있습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
업데이트 1
tcpdump를 사용하여 액세스 포인트의 iface(wlan0)와 인터넷 액세스가 가능한 인터페이스(eth0)의 두 인터페이스에서 트래픽을 검사하면 패킷이 삭제되지 않습니다. 그래서 내 생각에는 Kali 시스템에서 응답이 다시 전송되지 않기 때문에 클라이언트가 인터넷에 액세스할 수 없다는 것입니다. 이번에도 라우팅 테이블 설정 방법을 변경하지 않았습니다. wlan0 인터페이스에 IP와 넷마스크를 할당했습니다.
ifconfig wlan0 up 10.0.10.1 netmask 255.255.255.0
경로를 설정합니다.
route add -net 10.0.10.0 netmask 255.255.255.0 gw 10.0.10.1
답장이 반송되지 않는 이유를 알아내야 합니다.
답변1
nodogsplash가 작동하려면 NAT가 있어야 합니다. 따라서 nodogsplash를 실행하기 전에 다음 iptables 규칙을 추가해야 합니다.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE