接到个需求:给一台ubuntu虚拟机配置双网卡,其中一个是默认网卡,另一个配置路由,专门走特定ip请求,之前没配置过,踩了不少坑,记录下

 

1.查看可用网卡

ubuntu配置永久网关需要修改配置文件 /etc/netplan/00-installer-config.yaml

配置文件中的网卡名字可不是随便写的,要具体查看虚拟机中的网卡名称才行

ifconfig -a 

 从结果可以看出,只有两个网卡可以配:ens3和ens10,其他为docker创建的虚拟网卡,ens3已经配过了,那就是ens10了,又找网络部门确定了下,绑定的就是这个mac地址

ok,目标确认,在配置文件中加入ens10网络配置

 

2.修改配置文件

配置文件格式网上有很多,先来一段示例吧

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eth0:                      #网卡名称            
      dhcp4: true              #开启dhcp自动分配ipv4 ip
      dhcp6: true              #开启dhcp自动分配ipv6 ip
    eth1:                      #网卡名称
      dhcp4: true
      dhcp6: true
   eth2:                       #网卡名称
      addresses:
      - 172.16.18.3/24         #配置ip
      gataway4: 172.16.18.254  #配置ipv4 网关
      routes:                  #配置路由
        - to: 10.0.100.0/24    #这里为需要访问的地址
          via: 172.16.18.254   #这里为网关地址
metric: 200 #网络优先级
      nameservers:             #dns服务配置
        addresses: []
        search: []
 

 

ps 说明 metric字段默认值是100 代表默认路由,就是你服务器上网的网段,这个值不能重复,重复了就会报错,而 metric 越低,其优先级越高

172.16.18.3/24换算过来子网掩码就是 255.255.255.0,这里有个网站可以帮助换算 http://www.subnet-mask.com/

 

参考文档:https://blog.csdn.net/qq_42992084/article/details/129505643

                  https://blog.csdn.net/simplyou/article/details/131471814

我的配置文件如下

# This is the network config written by 'subiquity'
  network:
  version: 2
  ethernets:
    ens3:
      addresses: [192.168.211.53/24]
      gateway4: 192.168.211.254
      dhcp4-overrides:
        route-metric: 100
      nameservers:
        addresses:
          - 8.8.8.8
    ens10:
      addresses: [172.16.0.5/24]
      gateway4: 172.16.0.1
      routes:
        - to: 10.214.13.0/24
          via: 172.16.0.1
          metric: 200
      nameservers:
         addresses:
           - 8.8.8.8

 

3.使配置文件生效

netplan apply

这里还是建议用 netplan apply 而不是 netplan try

因为netplan try只会提示配置文件错误,而不会报具体问题

netplan try会把具体问题也抛出来

我在这个问题上卡了很久,一开始只敢用netplan try,迟迟找不到配置错误,后来用netplan apply 找到了

最后反思了下:1.配置错误,netplan apply 不会生效,不用担心配置错误造成网络连不上

                         2.配置文件中始终包含ens3网关的配置,就算我加的网关报错,应该不会影响原有ens3网关

4.检查路由

ip r

 

参考文档:https://linuxhint.com/set-default-gateway-ubuntu/

 

5.网络路由优先级问题

问题:

  重启服务器之后,访问之前的域名怎么也连不上

域名配置,nginx配置啥也没改啊

后来经过排查可能为双网卡造成的

于是果断注释掉新网卡配置,还原成单网卡,重启服务器,之后恢复正常

原因:

初步判断问题原因为配置双网卡,但是默认路由没配置对,造成了系统重启无法路由到域名映射的ip地址上

解决方法:

方法一:去掉不需要映射的网卡配置的网关

这方法比较取巧,就是去掉新配置网卡的网关,让系统只有一个网关,这样所有请求都会走这个默认网关,就肯定会找到这个ip

经过修改后的配置文件如下

# This is the network config written by 'subiquity'
  network:
  version: 2
  ethernets:
    ens3:
      addresses: [192.168.211.53/24]
      gateway4: 192.168.211.254
      dhcp4-overrides:
        route-metric: 100
      nameservers:
        addresses:
          - 8.8.8.8
    ens10:
      addresses: [172.16.0.5/24]
      routes:
        - to: 10.214.13.0/24
          via: 172.16.0.1
          metric: 200
      nameservers:
         addresses:
           - 8.8.8.8

修改后,重启系统(重启网络服务也可以),一切正常

 

方法二:调整路由顺序

我不甘心那样,所以开始搜索ubuntu route排序,找到了如下几个

https://www.cnblogs.com/hls-code/p/16982525.html

https://blog.csdn.net/weixin_44129085/article/details/109121911

https://blog.csdn.net/weixin_44444810/article/details/124768090

https://blog.csdn.net/lm_is_dc/article/details/132086321

配置还原之后开始进行如下操作

1.查看路由顺序

route -n

 可以看到新加的网关排序最高

2.调整路由顺序

apt install ifmetric
#把ens10网卡优先级调成100,数字越低优先级越高
ifmetric ens10 100
route -n

 

这里可以看到之前200的优先级也变为100了,由此可见,上面的配置文件metric: 200只对路由配置有效,对网关配置无效

测试链接域名,一切正常

本以为找到答案的时候,重启系统之后,发现一切还原了!ifmetric虽然有效,但是并不是永久生效

看来还得琢磨 /etc/netplan/00-installer-config.yaml 配置文件

我原来以为 route-metric: 100 参数是可以用的

实际上,并没有作用,后来看到了这篇范例:https://github.com/canonical/netplan/blob/main/examples/route_metric.yaml

才意识到,这参数应该是控制dhcp优先级的,我这是静态ip,并没有用

参考文档:https://zhuanlan.zhihu.com/p/602560844?utm_id=0

于是我着重搜索 gateway4 排序

就在我一筹莫展时,搜索gateway4的优先级时看到这个:https://blog.csdn.net/yilovexing/article/details/126424086

WARNING:gateway4 has been deprecated, use default routes instead

 我意识到了gateway4已经过时了,换一种思路,用路由来做优先级是不是更佳的方式?

结合之前网关的路由配置,我修改了00-installer-config.yaml配置文件

# This is the network config written by 'subiquity'
network:
  version: 2
  ethernets:
    ens3:
      addresses: [192.168.211.53/24]
      # gateway4: 192.168.211.254
      routes:
        - to: 0.0.0.0/0
          via: 192.168.211.254
          metric: 100
      nameservers:
        addresses:
        - 8.8.8.8
    ens10:
      addresses: [172.16.0.5/24]
      routes:
        - to: 10.214.13.0/24
          via: 172.16.0.1
          metric: 200
      nameservers:
         addresses:
           - 8.8.8.8

netpan apply之后和之前一样,网页访问正常

 

posted on 2023-11-07 19:41  06  阅读(4416)  评论(0编辑  收藏  举报