为什么 /etc/network/interfaces 禁用端口 enp1s0?

为什么 /etc/network/interfaces 禁用端口 enp1s0?

在安装 /etc/network/interfaces 之前,PC 上的两个端口(enp1s0 和 enp2s0)都可以 ping 通网络上的其他 IP 和 google。安装 /etc/network/interfaces 并设置 IP 地址后,只有静态 IP 地址可以 ping 通 google 和网络上的其他 IP。无论静态和 dhcp 的组合如何不同,只有一个端口可以 ping 通网络上的其他 IP 和 google,一个端口无法 ping 通网络上的其他 IP 和 google。如果我注释掉 /etc/network/interfaces 中的所有行并重新启动,两个端口都可以 ping 通网络上的其他 IP 和 google。我确定问题源于 /etc/network/interfaces。有人知道如何解决这个问题吗?

ip 输出:

root@jen:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether c4:00:ad:6f:34:7f brd ff:ff:ff:ff:ff:ff
    inet 10.180.198.32/23 brd 10.180.199.255 scope global dynamic enp1s0
       valid_lft 2953sec preferred_lft 2953sec
    inet6 fe80::c600:adff:fe6f:347f/64 scope link
       valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether c4:00:ad:6f:34:80 brd ff:ff:ff:ff:ff:ff
    inet 10.180.198.23/23 brd 10.180.199.255 scope global enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::c600:adff:fe6f:3480/64 scope link
       valid_lft forever preferred_lft forever

/etc/network/interfaces 配置:

root@jen:~# cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
#The loopback network interface
auto lo
iface lo inet loopback

#The primary netowrk interface
allow-hotplug enp1s0
iface enp1s0 inet dhcp

allow-hotplug enp2s0
iface enp2s0 inet static
        address 10.180.198.23/23
        gateway 10.180.198.1

当使用 enp1s0 端口时进行 ping 操作(enp2s0 端口没有电缆):

root@jen:~# ping 10.180.198.90
PING 10.180.198.90 (10.180.198.90) 56(84) bytes of data.
64 bytes from 10.180.198.90: icmp_seq=1 ttl=64 time=0.300 ms
64 bytes from 10.180.198.90: icmp_seq=2 ttl=64 time=0.477 ms
64 bytes from 10.180.198.90: icmp_seq=3 ttl=64 time=0.498 ms
64 bytes from 10.180.198.90: icmp_seq=4 ttl=64 time=0.537 ms
^C
--- 10.180.198.90 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3069ms
rtt min/avg/max/mdev = 0.300/0.453/0.537/0.090 ms

当使用 enp2s0 端口时进行 ping 操作(enp1s0 端口中没有电缆):

root@jen:~# ping 10.180.198.90
PING 10.180.198.90 (10.180.198.90) 56(84) bytes of data.
From 10.180.198.23 icmp_seq=2 Destination Host Unreachable
From 10.180.198.23 icmp_seq=3 Destination Host Unreachable
From 10.180.198.23 icmp_seq=4 Destination Host Unreachable
^C
--- 10.180.198.90 ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5122ms pipe 3

使用 Ubuntu 配置的 ip 路由(两个端口均按需要工作):

root@jen-Default-string:~# ip route
default via 10.180.198.1 dev enp1s0 proto dhcp metric 100
default via 10.180.198.1 dev enp2s0 proto dhcp metric 101
10.180.198.0/23 dev enp1s0 proto kernel scope link src 10.180.198.21 metric 100
10.180.198.0/23 dev enp2s0 proto kernel scope link src 10.180.198.22 metric 101
169.254.0.0/16 dev enp1s0 scope link metric 1000

使用 /etc/network/interfaces 配置的 ip 路由:

root@jen-Default-string:~# ip route
default via 10.180.198.1 dev enp2s0 onlink
10.180.198.0/23 dev enp2s0 proto kernel scope link src 10.180.198.23
10.180.198.0/23 dev enp1s0 proto kernel scope link src 10.180.198.33
169.254.0.0/16 dev enp2s0 scope link metric 1000

enp1s0 和 enp2s0 在 cat /var/log/kern.log 中重命名:

Jun 29 08:57:02 jen-Default-string kernel: [ 0.824287] r8169 0000:02:00.0 eth1: RTL8168g/8111g, c4:00:ad:6f:34:80, XID 4c0, IRQ 127 
Jun 29 08:57:02 jen-Default-string kernel: [ 0.824288] r8169 0000:02:00.0 eth1: jumbo features [frames: 9194 bytes, tx checksumming: ko] 
Jun 29 08:57:02 jen-Default-string kernel: [ 0.828202] r8169 0000:01:00.0 enp1s0: renamed from eth0 
Jun 29 08:57:02 jen-Default-string kernel: [ 0.851441] r8169 0000:02:00.0 enp2s0: renamed from eth1

答案1

我能够解决这个问题。在 GUI 上的“有线连接”下的“网络设置”中,需要填写所有条件。链接速度、IPv4 地址、IPv6 地址、硬件地址、默认路由和 DNS。这使我能够从两个端口 ping 网络中的其他 IP 地址。

配置 /etc/network/interfaces 和禁用 NetworkManager 时出现问题。这导致网络连接无法完全工作(一个端口可以 ping 其他 IP 地址,一个端口则不能),即使它在设置中显示应该可以工作。我在 GUI 中调整后可以让连接工作,但重启后它就无法工作了。
我如何在 /etc/network/interfaces 和 /etc/NetworkManager/NetworkManager.conf 之间进行此配置 -->

首先,配置 /etc/network/interfaces(示例配置)

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

#The loopback network interface
auto lo
iface lo inet loopback

#The primary netowrk interface
allow-hotplug enp2s0
iface enp2s0 inet static
       address 10.180.198.22/23
       gateway 10.180.198.1
       netmask 255.255.254.0
       dns-nameservers 10.180.0.14
       dns-nameservers 10.116.0.14

allow-hotplug enp1s0
iface enp1s0 inet static
       address 10.180.198.23/23
       gateway 10.180.198.1
       netmask 255.255.254.0
       dns-nameservers 10.180.0.14
       dns-nameservers 10.116.0.14

接下来,在 /etc/NetworkManager/NetworkManager.conf 中将 manage=false 更改为 manage=true

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=true

[device]
wifi.scan-rand-mac-address=no

但是,我确实认为这是可靠的,在 /etc/network/interfaces 和 /etc/NetworkManager/NetworkManager.conf 之间进行这种类型的配置会面临一些挑战。我可能忽略了其他一些问题,导致这种配置在重启后对我不起作用。

如果要在 /etc/network/interfaces 被禁用(文件中没有任何内容)的情况下直接从 NetworkManager 更改地址,请按照以下步骤操作:首先,找到连接名称。使用此命令:

nmcli con show

接下来在命令行中更改 IP 地址:

sudo nmcli con mod "Connection name" ipv4.addresses xxx.xxx.xxx.xxx/xx

xxx.xxx.xxx.xxx/xx = 您想要将其更改为的 IP 地址。

另外,确保 /etc/NetworkManager/NetworkManager.conf 文件中列出的内容如下:

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

相关内容