dnsmasq를 사용하여 DHCP 및 DNS를 통해 고정 IP Wi-Fi 핫스팟(인터넷 없음) 설정

dnsmasq를 사용하여 DHCP 및 DNS를 통해 고정 IP Wi-Fi 핫스팟(인터넷 없음) 설정

내 컴퓨터(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(in)을 다음과 같이 설정했습니다 /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라고 칭함)의 Wi-Fi 핫스팟에 연결되어 192.168.1.10에 성공적으로 핑을 보내고 192.168.10.1:80에서 내 웹 사이트에 액세스할 수 있다는 것을 알았습니다.

하지만 Android 휴대폰을 사용하여 연결하려고 할 때 문제가 발생하여 연결이 계속 끊어졌습니다. 192.168.10.1에 성공적으로 ping을 보내려면 Android Wi-Fi 설정을 "DHCP" 대신 "정적"으로 변경하고 DNS를 192.168.10.1로 지정해야 했습니다. 그렇다면 내 DNS/DHCP 서버가 클라이언트에게 제대로 "알려지지" 않은 것 같습니다. 핫스팟 설정을 nmcli con modify testhotspot ipv4.dns 192.168.10.1.

또한 컴퓨터 B에서 내 핫스팟 서버의 Wi-Fi와 인터넷을 제공하는 라우터에 연결되어 있는 동안 핫스팟 서버에 대한 Wi-Fi 연결을 끊을 때까지 일부 공개 웹사이트(예: 이 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

관련 정보