这可能是一个不寻常的请求:我试图让Debian
Linux盒子在启动时始终给自己一个自己分配的IP地址(即169.254.x.y).特别是,即使LAN上存在DHCP服务器,我也希望它能够做到这一点.也就是说,它不应该从DHCP服务器请求IP地址.
从我在“man interfaces”文本中可以看到,“manual”有一个选项,“dhcp”有一个选项.手动分配不起作用,因为我需要多个盒子才能在同一个局域网上工作而不需要任何手动配置……而“dhcp”可以满足我的需要,但前提是局域网上没有DHCP服务器. (要求是这些盒子的功能不应受DHCP服务器存在或不存在的影响).
是否有一个技巧可以用来获得这种行为?
编辑:通过“无手动配置”,我的意思是我应该可以把这个盒子(无头)带到任何地方的任何局域网,插入以太网电缆,让它做它的事情.我不应该ssh到框中并编辑文件,以便每次将其移动到不同的LAN时使其工作.
解决方法
如果安装avahi-autoipd软件包,并在自定义init或if-up.d脚本中使用–force-bind选项运行它,则始终会获得链接本地地址.
然后,您可以在interfaces(5)文件中使用iface eth0 inet手册,尽管您需要编辑/etc/network/if-up.d/avahi-autoipd以向方法行添加手册.
在Avahi wiki上有关于avahi-autoipd的更多信息.
就个人而言,我会编辑/etc/network/if-up.d/avahi-autoipd,例如:
--- avahi-autoipd 2010-08-04 04:26:49.000000000 +0800 +++ avahi-autoipd.1 2010-11-11 09:57:54.000000000 +0800 @@ -13,10 +13,13 @@ esac case "$METHOD" in - static|dhcp|NetworkManager) ;; + static|dhcp|NetworkManager|linklocal) ;; *) exit 0 esac +if [ "$METHOD" == "linklocal" ]; then + /usr/sbin/avahi-autoipd --force-bind --daemonize --wait $IFACE 2> /dev/null +fi if [ -x /bin/ip ]; then # route already present?
然后,您可以将接口列为iface eth0 inet linklocal.对if-down.d脚本进行的编辑留给读者练习.