我正在运行这个创建接入点的项目它是建立在hostapd
.
按预期运行,我的以太网连接可用作 wifi:
sudo create_ap wlan0 eth0 wifiname
我希望主机上的 80 端口会自动暴露给客户端,但事实并非如此。
如何创建hostapd
公开 80 端口的热点?我想我可能需要使用iptables
ordnsmasq
但我不确定。
我使用链接的项目作为起点,但我的主要目标是通过 wifi 热点广播端口。
更新:我发现默认情况下主机在 IP 上可用192.168.12.1
。我现在正在寻找一种方法来转发所有内容(或至少是本地主机)热点上的流量流向该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
您无法通过 hostapd 执行此操作,因为端口 80 位于 ISO/OSI 堆栈的第 4 层,AP 工作在第 2 层。因此,您需要识别通过 WIFI 连接的 IP 并使用该 IP 的 IPTABLES