지역 조사 시스템을 구축하고 있습니다. Linux 노트북은 Limesurvey(일반적인 LAMP 스택에서)를 실행하며 회의 참가자에게 배포된 5개의 태블릿을 통해 액세스할 수 있습니다. 태블릿은 설문조사를 로드하도록 미리 구성되어 있으므로 문제가 없습니다. 하지만 난 허락하고 싶어참석자는 휴대폰에서도 설문조사 링크에 액세스할 수 있습니다.. 내가 할 계획은 다음과 같습니다.
노트북은 액세스 포인트로 사용됩니다. DNSMASQ는 AP에 가입한 후 IP를 제공합니다. 나는 그들에게 간단한 지역 주소(예:http://라임) 설문조사 인터페이스에 액세스하려면 DNSMASQ가 DNS 서버 역할을 하기 때문에 이것이 가능해야 합니다. 그러면 석회 해결 방법을 알 수 있습니다.
클라이언트 오류를 신속하게 처리하고 싶습니다. 예를 들어 AP에 가입한 후 실수로 다른 주소를 입력한 경우(또는 단지 google.com과 같은 온라인에 접속하려는 경우) - DNSMASQ를 원합니다.곧오류를 반환하려면 올바른 링크를 제공하여 사용자 정의 오류 페이지로 리디렉션하는 것이 좋습니다.
편집하다:나는 이것을 조사했다. 아마도 내가 해야 할 일이 있을 것이다.포로 포털유형 솔루션. 나는 여전히 가장 간단한 방법으로 스플래시 페이지를 표시하고 싶습니다. 즉, 설문조사를 나열하고 다른 모든 요청을 스플래시 페이지로 제거/리디렉션하고 싶습니다. 이 연결을 통해 인터넷을 사용할 수 없기 때문에 인증이 필요하지 않습니다. 이 경우 인증은 추가 클릭에 불과하지만 사람들이 설문조사에 쉽게 액세스할 수 있기를 바랍니다.
가능합니까? 이 계획을 실행하는 더 좋은 방법이 있습니까?
답변1
틀림없이! 모든 이름 확인을 단일 주소로 리디렉션하려면 다음 명령을 사용하십시오.
address=/#/10.0.0.101
이는 파일의 필수 항목입니다 /etc/dnsmasq.conf
. 어떤 이유로든 서버가 다시 시작되면 이러한 구성이 적용되므로 이 방법을 사용하는 것이 좋습니다.
명령줄에서 이 옵션은 다음과 같이 호출됩니다.
-A, --address=/<domain>[/<domain>...]/[<ipaddr>]
아래는 dnsmasq 매뉴얼의 사본입니다 address=
.
-i vlan
그러나 (사용할 것으로 예상되는 인터페이스에 대한) 설정과 -a 10.6.66.1
(dnsmasq가 DNS 확인을 수신할 것으로 예상되는 주소에 대한) 설정도 합리적으로 보입니다. 그러지 마세요! .
dnsmasq가 와일드카드 모드에서 포트 53의 모든 서버 주소에 바인딩할 수 있도록 허용합니다. 이렇게 하면 DNS 확인을 위해 서버에 대한 모든 요청이 dnsmasq에 의해 응답됩니다.
세 가지 모드는 "Wildcard", "Bound Interface" 및 "Bind Dynamic"입니다.
"와일드카드" 모드에서 dnsmasq는 와일드카드 IP 주소(0.0.0.0 또는 ::)에 바인딩됩니다. 이를 통해 해당 포트에서 서버로 전송되는 모든 패킷을 수신할 수 있습니다. 액세스 제어(--interface, --read-interface, --listen-address 등)는 dnsmasq에 의해 구현됩니다. 이는 커널에 쿼리하여 패킷이 수신되는 인터페이스와 패킷이 전송되는 주소를 결정합니다. 구성된 규칙을 적용합니다. 다른 모드가 지정되지 않은 경우 와일드카드 모드가 기본 모드입니다.
포트 53 사용(외부 클라이언트의 경우 기본값):
port=53 # It is set to be 53 by default, not really needed.
둘 다 닫고 비활성화합니다.avahi-dns
그리고systemd.resolved
포트 53 또는 5353에서 수신 대기 중인 다른 프로그램/서비스가 없는지 확인하세요.
$ netstat -pantu | grep ':53'
또한 이 옵션을 설정하면 dnsmasq DNS 확인자가 오류(NXDOMAIN)가 있는 유사한(점 없는) 이름을 확인 mylocaldomain
하고 (특정) 이름 확인이 다른 서버로 전달되지 않도록 할 수 있습니다.
# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
/etc/resolv.conf
에 설정된 서버가 사용 중이 아닌지 확인하세요 .
no-resolv
no-poll
위의 모든 내용은 모든 도메인을 단순 주소로 확인하도록 dnsmasq의 DNS 측을 구성합니다. 원하는 다른 주소를 확인하기 위해 다른 이름을 파일에 포함시켜 추가하는 것이 여전히 가능합니다 /etc/hosts
.
127.0.0.1
10.0.3.101 linum
마지막 주소는 조사에 사용된 웹서버의 주소여야 합니다.
위의 초기 주소(10.0.0.101)는 설문 페이지 접속 방법을 설명하는 오류 페이지여야 합니다.
하지만 그게 전부는 아닙니다. 또한 dnsmasq DNS 해석기 주소와 함께 네임서버 옵션을 제공하도록 DHCP 서버를 구성해야 합니다(옵션 번호 5를 사용하지 마십시오. 더 이상 사용되지 않습니다(20년 이상 사용되었어야 함)).
dhcp-option=6,10.0.0.101
또한 dnsmasq의 DHCP 부분에 필요한 기타 구성도 있습니다.
이렇게 하면 컴퓨터(태블릿 또는 휴대폰)가 정의된 DNS 서버에서 제공하는 DHCP 주소를 얻을 수 있습니다. 이를 준수하는 모든 컴퓨터는 이러한 구성 옵션을 존중하며 다른 주소는 확인할 수 없습니다.
그러나 장치는 DNS 확인을 요청하지 않고 직접 IP 번호에 액세스하려고 시도할 수도 있습니다. 이러한 상황을 방지하려면 로컬 네트워크를 제공하는 라우터에서 IPFilter 구성을 사용해야 합니다.
~에서man dnsmasq
:
-A, --address=/[/...]/[]
지정된 도메인의 모든 호스트에 대해 반환될 IP 주소를 지정합니다. 도메인 내의 쿼리는 전달되지 않으며 항상 지정된 IP 주소(IPv4 또는 IPv6일 수 있음)로 응답됩니다. 도메인에 IPv4 및 IPv6 주소를 모두 제공하려면 -A 플래그를 반복해서 사용하세요. 단일 쿼리에 여러 IP 주소를 포함하려면 대신 --addn-hosts=를 사용하세요. /etc/hosts 및 DHCP 임대는 개별 이름에 대한 이 설정을 재정의합니다. 일반적인 용도는 배너 광고를 피하기 위해 전체 doubleclick.net 도메인을 친숙한 로컬 웹 서버로 리디렉션하는 것입니다. 도메인 사양은 --server와 동일하게 작동하지만 모든 도메인과 일치하는 /#/의 추가 기능이 있습니다. 따라서 --address=/#/1.2.3.4는 /etc/hosts 또는 DHCP에서 응답하지 않고 보다 구체적인 --server 지시문을 통해 업스트림 이름 서버로 전송되지 않는 모든 쿼리에 대해 항상 1.2.3.4를 반환합니다. --server의 경우 주소가 없는 하나 이상의 도메인은 no-such-domain 응답을 반환하므로 --address=/example.com/은 --server=/example.com/과 동일하며 예를 들어 NXDOMAIN을 반환합니다. . com 및 모든 하위 도메인.
또한 읽어보세요:
답변2
먼저 클라이언트가 아래와 같이 간단한 이름 URL을 작성하는 작업 솔루션에 중점을 둘 것입니다.http://라임디버깅이 더 쉬워집니다.
아마도 인터넷 액세스를 제공할 필요가 없으므로 캡티브 포털을 완전히 구현할 필요는 없을 것입니다.어느귀하가 제공하는 DNS 답변은 dnsmasq를 통해 귀하의 페이지를 가리킵니다.
따라서 가장 쉬운 방법은 웹 서버에 원하는 가상 호스트를 생성하고 모든 요청을 해당 가상 호스트의 기본 수신 소켓(*)으로 리디렉션하는 것입니다.
그러나 이것은 큰 문제입니다. Android 및 iOS 장치는 특정 URL에 액세스해야 한다고 주장합니다.연결됨. 그럼에도 불구하고 나는 이 URL을 귀하의 웹사이트에 올려놓고 끝내겠습니다.