![ifup ethX 之后“RTNETLINK 回答:无效参数”](https://linux22.com/image/208605/ifup%20ethX%20%E4%B9%8B%E5%90%8E%E2%80%9CRTNETLINK%20%E5%9B%9E%E7%AD%94%EF%BC%9A%E6%97%A0%E6%95%88%E5%8F%82%E6%95%B0%E2%80%9D.png)
在装有 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 回答: 文件存在“ 错误。