Chen Jian

导航

 

在很多ubuntu开启wifi热点的教程中,配置比较繁琐的是hostapd+dnsmasq,很多教程都给出了dnsmasq的安装过程,其实在ubuntu桌面版系统下,已经集成到NetworkManager了,不过这个软件包叫dnsmasq-base。以下内容中的dnsmasq指的是dnsmasq-base。

如果你用sudo apt-get install dnsmasq会把这两个软件包都安上。

[html] view plain copy
  1. sudo dpkg -l dnsmasq*  

结果

[html] view plain copy
  1. 期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)  
  2. | 状态=未安装(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)/触发器等待(W)/触发器未决(T)  
  3. |/ 错误?=(无)/须重装(R) (状态,错误:大写=故障)  
  4. ||/ 名称           版本         Architecture 描述  
  5. +++-==============-============-============-=================================  
  6. un  dnsmasq        <none>       <none>       (无可用描述)  
  7. ii  dnsmasq-base   2.68-1       i386         Small caching DNS proxy and DHCP/  

可以看到集成到NetworkManager的dnsmasq安装包是dnsmasq-base,不是dnsmasq

这里再引用官网的一段话https://help.ubuntu.com/community/Dnsmasq

Note that the package "dnsmasq" interferes with Network Manager which can use "dnsmasq-base" to provide DHCP services when sharing an internet connection. Therefore, if you use network manager (fine in simple set-ups only), then install dnsmasq-base, but not dnsmasq. If you have a more complicated set-up, uninstall network manager, use dnsmasq, or similar software (bind9, dhcpd, etc), and configure things by hand.

简单的翻译一下吧

Network Manager下使用的dnsmasq软件包名字为dnsmasq-base,用来提供DHCP服务和网络共享。因此如果你使用Network Manager,那么你应该安装dnsmasq-base,而不是dnsmasq。如果你需要完整的配置,那么你需要卸载Network Manager,使用dnsmasq或类似的软件如bind9,dhcpd等来手动配置它
这里涉及到NetworkManager和network两种网络配置管理的问题,由于hostapd需要禁用Network Manager,所以network管理的方式下dnsmasq-base不知道还能不能用

很多教程给出的配置文件是/etc/dnsmasq.conf,如果没有这个配置文件,也可以通过命令来配置它,kde-nm-connection-editor和自带的ap-hoc模式都没有/etc/dnsmasq.conf,都是通过命令来配置的

查看以下dnsmasq能干什么吧

[html] view plain copy
  1. man dnsmasq  

dnsmasq - A lightweight DHCP and caching DNS server.
dnsmasq  is a lightweight DNS, TFTP, PXE, router advertisement and DHCP
server. It is intended to provide coupled DNS and  DHCP  service  to  a
LAN.
dnsmasq是一个轻量级的DHCP和DNS缓存服务器。
dnsmasq是一个轻量级的DNS, TFTP, PXE, 通告路由器和DHCP服务器。它的目的是提供局域网内DNS服务器和DHCP服务器的耦合。

一个简单的配置文件

[html] view plain copy
  1. cat /etc/dnsmasq.conf  

例子

[html] view plain copy
  1. default-lease-time 600;  #默认的租约时间,单位秒  
  2. max-lease-time 7200; #最大的租约时间,单位秒  
  3. subnet 10.10.10.0 netmask 255.255.255.0 { #设置子网声明  
  4.     range 10.10.10.10 10.10.10.100; #设置分配的地址池范围  
  5.     option routers 10.10.10.1; #路由器地址  
  6.     option domain-name-servers 8.8.8.8; #DNS服务器地址  
  7.     option broadcast-address 10.10.10.255; #路由器的广播地址  
  8. }  

打印的系统日志信息看看dnsmasq的工作过程

[html] view plain copy
  1. cat /var/log/syslog  

 

[html] view plain copy
  1. Sep 20 15:19:23 Lenovo-B470 NetworkManager[734]: <info> Starting dnsmasq...  
  2. Sep 20 15:19:23 Lenovo-B470 NetworkManager[734]: <info> (wlan1): device state ch  
  3. ange: ip-config -> secondaries (reason 'none') [70 90 0]  
  4. Sep 20 15:19:23 Lenovo-B470 NetworkManager[734]: <info> Activation (wlan1) Stage  
  5.  5 of 5 (IPv4 Commit) complete.  
  6. Sep 20 15:19:23 Lenovo-B470 dnsmasq[15540]: started, version 2.68 cachesize 150  
  7. Sep 20 15:19:23 Lenovo-B470 dnsmasq[15540]: compile time options: IPv6 GNU-getop  
  8. t DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth  
  9. Sep 20 15:19:23 Lenovo-B470 dnsmasq-dhcp[15540]: DHCP, IP range 10.42.0.10 -- 10  
  10. .42.0.100, lease time 1h  
  11. Sep 20 15:19:23 Lenovo-B470 dnsmasq[15540]: reading /etc/resolv.conf  
  12. Sep 20 15:19:23 Lenovo-B470 dnsmasq[15540]: using nameserver 202.199.128.6#53  
  13. Sep 20 15:19:23 Lenovo-B470 dnsmasq[15540]: using nameserver 202.96.64.68#53  
  14. Sep 20 15:19:23 Lenovo-B470 dnsmasq[15540]: 清除缓存  

上面这段可以看出来,NetworkManager里的dnsmasq并没有读取/etc/dnsmasq.conf,而是通过命令指定了地址范围为10.42.0.10 -- 10
.42.0.100,租约时间为1小时
下面是DHCP分配IP地址的过程

[html] view plain copy
  1. Sep 20 15:20:14 Lenovo-B470 dnsmasq-dhcp[15540]: DHCPDISCOVER(wlan1) 80:e6:50:74:2e:d4   
  2. Sep 20 15:20:14 Lenovo-B470 dnsmasq-dhcp[15540]: DHCPOFFER(wlan1) 10.42.0.70 80:e6:50:74:2e:d4   
  3. Sep 20 15:20:14 Lenovo-B470 dnsmasq-dhcp[15540]: DHCPDISCOVER(wlan1) 80:e6:50:74:2e:d4   
  4. Sep 20 15:20:14 Lenovo-B470 dnsmasq-dhcp[15540]: DHCPOFFER(wlan1) 10.42.0.70 80:e6:50:74:2e:d4   
  5. Sep 20 15:20:15 Lenovo-B470 dnsmasq-dhcp[15540]: DHCPREQUEST(wlan1) 10.42.0.70 80:e6:50:74:2e:d4   
  6. Sep 20 15:20:15 Lenovo-B470 dnsmasq-dhcp[15540]: DHCPACK(wlan1) 10.42.0.70 80:e6:50:74:2e:d4 iPad  
  7. Sep 20 15:20:16 Lenovo-B470 dnsmasq-dhcp[15540]: DHCPREQUEST(wlan1) 10.42.0.70 80:e6:50:74:2e:d4   
  8. Sep 20 15:20:16 Lenovo-B470 dnsmasq-dhcp[15540]: DHCPACK(wlan1) 10.42.0.70 80:e6:50:74:2e:d4 iPad  

dnsmasq如何禁用呢

方法一.删除NetworkManager配置信息

[html] view plain copy
  1. sudo vim /etc/NetworkManager/NetworkManager.conf  

删除下面的内容,然后保存

[html] view plain copy
  1. dns=dnsmasq  

方法二.卸载dnsmasq-base软件包

[html] view plain copy
    1. sudo apt-get remove dnsmasq-base 
posted on 2018-01-17 11:50  Chen Jian  阅读(778)  评论(0编辑  收藏  举报