有没有办法强制我的Linux机箱始终使用自我分配的IP地址启动?

这可能是一个不寻常的请求:我试图让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脚本进行的编辑留给读者练习.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...