나는 이것을 실행하고있다액세스 포인트를 생성하는 프로젝트에 구축되었습니다 hostapd
.
예상대로 작동하며 이더넷 연결은 Wi-Fi로 작동합니다.
sudo create_ap wlan0 eth0 wifiname
호스트의 포트 80이 클라이언트에 자동으로 노출될 것으로 예상했지만 그렇지 않습니다.
hostapd
포트 80을 노출하는 핫스팟을 만드는 방법은 무엇입니까 ? iptables
or 을 사용해야 할 것 같은데 dnsmasq
잘 모르겠습니다.
연결된 프로젝트를 시작점으로 사용하고 있지만 주요 목표는 Wi-Fi 핫스팟을 통해 포트를 브로드캐스트하는 것입니다.
고쳐 쓰다:나는 호스트가 기본적으로 IP에서 사용 가능하다는 것을 발견했습니다 192.168.12.1
. 나는 지금 모든 것을 전달할 방법을 찾고 있습니다.(또는 적어도 localhost)핫스팟의 트래픽은 해당 IP로 이동합니다.
하지만 여전히 호스트 자체에서 다른 도메인을 확인할 수 있어야 합니다.
답변1
를 사용하여 원하는 동작을 얻을 수 있었습니다 dnsmasq
. 기본 dnsmasq.conf
위치에 다음을 추가했기 때문에 처음에는 혼란스러웠습니다.
address=/#/192.168.12.1
모든 트래픽을 해당 IP로 전달해야 192.168.12.1
하지만 작동하지 않는 것으로 나타났습니다.
나중에 top
프로그램을 실행했을 때 호출되었지만 create_ap
폴더에 dnsmasq
사용자 정의가 있는 것을 발견했습니다.dnsmasq.conf
/tmp/
내가 찾은 소스 읽기이 조각:
MTU=$(get_mtu $INTERNET_IFACE)
[[ -n "$MTU" ]] && echo "dhcp-option-force=option:mtu,${MTU}" >> $CONFDIR/dnsmasq.conf
[[ $ETC_HOSTS -eq 0 ]] && echo no-hosts >> $CONFDIR/dnsmasq.conf
[[ -n "$ADDN_HOSTS" ]] && echo "addn-hosts=${ADDN_HOSTS}" >> $CONFDIR/dnsmasq.conf
if [[ "$SHARE_METHOD" == "none" && "$REDIRECT_TO_LOCALHOST" == "1" ]]; then
cat << EOF >> $CONFDIR/dnsmasq.conf
address=/#/$GATEWAY
해당 명령문 내에 다음 줄을 추가하여 임시 dnsmasq 파일에 구성을 추가했습니다.
echo "address=/#/${GATEWAY}" >> $CONFDIR/dnsmasq.conf
추가되면 http
AP의 모든 주소가 192.168.12.1
브라우저로 전달되며, 포트가 제공되지 않으면 브라우저가 자동으로 포트 80을 가정하므로 더 이상 문제가 없습니다.
답변2
포트 80이 ISO/OSI 스택의 계층 4에 있고 AP가 계층 2에서 작동하기 때문에 Hostapd를 통해 이 작업을 수행할 수 없습니다. 따라서 WIFI를 통해 연결하려는 IP를 식별하고 해당 IP의 IPTABLES를 사용해야 합니다.