网络配置
网络配置
base) root@node12:~/soft/frp_0.61.2_linux_amd64# ip route default via 192.168.3.2 dev enp1s0 proto static metric 100 10.42.0.0/24 dev cni0 proto kernel scope link src 10.42.0.1 169.254.0.0/16 dev enp1s0 scope link metric 1000 169.254.15.0/24 dev br-a6682cd2be1f proto kernel scope link src 169.254.15.1 linkdown 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 172.18.0.0/16 dev br-152687b44ac8 proto kernel scope link src 172.18.0.1 172.19.0.0/16 dev br-0bc445cb7542 proto kernel scope link src 172.19.0.1 172.20.0.0/16 dev br-cee5bb5e7b26 proto kernel scope link src 172.20.0.1 linkdown 192.168.3.0/24 dev enp1s0 proto kernel scope link src 192.168.3.12 metric 100 (base) root@node12:~/soft/frp_0.61.2_linux_amd64# root@ai:/home/wjn# ip route 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 172.18.0.0/16 dev br-a32446ef7142 proto kernel scope link src 172.18.0.1 192.168.3.0/24 dev ens160 proto kernel scope link src 192.168.3.20 root@ai:/home/wjn# 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 inet6 ::1/128 scope host noprefixroute 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:a4:43:bb brd ff:ff:ff:ff:ff:ff altname enp3s0 inet 192.168.3.20/24 brd 192.168.3.255 scope global ens160 valid_lft forever preferred_lft forever inet6 240e:390:a9b:aa70:20c:29ff:fea4:43bb/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 7062sec preferred_lft 3462sec inet6 fe80::20c:29ff:fea4:43bb/64 scope link valid_lft forever preferred_lft forever 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether f2:70:de:9a:f3:f3 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::f070:deff:fe9a:f3f3/64 scope link valid_lft forever preferred_lft forever 4: br-a32446ef7142: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 76:0d:9a:1e:b5:0b brd ff:ff:ff:ff:ff:ff inet 172.18.0.1/16 brd 172.18.255.255 scope global br-a32446ef7142 valid_lft forever preferred_lft forever inet6 fe80::740d:9aff:fe1e:b50b/64 scope link valid_lft forever preferred_lft forever 7: veth2625095@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-a32446ef7142 state UP group default link/ether da:36:0a:46:91:df brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet6 fe80::d836:aff:fe46:91df/64 scope link valid_lft forever preferred_lft forever root@ai:/home/wjn# 192.168.3.20 不能访问公网,192.168.3.12 可以
这组信息非常关键,已经可以下结论了 👍 我直接给你明确判断 + 原因 + 可落地的修复方案。
一、结论先行(重点)
192.168.3.20 这台机器“根本没有默认路由”,所以不可能访问公网 192.168.3.12 有默认路由,所以可以
这不是 Docker、不是 frp、不是 DNS,就是纯路由问题。
二、铁证对比(你给的信息已经把自己“锤死了”)
✅ 正常机器:192.168.3.12
ip route
关键这一行 👇
default via 192.168.3.2 dev enp1s0 proto static metric 100
含义是:
- 所有“非本地网段”的流量
- 走
192.168.3.2这个网关 - → 出公网
✅ 这台机器“知道公网怎么走”
❌ 异常机器:192.168.3.20
ip route
只有这些 👇
172.17.0.0/16 dev docker0
172.18.0.0/16 dev br-a32446ef7142
192.168.3.0/24 dev ens160
🚨 缺了最关键的一行:
default via x.x.x.x
结果就是:
-
能访问:
-
192.168.3.x
- Docker 网桥
- 访问不了公网(比如 8.8.8.8)
📌 内核行为是:
“不知道包该往哪发 → 直接丢弃”
三、为什么会这样(常见原因)
结合你的环境,我给你最可能的几个:
1️⃣ 这台是 手动配置 IP,没配 gateway
例如:
/etc/netplan/*.yaml/etc/network/interfaces
里只写了 IP / mask,没写 gateway。
2️⃣ DHCP 被关了 or DHCP 服务器没下发网关
- IP 是有的
- 网关没给
3️⃣ 虚拟机 / 容器宿主网络配置错误
你这台是:
ens160
altname enp3s0
👉 典型 VMware / 虚拟化网卡
-
很可能:
-
选了 Host-Only
- 或自定义网络
- 没给默认网关
四、立刻验证(1 秒)
在 192.168.3.20 上:
ip route get 8.8.8.8
你会看到类似:
RTNETLINK answers: Network is unreachable
这就坐实了。
五、立刻修复(临时,立马生效)
假设你的网关和另一台一样是:
192.168.3.2
🔧 手动加默认路由
ip route add default via 192.168.3.2 dev ens160
然后测试:
ping 8.8.8.8
curl https://registry-1.docker.io
👉 能通 = 问题 100% 确认
⚠️ 注意: 这个方法 重启会丢
六、永久修复(推荐)
如果你用的是 netplan(Ubuntu / Debian 新版)
ls /etc/netplan
假设是 01-netcfg.yaml:
network:
version: 2
ethernets:
ens160:
addresses:
- 192.168.3.20/24
gateway4: 192.168.3.2
nameservers:
addresses:
- 223.5.5.5
- 8.8.8.8
然后:
netplan apply
如果是 NetworkManager:
nmcli con show
nmcli con mod <连接名> ipv4.gateway 192.168.3.2
nmcli con up <连接名>
七、顺带解释一个你可能忽略的点(Docker)
你现在看到的这些:
172.17.0.0/16
172.18.0.0/16
👉 它们完全不负责出公网
Docker 出公网依赖的是:
宿主机默认路由
所以:
- 宿主没 default route
- Docker build / pull / curl
- 全部必死
这也完美解释了你之前的:
docker build 拉不到 golang / alpine
八、最终一句话总结(你可以直接记住)
能不能上公网,只看一行:
default via x.x.x.x没有它,一切免谈
如果你愿意,下一步我可以直接帮你:
- 🔍 看 为什么 DHCP 没给你 gateway
- 🧰 给你一份 标准“内网 + Docker + 公网”网络模板
- 🐳 顺手把 Docker 的 IPv6 / DNS 也一起收拾干净
你是想先临时通,还是一步到位永久修好?