分配永久静态 IP 地址

分配永久静态 IP 地址

我在为运行 Ubuntu 14.04.5 的系统上的默认接口分配永久静态 IP 地址时遇到了困难,eth0因为系统最终没有 IP 地址。

作为以下内容的前提,目标系统是一个嵌入式系统,我们不能允许在系统运行期间发生任何网络接口变化。

我的设置如下:

network-manager已被禁用。

/etc/network/interfaces配置如下:

auto eth0
iface eth0 inet static
    address 192.168.200.1
    netmask 255.255.255.0

启动过程中出现问题,NTP 服务器守护程序可能会导致系统挂起长达 5 分钟。通过谷歌搜索发现一个名为 的包ntpdate有点不正常 - 因此已将其删除(我们有自己的方法来设置系统的日期/时间)。

avahi-autoip服务已被禁用以防止自动分配私有 IP。

但从根本上来说,稍后某个时间点会发生一些事情,即删除绑定的静态 IP 地址eth0- 无论是挥之不去的 DHCP 服务(肯定应该iface eth0 inet static阻止这种情况发生)还是我不知道的其他正在运行的东西。

我注意到的一件事是,在某个时间点,PING对内部网络上的 DNS 服务器(IP 192.168.0.5,由于子网不同,此 DNS 服务器无法访问)执行了某种包更新检查,该检查失败 - 失败后,出现持续不断的消息流,RTNETLINK answers: Network is unavailable没有可行的方法摆脱它们。

作为参考,这里有一些输出:

是否配置

eth0      Link encap:Ethernet  HWaddr 00:14:2d:2c:6f:5b
          inet addr:192.168.200.1  Bcast:192.168.200.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:92 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:13544 (13.5 KB)  TX bytes:7311 (7.3 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:112131 errors:0 dropped:0 overruns:0 frame:0
          TX packets:112131 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:11558635 (11.5 MB)  TX bytes:11558635 (11.5 MB)

IP 地址

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default
    link/ether 92:23:f9:47:e0:5a brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:14:2d:2c:6f:5b brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.1/24 brd 192.168.200.255 scope global eth0
       valid_lft forever preferred_lft forever
4: ip6tnl0: <NOARP> mtu 1452 qdisc noop state DOWN group default
    link/tunnel6 :: brd ::
5: rmnetctl: <NOARP> mtu 1500 qdisc noop state DOWN group default
    link/ipip 0.0.0.0 brd 0.0.0.0
6: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:16:6f:db:90:a2 brd ff:ff:ff:ff:ff:ff

路线-n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.200.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

dh客户端

root      1301  0.0  0.1   3980  2728 ?        S    00:00   0:00 dhclient eth0
root      3198  0.0  0.1   3980  2728 ?        S    00:02   0:00 dhclient eth0

PING 错误

PING 192.168.0.5 (192.168.0.5) 56(84) bytes of data.

--- 192.168.0.5 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

ii  librsync1:armhf                                       0.9.7-10                                            armhf        rsync remote-delta algorithm library
ii  rsync                                                 3.1.0-2ubuntu0.2                                    armhf        fast, versatile, remote (and local) file-copying tool
Reading package lists... Done
Building dependency tree
Reading state information... Done
rsync is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
netcat-openbsd is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
RTNETLINK answers: Network is unreachable
RTNETLINK answers: Network is unreachable
RTNETLINK answers: Network is unreachable
RTNETLINK answers: Network is unreachable
RTNETLINK answers: Network is unreachable

PING 之后进行 ifconfig (注意,没有 IP 地址)

RTNETLINK answers: Network is unreachable
g
eth0      Link encap:Ethernet  HWaddr 00:14:2d:2c:6f:5b
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:113 errors:0 dropped:0 overruns:0 frame:0
          TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:16588 (16.5 KB)  TX bytes:23129 (23.1 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1425523 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1425523 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:214682465 (214.6 MB)  TX bytes:214682465 (214.6 MB)

答案1

好的,所以看起来发生的事情是,最初,当系统配置时,它连接到一个可见 DHCP 服务器的网络。从 DHCP 服务器获得的租约的 IP 地址存储在一个/var/lib/dhcp/dhclient.leases文件中。

eth0通过文件指定的静态 IP 地址也会在 DHCP 客户端超时约 5 分钟后被/etc/network/interfaces撤销,此时dhclient(及类似的相关服务)也会被撤销。avahi-autoip

系统尝试分配上一个租约中的地址,但是由于无法与 DHCP 服务器协商,因此该地址也被撤回,适配器eth0最终获得自动私有 IP 地址。此 APIPA 地址由avahi-autoip服务分配 - 如果停止,则阻止分配私有地址。

针对此问题,有几个临时的解决方案:

  1. 删除/var/lib/dhcp/dhclient.leases文件
  2. dhclient使用以下命令彻底停止服务pkill
  3. dhclient彻底删除包

在我们的案例中,选项 3 是最佳方法。

此外,导致PING执行并最终失败的原因RTNETLINK answers: Network is unavailable仍在继续发生。虽然这会阻塞调试终端输出,但问题并不大。

相关内容