Skip to content

网络配置

网络配置

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 也一起收拾干净

你是想先临时通,还是一步到位永久修好

☁️ 部署建议
如果你打算长期运行项目(博客 / API / 自动化脚本),建议直接用云服务器,会比本地稳定很多。
👉 查看云服务器(新用户优惠)