环境

Debian Buster 10.9
ens33 桥接 Windows 主机网络适配器
ens37 桥接 Windows 主机虚拟网络适配器
以下均以 root 身份执行

interfaces

"/etc/network/interfaces"

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens33
#auto ens33
#iface ens33 inet dhcp
iface ens33 inet static
  address 192.168.2.234/24
  gateway 192.168.2.1
  dns-nameservers 114.114.114.114 8.8.8.8

allow-hotplug ens37
iface ens37 inet static
  address 192.168.3.10/24
  gateway 192.168.3.1
  #post-up ip route add default via 192.168.3.1
  #pre-down ip route del default via 192.168.3.1
  #post-up ip rule add from 192.168.3.10 table isp2
  #pre-down ip rule del from 192.168.3.10 table isp2

问题

以下均以先启动 ens33,后启动 ens37 为例。
当 ifup ens33 后,再 ifup ens37 时,必然报错如下,但是 ens37 却已启动。

RTNETLINK answers: File exists
ifup: failed to bring up ens37

当关闭先启动的 ens33 时,正常,再关闭后启动的 ens37 时,必然报错如下。

ifdown: interface ens37 not configured

若此时 ifdown ens37 --force 强制关闭 ens37 时,可强制关闭,但是报错如下。

RTNETLINK answers: No such process

原因

第二个接口多配置了 gateway 导致报错。

解决

方法一

注释其中一个接口的 gateway。

方法二

使用 iproute2 创建一个新的路由表,将第二个网络接口网关指定到新路由表中,并配置策略路由。
wltwo: 网络2

echo -e "200\tbwltwo" >> /etc/iproute2/rt_tables

在 "/etc/network/interfaces" 的第二个接口中,将网关改为

  #gateway=192.168.3.1
  # 注意缩进
  post-up ip route add default via 192.168.3.1 table wltwo
  pre-down ip route del default via 192.168.3.1 table wltwo
  post-up ip rule add from 192.168.3.10 table isp2
  pre-down ip rule del from 192.168.3.10 table isp2

ifup 配置文件

ifstate

"/run/network/ifstate"
正确时,ifup 接口后,会在此处新增“接口名称=接口名称”,ifdown 后,会从此处删除。

lo=lo
ens33=ens33

ifstate.接口名称

"/run/network/ifstate.接口名称"
正确时,ifup 接口后,会在此处记录“接口名称”,ifdown 后,会从此处删除。

ens33

参考

manpages.debian.org/jessie/ifupdown/ifdown.8.en.html
manpages.debian.org/buster/ifupdown/interfaces.5.en.html

最后修改:2021 年 05 月 28 日 01 : 41 PM
如果觉得文章帮助了您,您可以随意赞赏。