捕获的DNS服务器示例(Mongoose More是一个嵌入式Web服务器)


本周,我们以DNS服务器为例继续介绍Mongoose嵌入式Web服务器的系列示例。

在这种情况下,它是一个DNS服务器,打算用来构建一个圈养门户,即用户在使用公共WiFi之前需要登录的地方。这样的服务器用自己的IP地址响应所有查询,同时运行的HTTP服务器为用户提供门户页面。

使用Mongoose构建DNS服务器很容易:mg_bind到UDP://端口,调用mg_set_protocol_dns并处理传入的MG_DNS_MessageEvents。

我们的captive_dns_server example把这一切放在一起:

$ ./captive_dns_server
Listening on 'udp://:5533'
ev_handler           Q type 1 name example.org

---

$ dig @localhost -p 5533 example.org

; <<>> DiG 9.9.5-11ubuntu1.3-Ubuntu <<>> @localhost -p 5533 example.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44936
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITHY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.org.                   IN      A

;; ANSWER SECTION:
example.org.            10      IN      A       127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#5533(127.0.0.1)
;; WHEN: Mon Apr 18 19:56:51 IST 2016
;; MSG SIZE  rcvd: 56

仿效这个例子

要遵循示例,请下载Mongoose Embedded WebServer。它在GPLv2下是开源的,所以对于非商业用途是免费的。

Download Mongoose