在安装 /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