저는 인터넷에 연결되지 않고 Ubuntu 20.04를 실행하는 장치(예: Raspberry Pi)에서 핫스팟을 호스팅하고 있습니다. 저는 핫스팟을 사용하여 다른 장치가 해당 서버에서 실행되는 서버에 연결하고 HTTP 요청을 할 수 있도록 합니다. 그러나 연결된 클라이언트(예: 휴대폰, 노트북)가 DNS 문제로 인해(아직 4G/이더넷에 연결되어 있음에도 불구하고) 인터넷 사용 기능을 상실하는 경우가 종종 있는 것으로 나타났습니다. 이는 Chrome을 사용할 때 일반적으로 볼 수 있는 버그입니다. 핫스팟에 연결되면 내 전화기에 "DNS_PROBE_FINISHED_NO_INTERNET"이라고 표시됩니다.
해당 핫스팟을 사용할 수 없는 경우에도 클라이언트가 DNS/인터넷 연결을 위해 Wi-Fi 핫스팟 사용을 우선시한다고 가정합니까? 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 DHCP 서버에는 다음 dnsmasq.conf를 사용합니다.
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=
클라이언트 컨텍스트와 관련되어 있기 때문에 DNS 서버가 존재한다고 가정하지 않습니다.