Debian 9.8 使用 Interfaces.d 绑定 2 个多个 IP

Debian 9.8 使用 Interfaces.d 绑定 2 个多个 IP

我正在尝试在接口 enp0s25 上设置 2 个 IP 地址。我现在使用 3 个只是为了进行故障排除。

这是我的设置,这是 /etc/network/interfaces.d/enp0s25 的内容

auto enp0s25
auto enp0s25:0
auto enp0s25:1

iface enp0s25 inet static
      address 192.168.1.95
      netmask 255.255.255.0
      gateway 192.168.1.1
      dns-nameservers 8.8.8.8 8.8.4.4

iface enp0s25:0 inet static
      address 192.168.1.96
      netmask 255.255.255.0
      gateway 192.168.1.1
      dns-nameservers 8.8.8.8 8.8.4.4

# This is the actual second ipaddress that I want
iface enp0s25:1 inet static
      address 172.16.28.250
      netmask 255.255.255.0
      gateway 172.16.28.1
      dns-nameservers 8.8.8.8 8.8.4.4

这是 /etc/interfaces 的内容

# 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
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s25
# iface enp0s25 inet dhcp

当我做一个时sudo service network restart它失败了所以我做了sudo service network status然后我得到了

● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2019-02-25 15:15:37 EST; 3min 8s ago
     Docs: man:interfaces(5)
  Process: 481 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
  Process: 477 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --lis
 Main PID: 481 (code=exited, status=1/FAILURE)

Feb 25 15:15:37 trmi-ral-server systemd[1]: Starting Raise network interfaces...
Feb 25 15:15:37 trmi-ral-server ifup[481]: RTNETLINK answers: File exists
Feb 25 15:15:37 trmi-ral-server ifup[481]: ifup: failed to bring up enp0s25:0
Feb 25 15:15:37 trmi-ral-server ifup[481]: RTNETLINK answers: File exists
Feb 25 15:15:37 trmi-ral-server ifup[481]: ifup: failed to bring up enp0s25:1
Feb 25 15:15:37 trmi-ral-server systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Feb 25 15:15:37 trmi-ral-server systemd[1]: Failed to start Raise network interfaces.
Feb 25 15:15:37 trmi-ral-server systemd[1]: networking.service: Unit entered failed state.
Feb 25 15:15:37 trmi-ral-server systemd[1]: networking.service: Failed with result 'exit-code'.

但如果我重新启动,那么他们工作

ip address显示所有已分配。

我可以从两个网络上的另一台计算机 ping 它们(在它们之间交换以太网电缆)

service networking status还是显示失败。

我怎么能说networking没有运行但实际上有网络连接呢?

答案1

服务联网状态仍然显示失败。

程序不会告诉你,但失败信息与你的地址;它实际上失败了,因为你告诉它两次配置相同的路由。

是的,只要通过不同的接口,就可以为同一网络设置两条路由。但实际上并没有不同的接口;您只有 3 个针对同一“enp0s25”接口的条目。没有“别名接口”之类的东西。

因此您的配置文件将转换为以下命令:

ip addr add 192.168.1.95/24 dev enp0s25
ip route add 0.0.0.0/0 via 192.168.1.1 dev enp0s25

ip addr add 192.168.1.96/24 dev enp0s25
ip route add 0.0.0.0/0 via 192.168.1.1 dev enp0s25

ip addr add 172.16.28.250/24 dev enp0s25
ip route add 0.0.0.0/0 via 172.16.28.1 dev enp0s25

请注意,配置要求0.0.0.0/0 ... dev enp0s25添加两次路由。第一次尝试成功并为您提供连接,第二次尝试失败并导致 ifupdown (networking.service) 崩溃,第三次尝试也会发生同样的情况。

为了避免这种情况,请删除gateway...除一行之外的所有行。

(注意:Linux 默认不支持每个子网的 IPv4 网关——如果你添加多个默认路由,它只会选择一个并使用它一切,即使它是“错误的”子网。因此,如果192.168.1.1172.16.28.1属于同一路由器,则实际上不需要同时添加两者。)

针对 Debian 9 语法更新的文件如下所示:

auto enp0s25

iface enp0s25 inet static
      address 192.168.1.95/24
      gateway 192.168.1.1
      dns-nameservers 8.8.8.8 8.8.4.4

iface enp0s25 inet static
      address 192.168.1.96/24

iface enp0s25 inet static
      address 172.16.28.250/24

我如何才能使网络不运行但实际上有网络连接?

它从来就没有“运行”过。它只是一个配置 IP 地址并退出的脚本,仅此而已。网络完全由 Linux 内核本身处理。

相关内容