防止热点客户端使用 DNS/优先考虑离线热点

防止热点客户端使用 DNS/优先考虑离线热点

我在没有互联网连接且运行 Ubuntu 20.04 的设备(例如 Raspberry Pi)上托管热点。我使用热点,以便其他设备可以将其连接到其上运行的服务器并向其发出 HTTP 请求。但是,我注意到连接到它的客户端(例如手机、笔记本电脑)经常由于 DNS 问题而失去使用互联网的能力(即使它们仍然连接到 4G/以太网) - 我在使用时通常会看到的错误连接到热点时我手机上的 Chrome 为“DNS_PROBE_FINISHED_NO_INTERNET”。

我认为客户端优先考虑使用 wifi 热点进行 DNS/互联网连接,即使该热点不提供?有没有办法告诉客户端不要优先/使用热点网络(无需任何客户端修改),除了对 192.168.10.0/24 或某些地址(例如www.foobar.com

使用 nmcli 设置热点网络,并使用 dnsmasq 作为 DHCP 服务器。更具体的设置是:

WIFI_IF="wlan0"
CON_NAME="myhotspot"
SSID="myhotspot"
MY_IP="192.168.10.1"
sudo nmcli con add type wifi ifname $WIFI_IF con-name $CON_NAME autoconnect yes ssid $SSID
sudo nmcli con modify $CON_NAME 802-11-wireless.mode ap ipv4.method manual ipv4.addresses $MY_IP/24 ipv4.gateway $MY_IP
sudo nmcli con modify $CON_NAME wifi-sec.key-mgmt wpa-psk
sudo nmcli con modify $CON_NAME wifi-sec.psk $2 # password
sudo nmcli con modify $CON_NAME connection.autoconnect-priority 10
sudo nmcli con up $CON_NAME

我将以下 dnsmasq.conf 用于 dnsmasq DHCP 服务器:

no-resolv
bind-interfaces
interface=wlan0
listen-address=192.168.10.1,127.0.0.1

# address=/www.foobar.com/192.168.10.1 # redirect queries to this address to myself


dhcp-range=192.168.10.100,192.168.10.250,255.255.255.0,12h
dhcp-option=option:router,192.168.10.1
dhcp-leasefile=/var/lib/misc/dnsmasq.leases

我尝试port=0在 dnsmasq 中设置关闭 DNS 功能,但没有成功。

答案1

如果您不希望热点充当默认网关,那么您不应该这样做,即您应该删除:

dhcp-option=option:router,192.168.10.1

PS 虽然我认为port=0这仍然是一个好主意,但从技术上讲,客户端不会假设存在任何 DNS 服务器,因为对应的dhcp-option=是客户端上下文中相关的内容。

相关内容