2 min read

Ubuntu之netplan踩坑记录

背景

本机用vmware安装虚机Ubuntu 20.04,添加2张网卡,一张外网使用(nat),一张内网使用(host), 结果所有流量走host那张网卡,导致外网不通,经过一系列查询资料及折腾终于解决,现记录之。

常用命令
# 网络配置生效
netplay apply

# 查看路由
ip route show

# 删除路由
ip route del default via x.x.x.1
例: ip route del default via 192.168.56.1

# dns配置查看
resolvectl dns
环境
虚拟机: VMware Fusion 12
系统: Ubuntu 20.04 LTS
网卡1:
    名称: enps33
    类型: nat
    网关: 192.168.65.1
网卡2:
    名称: enps34
    类型: host
    网关: 192.168.56.1

方案一: 删除默认路由

  • 临时方案
    ip route del default via 192.168.56.1
  • 持久方案
    加入开机自启
sudo tee /etc/rc.local<<EOF
#!/bin/sh
  
ip route del default via 192.168.56.1
EOF

方案二:修改netplan配置(推荐)

关键点在于metric的值,如果是DHCP方式需要dhcp4-overrides覆盖下,具体参考如下配置
cat /etc/netplan/00-installer-config.yaml

network:
  version: 2
  ethernets:
    ens33-:
      dhcp4: true
      dhcp4-overrides:
        route-metric: 50 # 路由优先级,越小优先级越高
    ens33: # nat网卡
      optional: true
      dhcp4: false
      addresses:
        - 192.168.65.102/24
      nameservers:
        addresses:
          - 192.168.65.2
      routes:
      - to: 0.0.0.0/0
        via: 192.168.65.2
        metric: 50 # 路由优先级,越小优先级越高
        
    ens34: # host网卡
      optional: true # 系统启动不用等待网络接口完全激活
      dhcp4: false
      addresses:
        - 192.168.56.102/24
      routes:
      - to: 0.0.0.0/0
        via: 192.168.56.1
        metric: 100

ip route show

default via 192.168.65.2 dev ens33 proto static metric 50 
default via 192.168.56.1 dev ens34 proto static metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.56.0/24 dev ens34 proto kernel scope link src 192.168.56.102 
192.168.65.0/24 dev ens33 proto kernel scope link src 192.168.65.102

ping qq.com 成功
ping 192.168.56.1 成功