zeroconf和avahi

Zeroconf
Zero configuration networking(zeroconf)零配置网络服务规范,是一种用于自动生成可用IP地址的网络技术,不需要额外的手动配置和专属的配置服务器。

“零配置网络服务”的目标,是让非专业用户也能便捷的连接各种网络设备,例如计算机,打印机等。整个搭建网络的过程都是通过程式自动化实现。如果没有zeroconf,用户必须手动配置一些服务,例如DHCP、DNS,计算机网络的其他设置等。这些对非技术用户和新用户们来说是很难的事情。

Zeroconf规范的提出者是Apple公司.


Avahi
Avahi 是Zeroconf规范的开源实现,常见使用在Linux上。包含了一整套多播DNS(multicastDNS)/DNS-SD网络服务的实现。它使用的发布授权是LGPL。Zeroconf规范的另一个实现是Apple公司的Bonjour程式。Avahi和Bonjour相互兼容(废话,都走同一个规范标准嘛,就象IE,Firefox,chrome都能跑HTTP1.1一样)。

Avahi允许程序在不需要进行手动网络配置的情况下,在一个本地网络中发布和获知各种服务和主机。例如,当某用户把他的计算机接入到某个局域网时,如果他的机器运行有Avahi服务,则Avahi程式自动广播,从而发现网络中可用的打印机、共享文件和可相互聊天的其他用户。这有点象他正在接收局域网中的各种网络广告一样。

Linux下系统实际启动的进程名,是avahi-daemon

 

 

 

很多Linux发行版都默认安装该服务,当系统无法连接DHCP server的时候,就会尝试通过ZEROCONF来获取IP。

在CentOS5.x中,ZEROCONF的路由项是在下面的启动脚本被添加到路由表的。
/etc/init.d/network会调用 /etc/sysconfig/network-scripts/ifup-eth 脚本,ifup-eth 脚本会添加ZEROCONF路由项,代码如下:

  1. # Add Zeroconf route.
  2. if [ -z "${NOZEROCONF}" -a "${ISALIAS}" = "no" -a "${REALDEVICE}" != "lo" ]; then
  3. ip route replace 169.254.0.0/16 dev ${REALDEVICE}
  4. fi

那有没有办法禁用ZEROCONF呢?
可以通过在 "/etc/sysconfig/network" 文件中增加一行“NOZEROCONF=yes”来达到这个目的。
其实,给 NOZEROCONF 赋任意值都是同样的效果,从上面的代码就可以看出,它只检测 NOZEROCONF 是否为空。
当然,修改完 "/etc/sysconfig/network" 之后,必须重启网络才能生效:/etc/init.d/network restart

你可能感兴趣的:(zeroconf和avahi)