![Ubuntu 22.04:Netplan(静态 IP)-无法 ping 网关或互联网 IP,本地网络设备 ping 正常](https://linux22.com/image/1188032/Ubuntu%2022.04%EF%BC%9ANetplan%EF%BC%88%E9%9D%99%E6%80%81%20IP%EF%BC%89-%E6%97%A0%E6%B3%95%20ping%20%E7%BD%91%E5%85%B3%E6%88%96%E4%BA%92%E8%81%94%E7%BD%91%20IP%EF%BC%8C%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E8%AE%BE%E5%A4%87%20ping%20%E6%AD%A3%E5%B8%B8.png)
情况
我有 VMWare ESXI 和 Ubuntu Server 22.04 实例。此实例为我的本地网络运行 PowerDNS,需要静态 IP。我的本地网络使用 A 类 IP 地址,范围为 10.0.1.xxx,WiFi 在 10.0.2.xxx 范围内的单独路由器上运行。
Router IP (gateway) = 10.0.1.1
Ubuntu server IP = 10.0.1.3
我可以通过 SSH 连接到这台机器在我的本地网络内的任何地方都可以完美运行,无论是 10.0.1.xxx 范围内的物理连接机器,还是 10.0.2.xxx 范围内的 WiFi 连接设备。
Ubuntu Server 实例可以正常 ping 本地网络上的设备,除了用于网关和外部互联网 IP 地址。因此,该机器根本没有互联网连接。昨晚一切正常,但重启后我觉得有些问题,但我似乎无法弄清楚是什么问题……
UFW 是不活跃,iptables 允许一切(默认配置)
配置
我的 netplan 配置如下所示(尽管我在这里尝试了很多不同的东西):
network:
version: 2
renderer: networkd
ethernets:
ens160:
dhcp4: false
dhcp6: false
addresses:
- 10.0.1.3/24
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
- 1.1.1.1
- 1.0.0.1
routes:
- to: default
via: 10.0.1.1
netplan --debug generate
并且netplan --debug apply
不显示任何错误。每次应用新配置时我都会重新启动实例,但无济于事……
10.0.1.1
我的路由器在 IP和子网上配置了其 LAN 255.255.252.0
。
我迄今为止尝试过的事情
删除整个静态配置并替换为
dhcp4: true
无效。路由器无法提供 IP 地址,导致启动时间过长。删除
routing
条目并让系统自行决定也行不通。尝试这样做时,问题会变得更糟,因为每个 IP 地址都会变成无法到达,包括本地网络设备。将路由器的子网从 更改为
255.255.255.0
以255.255.252.0
允许10.0.x.
范围内有更多空间。这没有改变任何东西。它目前设置为开启255.255.252.0
,并且我的本地网络上的所有内容仍然正常工作。我再次启用了 DHCP,重新启动了机器,突然获得了一个 IP 地址。在路由器的 DHCP 配置中根据实例的 MAC 地址分配静态 IP 后,它无法再次提供 IP 地址(等待网络配置...)启动时需要很长时间。所以这台机器也不起作用需求静态 IP。
我知道这不是 DNS 配置问题,因为我甚至无法 ping1.1.1.1
或8.8.8.8
直接(100%数据包丢失),就像直接 ping 路由器一样。
输出:
IP 路由:
harold@ingress:~$ ip route
default via 10.0.1.1 dev ens160 proto static
10.0.1.0/24 dev ens160 proto kernel scope link src 10.0.1.3
IP 地址:
harold@ingress:~$ ip addr
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
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:b7:49:41 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 10.0.1.3/24 brd 10.0.1.255 scope global ens160
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feb7:4941/64 scope link
valid_lft forever preferred_lft forever
Ping 网关:
harold@ingress:~$ ping 10.0.1.1
PING 10.0.1.1 (10.0.1.1) 56(84) bytes of data.
^C
--- 10.0.1.1 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3060ms
对本地网络上的另一台设备进行 ping 操作:
harold@ingress:~$ ping 10.0.1.2
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_seq=1 ttl=64 time=0.060 ms
64 bytes from 10.0.1.2: icmp_seq=2 ttl=64 time=0.225 ms
64 bytes from 10.0.1.2: icmp_seq=3 ttl=64 time=0.125 ms
^C
--- 10.0.1.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2028ms
rtt min/avg/max/mdev = 0.060/0.136/0.225/0.067 ms
答案1
我想到了。
我有两个路由器,一个是 Genixis HRG1000(由我的 ISP 提供),用于连接 ESXi 主机,另一个是 TP-Link 路由器,目前仅用于内部 WiFi。
因为我想运行自己的 DNS 服务器,所以我将路由器中的名称服务器配置设置为:
nameserver 1: "10.0.1.3"
nameserver 2: "1.1.1.1"
由于某种原因,名称服务器配置中具有内部 IP 会导致 DHCP 不再起作用,也无法分配静态 IP 并 ping 路由器或外部互联网。
由于我的网络中已经有两个路由器,我将把 ESXi 主机插入这个路由器,并将网络上的所有其他设备连接到第二个路由器,因为那个做允许我将名称服务器配置为自己的名称服务器。