使用 dnsmasq 通过 DHCP 和 DNS 设置固定 IP wifi 热点(没有互联网)

使用 dnsmasq 通过 DHCP 和 DNS 设置固定 IP wifi 热点(没有互联网)

我无法将我的计算机(运行 Ubuntu 18.04)设置为具有手动固定 IP 的热点。我希望设备能够通过 WiFi 连接到它,并让它们能够通过端口 80 访问计算机上托管的网站。

所以我想将我的电脑的固定IP设置为192.168.10.1,所以我这样设置热点:

INTERFACE=wlan0 # My wifi card interface
CONNECTION_NAME=testhotspot
MY_IP="192.168.10.1"

sudo nmcli con add type wifi ifname $INTERFACE con-name $CONNECTION_NAME autoconnect yes ssid $CONNECTION_NAME
sudo nmcli con modify $CONNECTION_NAME 802-11-wireless.mode ap ipv4.method manual ipv4.addresses $MY_IP/24 ipv4.gateway $MY_IP
sudo nmcli con modify $CONNECTION_NAME wifi-sec.key-mgmt wpa-psk 
sudo nmcli con modify $CONNECTION_NAME wifi-sec.psk "somepassword"
# do I need to set ipv4.dns?

然后我将 dnsmasq (在 )中设置/etc/dnsmasq为:

address=/#/127.0.0.1
interface=wlan0
except-interface=lo
listen-address=::1,127.0.0.1,192.168.10.1

# DHCP setup
dhcp-range=192.168.10.100,192.168.10.200,12h # lease out 192.168.10.100-200
dhcp-option=option:router,192.168.10.1
dhcp-option=option:dns-server,192.168.10.1
dhcp-option=option:netmask,255.255.255.0
dhcp-leasefile=/var/lib/misc/dnsmasq.leases
dhcp-authoritative

启动 dnsmasq 和热点:

sudo nmcli con up testhotspot
sudo systemctl restart dnsmasq.service

通过此设置,我发现连接到另一台运行 Ubuntu 的计算机(我们称这台计算机 B)上的 wifi 热点,我可以成功 ping 192.168.1.10 并访问我在 192.168.10.1:80 上的网站。

然而,我在尝试使用 Android 手机连接它时遇到了问题,连接不断掉线。我必须将 Android wifi 设置更改为“静态”而不是“DHCP”,并将 DNS 指定为 192.168.10.1,才能成功 ping 通 192.168.10.1。因此,我猜测我没有向客户端正确“宣布”我的 DNS/DHCP 服务器?我尝试将我的热点设置更改为nmcli con modify testhotspot ipv4.dns 192.168.10.1.但是,这并没有解决我的 Android 设备上的问题(它停止断开 wifi 连接,但我仍然无法 ping 通 192.168.10.1?)。

我还注意到,在计算机 B 上,虽然连接到我的热点服务器的 wifi 和提供互联网的路由器,但在我关闭与热点的 wifi 连接之前,无法访问某些公共网站(例如此 askubuntu 站点)服务器。我在上面的设置中做错了什么?

答案1

我发现了我的错误 - 我实际上不需要 DNS,所以我转而使用isc-dhcp-server dhcpd.conf 作为

default-lease-time 600;
max-lease-time 7200;
authoritative;
 
subnet 192.168.10.0 netmask 255.255.255.0 {
 range 192.168.10.100 192.168.10.200;
 option routers 192.168.10.1;
}

以及 /etc/default/isc-dhcp-server 中设置的接口。

编辑:我决定重新使用 dnsmasq - 这个 dnsmasq.conf 对我有用:

no-resolv
bind-interfaces
interface=wlan0 # My hotspot interface
listen-address=192.168.10.1

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

相关内容