ifup ethX 之后“RTNETLINK 回答:无效参数”

ifup ethX 之后“RTNETLINK 回答:无效参数”

在装有 Debian 10 的设备上,我想通过修改对 IP 进行永久更改/etc/网络/接口。因此,我将其修改如下:

    auto lo
    iface lo inet loopback

    auto eth0
    #iface eth0 inet dhcp
    iface eth0 inet static
      address 192.168.109.11
      netmask 255.255.255.0
      gateway 192.168.109.254

之后我执行以下操作:

ifdown eth0 && ifup eth0

但此时它返回以下错误:

root@var-som-mx6:~# ifdown eth0 && ifup eth0 --verbose
ifdown: interface eth0 not configured

ifup: configuring interface eth0=eth0 (inet)
/bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/hostapd
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
/sbin/ip addr add 192.168.109.12/255.255.255.0 broadcast 192.168.109.255      dev eth0 label eth0
/sbin/ip link set dev eth0   up
 /sbin/ip route add default via 192.168.109.254  dev eth0 onlink 
RTNETLINK answers: Invalid argument
ifup: failed to bring up eth0

如果配置告诉我以下内容:

root@var-som-mx6:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.109.11  netmask 255.255.255.0  broadcast 192.168.109.255
        inet6 fe80::fadc:7aff:fe3e:8dbb  prefixlen 64  scopeid 0x20<link>
        ether f8:dc:7a:3e:8d:bb  txqueuelen 1000  (Ethernet)
        RX packets 35999  bytes 8217478 (7.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5137  bytes 1559379 (1.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 2837  bytes 258173 (252.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2837  bytes 258173 (252.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我究竟做错了什么?

答案1

如果向下IFUP似乎不是在网络接口上操作的最佳方式,因为 RTNETLINK(Linux 路由套接字)存在大量伪错误,这些错误只有通过系统重新启动才能消失,这可能并不理想。

恕我直言,处理这个问题的主要方法是通过如果配置命令(另请考虑如果配置已弃用并被替换ip命令) :

root@var-som-mx6:~# ifconfig eth0 down
** now, update /etc/network/interfaces.. **
root@var-som-mx6:~# ifconfig eth0 up 192.168.109.11 netmask 255.255.255.0
root@var-som-mx6:~# route add default gw 192.168.109.254

请注意,您应该更新/etc/网络/接口 ifconfig eth0 关闭

顺便说一句,如果你有理由使用如果向下IFUP,您可以按如下方式解决此问题:

root@var-som-mx6:~# ifdown --force eth0
** now, update /etc/network/interfaces.. **
root@var-som-mx6:~# ifup --force eth0
root@var-som-mx6:~# route add default gw 192.168.109.254

其中 --force 将强制配置或取消配置接口(来源), 尤其 :

该程序会记录网络接口是打开还是关闭。在特殊情况下,这些记录可能会与接口的真实状态不一致。例如,使用 ifup 启动并随后使用 ifconfig 取消配置的接口仍将记录为 up。要解决此问题,您可以使用 --force 选项强制 ifup 或 ifdown 运行配置或取消配置命令,无论其认为接口的当前状态如何。

如果您还喜欢将所有内容都放在一个命令行中,则正确的一行代码如下:

root@var-som-mx6:~# ifdown eth0 --force && ip addr flush dev eth0 && route add default gw 192.168.109.254 && ifup eth0 --force

在哪里ip 地址刷新 dev eth0至关重要。

该解决方案还解决了“RTNETLINK 回答: 文件存在“ 错误。

相关内容