Ubuntu中使用Netplan实现双网卡分别连接内外网

问题描述及背景

使用服务器的时候,希望可以使用两张网卡分别连接内外网。
本文中将主要介绍使用Netplan的方法配置两张内外网网卡,以及设置路由。

解决办法

首先使用ip a查看网络状态。以确定连接内网的网卡和连接外网的网卡。
此处,连接内网的网卡是enp3s0,连接外网的网卡是enp7s0

然后配置Netplan

  • 打开Netplan配置文件

    1
    sudo nano /etc/netplan/*.yaml
  • 添加配置信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # Let NetworkManager manage all devices on this system

    network:
    version: 2
    # renderer: NetworkManager # 注释1
    ethernets:
    enp7s0:
    dhcp4: true
    optional: true
    dhcp4-overrides:
    route-metric: 2
    enp3s0:
    dhcp4: false
    addresses:
    # 注释2
    - x.x.x.x/x
    - x.x.x.x/x
    # gateway4: x.x.x.x # 注释3
    nameservers:
    addresses: [x.x.x.x]
    routes:
    # 注释4
    - to: x.x.x.x/x
    via: x.x.x.x
    metric: 36
    - to: x.x.x.x/x
    via: x.x.x.x
    metric: 36
    optional: true

    通过设置metric可以控制路由的优先级。metric数值越小,优先级越高,数值越大,优先级越低。

    • 注释1、renderer需要注释掉。否则有些设置不会生效,比如设置的metric
    • 注释2、注释4。一张网卡可以设置多个ip地址(注释2),同时可以设置多个路由(注释4)。
    • 注释3、内网网卡的网关不需要设置,如果设置了,每次重启会出现内网网卡通向0.0.0.0/0的默认路由,导致上不了网。
  • 启用Netplan

    1
    sudo netplan apply
  • 检查路由,以及用ping命令查看是否内外网都正常

    1
    route -n

配置成功后,就可以同时使用内外网了。也可以把机器作为跳转机,从外网连接,跳转去内网。

后记

也尝试过其他方法来实现。大概流程是
  • /etc/network/interfaces文件中设置内网网卡的静态IP

    1
    2
    3
    4
    auto enp3s0
    iface enp3s0 inet static
    address 10.3.125.92
    netmask 255.255.255.0

    本人的尝试中发现,并不能在/etc/network/interfaces文件中同时设置双网卡的IP。(可能会报错,参考:Restarting networking

  • 重启网络服务

    1
    sudo /etc/init.d/networking restart
  • 添加路由
    可以使用route add命令,或者ip route add命令。比如,route del -net 0.0.0.0 dev enp3s0ip route del default via 192.168.1.1 dev enp7s0ip route add 0.0.0.0/0 via 192.168.1.1 dev enp7s0 metric 2
    具体可以参考:Linux中添加路由使用route命令设置双网卡路由

  • 但是设置过了路由,系统重启,路由就会被重置,所以需要在系统启动时自动执行添加路由的命令。
    /etc/rc.local文件中写好配置。可以参考开机自动启动命令以及设置rc.local

由于过程繁琐,不像Netplan一样可以一步到位的设置。所以最终选择了Netplan

在配置过程中,可能会把网卡弄崩掉。

可以使用sudo service network-manager restart以及
sudo /etc/init.d/networking restart命令从头开始。

参考

双网卡系统重启时出现默认路由
Netplan网络配置工具学习
网络优先级设置
双网卡配置优先级
Netplan配置双网卡、双路由
Netplan 配置多网卡、多路由、多ip、bonding
查看网关
查看DNS
查看网络流量
重启网卡

------ 本文结束------