如何设置 Debian 在启动时同时在不同网络上进行通信?

如何设置 Debian 在启动时同时在不同网络上进行通信?

我正在尝试使用 WiFi 适配器和板载以太网同时访问两个不同的网络。以太网只有一台设备,不经过路由器或交换机。 WiFi网络将用于全部通过我的路由器的其他网络流量。

到目前为止,在遵循了许多其他人在论坛上发布的许多在线文章、指南和问题之后,我以某种方式设法使用一些可重复的步骤让它工作;但是,只有在我输入一些命令后,它才能在重新启动时正常工作。

这是我的接口文件中的内容:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo enp2s0 wlx0013eff5755b
iface lo inet loopback

# The primary network interface
allow-hotplug enp2s0
iface enp2s0 inet static
    address 10.10.10.83
    gateway 10.10.10.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 10.10.10.1
    up route del default gw 10.10.10.1

iface wlx0013eff5755b inet static
    address 192.168.1.83
    gateway 192.168.1.1
#   # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.1.1
    up route add default gw 192.168.1.1

这是我的网络设置工作时显示的内容:

joshua@printnc:~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether bc:30:5b:aa:32:01 brd ff:ff:ff:ff:ff:ff
3: wlx0013eff5755b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 00:13:ef:f5:75:5b brd ff:ff:ff:ff:ff:ff
joshua@printnc:~$ sudo route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 wlx0013eff5755b
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 enp2s0
localnet        0.0.0.0         255.255.255.0   U     0      0        0 wlx0013eff5755b

这是机器首次启动时在我的网络设置中显示的内容:

joshua@printnc:~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether bc:30:5b:aa:32:01 brd ff:ff:ff:ff:ff:ff
3: wlx0013eff5755b: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:13:ef:f5:75:5b brd ff:ff:ff:ff:ff:ff
joshua@printnc:~$ sudo route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 wlx0013eff5755b
default         192.168.1.1     0.0.0.0         UG    0      0        0 wlx0013eff5755b
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 enp2s0
localnet        0.0.0.0         255.255.255.0   U     0      0        0 wlx0013eff5755b

此时重启后,只有enp2s0工作正常。我接下来的步骤是:

  1. 手动连接 WiFi。这会中断 enp2s0 连接。

  2. 输入关闭 enp2s0 接口的命令(给我一个错误):

joshua@printnc:~$ sudo ifdown enp2s0
RTNETLINK answers: No such process
  1. 输入启动 enp2s0 接口的命令(给我一个错误,输入此命令后,enp2s0 接口立即开始正常工作,并且我已连接到两个网络):
joshua@printnc:~$ sudo ifup enp2s0
RTNETLINK answers: File exists
ifup: failed to bring up enp2s0

我不知道为什么它有效或者我做错了什么。欢迎任何帮助!我的希望是在重新启动时使其正常工作,而无需执行我的 3 步过程。

编辑添加:这是在 Debian Buster 上,内核为 4.19.0-11-rt-amd64

答案1

您从 RTNETLINK 收到错误消息,因为您正在执行多余的操作。

让我们看一下您的第一个网络节:

# The primary network interface
allow-hotplug enp2s0
iface enp2s0 inet static
    address 10.10.10.83
    gateway 10.10.10.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 10.10.10.1
    up route del default gw 10.10.10.1

您设置 IP 地址(并​​完全省略网络掩码/网络地址,这是草率的,导致系统由于该10.地址而假定它是 /8,但如果这对您有用,那就这样吧),定义默认网关,然后立即添加一个删除默认网关的功能。

(你为什么要这样做而不是仅仅一开始就不添加网关?)

当您调用ifdown enp2s0它时,它会查看接口定义并尝试在停用接口之前删除默认网关,因为这就是ifupdown工作原理,但因为您已经删除了该路由,RTNETLINK 告诉它找不到该路由来删除它,并且该过程失败。

同样的情况也发生在你的第二节中:

iface wlx0013eff5755b inet static
    address 192.168.1.83
    gateway 192.168.1.1
#   # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.1.1
    up route add default gw 192.168.1.1

(同样,没有网络掩码,但192.168.x.x被定义为一组/24私有子网,因此系统再次做出假设。同样,我建议在这里明确说明。)

您定义默认网关,然后显式尝试添加默认网关再次。 RTNETLINK 告诉您该路由已经存在,并且脚本再次失败。

远程两个up条目以及gateway第一节的条目,它可能会起作用。我不能自信地告诉你它会做你想做的事,因为你实际上描述的内容相当不清楚,而且该interfaces文件非常含糊不清,因为我怀疑你只是复制了你实际上并没有费心去理解的东西。

相关内容