You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Ubuntu Server静态IP配置下无法ping通外网及DNS解析失败求助

Ubuntu Server静态IP配置下无法ping通外网及DNS解析失败求助

你好!从你描述的情况来看,Ubuntu Server 22.04在静态IP配置模式下没法访问外网,但动态配置时网络正常,而且能ping通本地路由器,这确实有点棘手。我先帮你把目前的排查信息整理清楚,再给出一些可能的解决方向。

当前环境与问题汇总

  • 系统版本:Ubuntu 22.04.3 LTS(内核 5.15.0-94-generic
  • 正常现象:动态IP配置时网络恢复正常;能ping通本地路由器 192.168.50.1
  • 异常现象:静态IP配置下,无法ping通外网(如8.8.8.8),DNS解析超时(dig google.com提示连接8.8.8.8#53超时)

关键排查信息

路由表信息

default via 192.168.50.1 dev eno1 proto static
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.50.0/24 dev eno1 proto kernel scope link src 192.168.50.88

网卡状态信息

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
ether 02:42:14:b1:38:2d  txqueuelen 0  (Ethernet)
RX packets 0  bytes 0 (0.0 B)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 0  bytes 0 (0.0 B)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.50.88  netmask 255.255.255.0  broadcast 192.168.50.255
inet6 fe80::86a9:3eff:fe11:7ef6  prefixlen 64  scopeid 0x20<link>
ether 84:a9:3e:11:7e:f6  txqueuelen 1000  (Ethernet)
RX packets 4563  bytes 667639 (667.6 KB)
RX errors 0  dropped 14  overruns 0  frame 0
TX packets 5702  bytes 6573527 (6.5 MB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
device interrupt 16  memory 0xb1200000-b1220000

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
inet 127.0.0.1  netmask 255.0.0.0
inet6 ::1  prefixlen 128  scopeid 0x10<host>
loop  txqueuelen 1000  (Local Loopback)
RX packets 15062  bytes 2578348 (2.5 MB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 15062  bytes 2578348 (2.5 MB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Netplan静态配置文件(00-installer-config.yaml

network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses:
- 192.168.50.88/24
nameservers:
addresses: [1.1.1.1,8.8.8.8]
routes:
- to: default
via: 192.168.50.1

DNS与解析相关信息

  • /etc/resolv.conf状态与内容:
ls -l /etc/resolv.conf
-rw-r--r-- 1 root root 19 Feb 16 16:13 /etc/resolv.conf

more /etc/resolv.conf
# This is /run/systemd/resolve/resolv.conf managed by man:systemd-resolved(8).
nameserver 8.8.8.8
search .
  • resolvectl status输出:
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: foreign
DNS Servers: 8.8.8.8
Fallback DNS Servers: 8.8.4.4
Link 2 (eno1)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
DNS Servers: 1.1.1.1 8.8.8.8
Link 3 (wlp2s0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Link 4 (docker0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  • 外网ping测试结果:
ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
14 packets transmitted, 0 received, 100% packet loss, time 13311ms
  • DNS解析测试结果:
dig google.com
;; communications error to 8.8.8.8#53: timed out
;; communications error to 8.8.8.8#53: timed out

可能的解决方向

  1. 检查Netplan配置的缩进:YAML对缩进非常敏感,你的配置文件里versionrendererethernets等字段应该和network保持2个空格的缩进,eno1下的addressesnameservers等字段再缩进2个空格,修正后的配置应该类似:
network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses:
        - 192.168.50.88/24
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
      routes:
        - to: default
          via: 192.168.50.1

修正后执行sudo netplan apply生效配置。

  1. 检查防火墙规则:静态IP模式下,防火墙可能拦截了外网流量,你可以临时关闭防火墙测试:sudo ufw disable,如果能ping通外网了,再调整防火墙规则允许出站流量。

  2. 验证路由器静态IP权限:确认路由器是否允许静态IP地址访问外网,有些路由器需要把静态IP加入信任列表或者DHCP静态映射中,避免被拦截。

  3. 检查systemd-resolved状态:执行sudo systemctl restart systemd-resolved重启解析服务,然后再次测试DNS解析;另外可以尝试把resolv.conf切换为systemd-resolved的符号链接:sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf,之后重启网络服务。

  4. 检查网关可达性细节:虽然能ping通网关,但可以尝试用traceroute 8.8.8.8查看数据包的走向,确认是否在网关处被阻断。

备注:内容来源于stack exchange,提问作者fabelmk1

火山引擎 最新活动