我有一个 Debian 系统,作为无线路由器使用eth0
和wlan0
。现在我手动添加了一个额外的eth1
网络ifconfig
:
alix:~# ifconfig eth1 192.168.0.2 网络掩码 255.255.255.0 alix:~# netstat -rn 内核IP路由表 目标网关 Genmask 标志 MSS 窗口 irtt Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 alix:~# ping 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) 字节数据。 来自 192.168.0.254 的 64 字节:icmp_req=1 ttl=64 时间=0.537 ms 来自 192.168.0.254 的 64 个字节:icmp_req=2 ttl=64 时间=0.199 ms 来自 192.168.0.254 的 64 字节:icmp_req=3 ttl=64 时间=0.188 ms ^C --- 192.168.0.254 ping 统计 --- 发送 3 个数据包,接收 3 个数据包,0% 数据包丢失,时间 2005ms rtt 最小值/平均值/最大值/mdev = 0.188/0.308/0.537/0.161 毫秒
如您所见,一切正常。
现在我想让配置永久化。因此我添加了以下部分/etc/network/interfaces
:
alix:~# sed -n '/iface eth1/,/^$/p' /etc/network/interfaces iface eth1 inet 静态 地址192.168.0.2 网络掩码 255.255.255.0
但是当我尝试启动网络时出现以下错误:
alix:~# ifconfig eth1 关闭 alix:~# ifup -v eth1 配置接口 eth1=eth1 (inet) 运行部分 --verbose /etc/network/if-pre-up.d run-parts:执行 /etc/network/if-pre-up.d/hostapd ip addr 添加 192.168.0.2/255.255.255.0 广播 192.168.0.255 dev eth1 标签 eth1 RTNETLINK 回答: 文件存在 无法启动 eth1。
当我手动运行ip
命令时,出现相同的错误:
alix:~# ip addr add 192.168.0.2/255.255.255.0 广播 192.168.0.255 dev eth1 标签 eth1 RTNETLINK 回答: 文件存在
命令有什么问题?我怎样才能告诉 Debian 做正确的事情呢?
答案1
答案2
使用ip addr flush
会起作用,但它也会清除该接口上设置的所有地址 - 如果您登录到远程计算机,可能包括您正在使用的地址。这可能会将您锁定在设备之外。
RNETLINK answers: File exists
当您尝试使用add
与现有规则冲突的规则时,就会发生这种情况。我猜想OP遇到了这个问题,因为他们已经用ifconfig
.通常可以通过将add
命令转换为类似结构的change
命令来解决此错误replace
。
使用ip addr change
或ip addr replace
替代更安全。
答案3
我也遇到了类似的问题,当我玩 10,000 块钱的场景时正是这样,我一直在尝试将缺少的内容添加到 /e/n/id/etho
但研究接口的手册页时,我注意到所有示例集都只有 2 行实际数据,即 ipv4 地址/24 和指定路由器地址的网关行。所以我将 eth0 文件删除到该文件,然后重新启动,并且工作正常。