Bootstrap

ubuntu18 网络问题

/etc/netplan/*.yaml配置文件中:

renderer的值可以是networkd,或者是NetworkManager

它俩的其中一个区别为:

networkd在图像界面,networking setting中不显示网卡配置。

版权简介: 从Ubuntu 18.04.2版本开始,系统的网络配置改成了新的 netplan.io 方式,弃用了之前使用的 ifupdown 方式。所以网络配置文件和配置方式和之前不同,本文主要介绍新的配置方式如何使用及与之前的区别。
镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

从Ubuntu 18.04.2版本开始,系统的网络配置改成了新的 netplan.io 方式,弃用了之前使用的 ifupdown 方式。所以网络配置文件和配置方式和之前不同,本文介绍新的配置方式如何使用及与之前的区别。

注:ifupdown 就是用这个脚本 /etc/init.d/networking、systemctl start networking.service 启动网络服务的方式。

一、新旧版本对比

  • Ubuntu 18.04的DNS解析设置改成了 systemd-resolved,不是在原先的配置文件 /etc/resolv.conf 设置了。
  • Ubuntu 18.04默认情况下不再安装ifupdown,因此命令ifup和ifdown也不可用。可以使用ip命令来实现类似的功能,ip link set device up 和 ip link set device down。
  • 之前Ubuntu16.04版本里的网卡配置文件 /etc/network/interfaces  不起作用了,改成了netplan方式。
  • 如果新的 netplan 目前不能满足用户的网络使用需求,ifupdown 软件包仍然可以在Ubuntu 中使用和支持。
  • ifupdown安装命令:apt install ifupdown 
     

二、netplan 是什么?

netplan官网说它是一个在Linux系统中简单方便配置网络的程序,使用YAML格式的文件进行配置。
YAML是什么?传送门 YAML 入门教程 | 菜鸟教程

三、netplan 的工作方式


netplan 从配置文件 /etc/netplan/*.yaml 读取网络配置,启动后 netplan 在 /run 目录中生成特定网卡名称后缀的配置文件,然后将网卡设备的控制权移交给特定的网络守护程序。
netplan 目前支持以下两种服务:
NetworkManager
Systemd-networkd

多配置引擎

Netplan可以使用不同的配置引擎来管理网络配置,例如NetworkManager、systemd-networkd和DHCP客户端等。

  1. NetworkManager:这是一个广泛使用的网络配置工具,可以管理Wi-Fi、蓝牙和有线网络接口,并支持动态IP地址分配和VPN连接等功能。

  2. systemd-networkd:这是一个系统守护进程,负责管理网络配置。它提供了基本的网络接口配置和DNS解析功能,并支持IPv6和网络桥接等高级功能。

  3. DHCP客户端:这是一个动态主机配置协议(DHCP)客户端,可以自动分配IP地址和其他网络参数。它通常与DHCP服务器一起使用,以管理局域网上的客户机IP地址分配。

通过使用这些不同的配置引擎,Netplan可以适应不同的网络配置需求,并提供更多的配置灵活性和可扩展性。例如,在使用服务器时,可以使用systemd-networkd来提高性能和可靠性,而在桌面环境中,可以使用NetworkManager来管理各种网络接口,以方便用户使用。

为什么不直接使用NetworkManager或systemd-networkd

虽然NetworkManager和systemd-networkd都是强大的网络配置工具,但Ubuntu开发人员决定引入Netplan的主要原因是为了提高Ubuntu系统的网络配置体验和一致性。

在过去,Ubuntu使用ifupdown作为默认的网络配置工具。但是,ifupdown的配置文件使用传统的基于文本的格式,并且缺乏灵活性和可扩展性。此外,Ubuntu系统还经常遇到一些网络配置问题,例如接口命名不一致、硬件变化等等,导致网络配置需要手动更改。

Netplan的引入解决了这些问题。它提供了一个现代化的、易于阅读和编辑的YAML格式的配置文件,可以轻松地管理多个网络接口和配置参数。此外,Netplan还支持多种配置引擎,使得Ubuntu用户可以根据自己的需求选择适当的网络配置方案。

最重要的是,Netplan可以提高网络配置的一致性和稳定性。通过使用Netplan,Ubuntu系统可以自动检测网络接口和硬件变化,并自动更新配置文件。这样,Ubuntu用户可以避免手动修改网络配置文件所带来的错误和不便。

用法

要使用Netplan,可以按照以下步骤进行操作:

1.打开终端窗口。在Gnume中可以使用Ctrl+Alt+T键快捷键来打开终端。

2.使用编辑器打开Netplan配置文件。默认的配置文件位于“/etc/netplan/”目录下,命名为“01-netcfg.yaml”。可以使用命令“sudo nano /etc/netplan/01-netcfg.yaml”来打开此文件,并编辑配置。

3.在Netplan配置文件中,可以定义一个或多个网络接口和相关参数,例如IP地址、网关、DNS等等。以下是一个简单的Netplan配置文件示例:

上面的示例中,我们定义了一个名为“enp0s3”的以太网接口,禁用了DHCP客户端,并手动指定了IP地址、子网掩码、网关和DNS服务器。

  • 保存Netplan配置文件并应用更改。可以使用Ctrl+X键快捷键退出编辑器,并选择“Y”保存更改。然后,可以使用命令“sudo netplan apply”来应用新的网络配置。

  • 验证网络配置。可以使用命令“ip addr”和“ip route”来检查新的网络配置是否已成功应用。如果一切正常,应该可以看到新的网络接口和相关参数。

配置文件的命名

Netplan 是一个用于配置 Linux 系统网络接口的命令行工具,其配置文件的命名通常遵循以下规则:

  1. 文件名必须以 .yaml 为后缀。

  2. 文件名应该是以网络接口的名称为基础,例如 eth0.yaml,其中 eth0 是网络接口的名称。

  3. 如果需要配置多个网络接口,可以使用 config.yaml 或者类似的通用名称,然后在文件中分别定义每个网络接口的配置。

  4. 文件名前面的数字标识表示配置文件的优先级。具体来说,Netplan 会按照配置文件名中的数字顺序对配置进行合并,数字越小的配置文件优先级越高,数字相同的配置文件按照字母顺序进行合并。

例如,如果有两个配置文件 01-netcfg.yaml 和 02-netplan.yaml,则 Netplan 会先应用 01-netcfg.yaml 中的配置,然后再应用 02-netplan.yaml 中的配置。如果两个配置文件中都有相同的接口配置,那么在合并时会以 02-netplan.yaml 中的配置为准。

因此,如果要修改网络接口的配置,可以创建一个新的配置文件,并确保文件名前面的数字比现有的配置文件优先级更高

配置项

在 Netplan 的配置文件中,可以使用以下标签来配置网络接口和相关设置:

  • network: 该标签是配置文件的根标签,表示整个网络的配置。可以在该标签下定义多个网络接口的配置,以及一些全局设置。

  • version: 该标签用于指定 Netplan 的版本号。目前版本为 2。

  • renderer: 该标签用于指定网络接口的配置方式,支持 networkd 和 NetworkManager 两种渲染器。

  • ethernets: 该标签用于定义以太网接口的配置。

  • bridges: 该标签用于定义桥接接口的配置。

  • vlans: 该标签用于定义 VLAN 接口的配置。

  • bonds: 该标签用于定义网卡绑定接口的配置。

  • wifis: 该标签用于定义 Wi-Fi 接口的配置。

  • access-points: 该标签用于定义 Wi-Fi 接口的可访问点配置。

  • nameservers: 该标签用于定义 DNS 解析器的配置。

  • routes: 该标签用于定义路由表的配置。

  • dhcp4 和 dhcp6: 该标签用于定义 DHCP 的配置,包括是否使用 DHCP 和 DHCP 的选项。

这些标签可以组合使用,以实现不同网络场景下的配置需求。例如,可以在 ethernets 标签下定义以太网接口的 IP 地址和网关,然后在 nameservers 标签下定义 DNS 解析器的配置。在配置完成后,使用 netplan apply 命令即可使配置生效

 

ubuntu18.04系统里查看网卡用netplan配置的信息

allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ networkctl 
WARNING: systemd-networkd is not running, output will be incomplete.

IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           n/a         unmanaged 
  2 enp4s0           ether              n/a         unmanaged 
  3 enp5s0           ether              n/a         unmanaged 
  4 virbr0           ether              n/a         unmanaged 
  5 virbr0-nic       ether              n/a         unmanaged 
  6 macvtap0         ether              n/a         unmanaged 
  7 vnet0            ether              n/a         unmanaged 
  8 docker0          ether              n/a         unmanaged 

8 links listed.
allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ sudo networkctl status enp4s0
WARNING: systemd-networkd is not running, output will be incomplete.

● 2: enp4s0
       Link File: /lib/systemd/network/99-default.link
    Network File: n/a
            Type: ether
           State: n/a (unmanaged)
            Path: pci-0000:04:00.0
          Driver: igb
          Vendor: Intel Corporation
           Model: I210 Gigabit Network Connection
      HW Address: a8:5e:45:3d:f7:7d
         Address: 192.168.0.7
                  fe80::594e:3bca:fb75:f761
         Gateway: 192.168.0.254

四、如使用 netplan

配置文件:/etc/netplan/*.yaml
命令:netplan apply
每个网卡都需要在 /etc/netplan 目录中设置配置文件,在配置中指定网卡ip信息,使用DHCP或者静态ip方式。
/etc/netplan/ 目录下的配置文件,扩展名为.yaml(例如 /etc/netplan/config.yaml),然后运行 netplan apply 此命令分析配置信息并将其应用生效。
配置文件示例:
 

#网卡eth0使用dhcp方式配置ip网络,配置如下。yaml配置是用空格作为缩进对齐,不能使用tab键。
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
      dhcp6: no
#网卡eth0使用静态ip方式,用关键字addresses指定ip地址和子网掩码(支持ipv4和ivp6),gateway4指定网关ip,nameservers 指定DNS。

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 10.10.10.2/24
      gateway4: 10.10.10.1
      nameservers:
          search: [mydomain, otherdomain]
          addresses: [10.10.10.1, 1.1.1.1]

配置文件里的关键字说明:

  • renderer:指定后端网络服务,支持networkd(Systemd-networkd) 和 NetworkManager两种,默认是networkd。
  • ethernets:指定是以太网配置,其他的还包括 wifis 或者 bridges
  • eth0:以太网网卡名称
  • dhcp4:开启使用ipv4的DHCP,默认是关闭。
  • dhcp6:开启使用ipv6的DHCP,默认是关闭。
  • addresses:对应网卡配置的静态ip地址,是ip/掩码的格式,支持ipv6地址,例如 addresses: [192.168.14.2/24, "2001:1::1/64"]
  • gateway4, gateway6:指定IPv4/6默认网关,使用静态ip配置时使用。例如IPv4: gateway4: 172.16.0.1 例如IPv6: gateway6: "2001:4::1"
  • nameservers:设置DNS服务器和搜索域。有两个受支持的字段:addresses:是DNS地址列表,search:是搜索域列表,没有特殊需要可以不配置search这项。

更多配置项可以参考netplan.io文档 https://netplan.io/reference

参考资料:

BionicBeaver/ReleaseNotes - Ubuntu Wiki
Netplan | Backend-agnostic network configuration in YAML

=============================

使用 Netplan 配置网络
您可以在/etc/netplan/*.yaml找到新的配置文件。

Ubuntu 服务器为 system- networkd生成名为01-netcfg.yaml的 Netplan 配置文件,

Ubuntu 桌面为 Network-Manager 生成名为01-network-manager-all.yaml的 Netplan 配置文件。

当我在 Ubuntu 桌面上工作时,我的/etc/ netplan目录中有01-network-manager-all.yaml文件用于网络配置。01-network-manager-all.yaml用于配置第一个接口。如果您有多个接口,请使用02-network-manager-all.yaml作为第二个接口。Netplan 按数字顺序应用配置。这意味着 01 文件将在 02 文件之前应用。

现在让我们转向网络配置。按照以下步骤在 Ubuntu 中配置静态或动态 IP 地址:

allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ ip a
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 
       valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether a8:5e:45:3d:f7:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global noprefixroute enp4s0
       valid_lft forever preferred_lft forever
    inet6 fe80::594e:3bca:fb75:f761/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether a8:5e:45:3d:f7:7e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.10/24 brd 192.168.0.255 scope global enp5s0
       valid_lft forever preferred_lft forever
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:08:04:02:32 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

记下要使用 Netplan 配置的接口名称。这里的是enp4s0和enp4s0 我的机器是双网卡

2. Netplan默认配置文件在/etc/netplan目录下您可以使用以下命令找到:

allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ ls /etc/netplan/
01-network-manager-all.yaml  02-network-manager-all.yaml
allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ cat  /etc/netplan/*
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ 

根据您的网络需要更新配置文件。对于静态 IP 寻址,添加 IP 地址、网关、DNS 信息,而对于动态 IP 寻址,无需添加此信息,因为它将从 DHCP 服务器获取此信息。使用以下语法编辑配置文件。

network:
    Version: 2
    Renderer: NetworkManager/ networkd
    ethernets:
       DEVICE_NAME:
          dhcp4: yes/no
          addresses: [IP_ADDRESS/NETMASK]
          gateway: GATEWAY
          nameservers:
             addresses: [NAMESERVER_1, NAMESERVER_2]

此处说明

DEVICE_NAME:接口的名称。

dhcp4:是或否取决于动态或静态 IP 寻址

addresses:设备的 IP 地址以前缀表示法。不要使用网络掩码。

gateway:连接到外部网络的网关 IP 地址

nameservers : DNS 名称服务器的地址

请注意,Yaml 文件的缩进相当严格。使用空格来缩进,而不是制表符。否则,您将遇到错误。

在 Ubuntu 中配置静态 IP 地址

要手动配置 IP 地址,请使用上述配置文件语法并添加 IP 地址、网关和 DNS 服务器信息。在这里您可以看到我的静态 IP 寻址配置文件:

allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ cat 02-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
     enp5s0:
       dhcp4: no
       addresses: [192.16.10.11/24]
       gateway4: 192.168.0.254
       nameservers:
         addresses: [8.8.8.8,114.114.114.114]

在 Ubuntu 中配置动态 IP 地址 

测试配置

在应用任何更改之前,我们将测试配置文件。以 sudo 身份运行以下命令以测试配置:

$ sudo netplan try

应用配置

现在通过以 sudo 身份运行以下命令来应用新配置:

$ sudo netplan apply

如果您看到任何错误,请尝试调试以调查问题。要运行调试,请使用以下命令作为 sudo:

$ sudo netplan –d apply

重启网络服务
成功应用所有配置后,通过运行以下命令重新启动网络管理器服务:

$ sudo systemctl restart network-manager
如果您使用的是 Ubuntu 服务器,请改用以下命令:

$sudo systemctl restart system-networkd
验证 IP 地址
现在要验证新配置是否成功应用,请运行以下命令来验证 IP 地址:

$ ip a
无论您拥有 Ubuntu 服务器还是台式机,您都可以简单地使用 Netplan 配置静态或动态 IP 寻址,而无需任何复杂的配置。
 

==================

Netplan 是一款使用在终端的配置网络工具,本文介绍在 Ubuntu 18.04 系统中使用 Netplan 来配置网络,新的配置文件、网络设备名称、配置静态 IP 地址、测试配置并应用、配置 DHCP。

前言

多年以来 Linux 管理员和用户们以相同的方式配置他们的网络接口。例如,如果你是 Ubuntu 用户,你能够用桌面 GUI 配置网络连接,也可以在 /etc/network/interfaces 文件里配置。配置相当简单且可以奏效。在文件中配置看起来就像这样:

auto enp10s0

iface enp10s0 inet static

address 192.168.1.162

netmask 255.255.255.0

gateway 192.168.1.100

dns-nameservers 1.0.0.1,1.1.1.1

保存并关闭文件。使用命令重启网络:

sudo systemctl restart networking

或者,如果你使用不带 systemd 的发行版,你可以通过老办法来重启网络:

sudo /etc/init.d/networking restart

你的网络将会重新启动,新的配置将会生效。

这就是多年以来的做法。但是现在,在某些发行版上(例如 Ubuntu Linux 18.04),网络的配置与控制发生了很大的变化。不需要那个 interfaces 文件和 /etc/init.d/networking 脚本,我们现在转向使用 Netplan。Netplan 是一个在某些 Linux 发行版上配置网络连接的命令行工具。Netplan 使用 YAML 描述文件来配置网络接口,然后,通过这些描述为任何给定的呈现工具生成必要的配置选项。

我将向你展示如何在 Linux 上使用 Netplan 配置静态 IP 地址和 DHCP 地址。本文在 Ubuntu Server 18.04 系统中演示。有句忠告,你创建的 .yaml 文件中的缩进必须保持一致,否则将会失败。你不用为每行使用特定的缩进间距,只需保持一致就行了。

 netplan try  #用此命令启用配置,并输入回车确定

【Server版本】

一、在Ubuntu Server版本中,因为只存有命令行模式,所以要想进行网络参数设置,只能通过修改 /etc/network/interfaces 。具体设置方法如下:

下面介绍2种Ubuntu 18.04系统下设置静态IP的方法

二、方法一

Ubuntu 18.04采用netplan来管理网络配置计划,在/etc/netplan/目录下有一个以yaml结尾的文件,例如00-installer-config.yaml,不同版本的系统这个文件名可能会有些差异,但是不影响,以实际为准。

(1):先ifconfig|ip a查看电脑的网卡信息:

allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ ip a
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 
       valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether a8:5e:45:3d:f7:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.7/24 brd 192.168.0.255 scope global noprefixroute enp4s0
       valid_lft forever preferred_lft forever
    inet6 fe80::594e:3bca:fb75:f761/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether a8:5e:45:3d:f7:7e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.10/24 brd 192.168.0.255 scope global enp5s0
       valid_lft forever preferred_lft forever
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:08:04:02:32 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

找到物理网卡的名称,我这里是enp4s0,其他几个是虚拟网卡和本地回环,不用管。

(2)输入route -n命令,打印路由表,这里主要是为了查看网关地址,后续会用到

allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ route -n
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 enp4s0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 enp5s0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp4s0

 我这里网关地址是192.168.0.254

(3)配置ip

allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
  version: 2
  ethernets:
    enp4s0:
      addresses: [192.1168.0.11/24]
      gateway4: 192.168.0.254
      dhcp4: false
      nameservers:
          addreses: [114.114.114.114,8.8.8.8]
    enp4s0:
      dhcp: false
  renderer: NetworkManager  #networkd

 renderer如果是让NetworkMnager来托管的话,需要sudo vim /etc/NetworkManager/NetworkManager.conf

 interfaces和Network-Manager是两种网络的设置方案。桌面情况,将conf文件中managed设置成true。

netplan的renderer两种方式:
renderer:NetworkMnager-->vim /etc/NetworkManager/NetworkManager.conf

renderer:networkd->vim /etc/network/interfaces

network:
  ethernets:
    ens33:     #配置的网卡的名称
      addresses: [172.16.85.130/24]    #配置的静态ip地址和掩码
      dhcp4: no    #关闭DHCP,如果需要打开DHCP则写yes
      optional: true
      gateway4: 172.16.85.2    #网关地址
      nameservers:
         addresses: [8.8.8.8,8.8.4.4]    #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开
  version: 2
  renderer: networkd    #指定后端采用systemd-networkd或者Network Manager,可不填写则默认使用systemd-workd

注意事项:

  • ip 地址和 DNS 服务器地址需要用[]括起来,但是网关地址不需要
  • 每个冒号后边都要先加一个空格
  • 每一层前边的缩进,至少比上一层多两个空格

根据实际需要依次设置enp3s0网卡的静态IP地址、网关、DNS,dhcp4设置为false,最后一行添加:renderer: networkd。注意缩进对齐,并且每个冒号后面要跟一个空格,否则会有问题。设置好后保存退出。

(4)输入命令netplan apply使改动生效,然后reboot重启系统,就配置好了。

三、方法二

有时候根据方法一操作,仍然不能成功设置静态IP,原因一般是系统里面安装过ifupdown命令。这个命令会根据/etc/network/interfaces这个文件里的配置信息来设置网卡,会覆盖掉上面方法一中的设置,导致不起作用。这时候我们只需修改/etc/network/interfaces这个文件即可。

(1)打开 /etc/network/interfaces

allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ cat  /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto br1
iface br1 inet dhcp
   bridge_ports virbr0-nic
   bridge_stp on
   bridge_fd 0.0

=====================
auto lo
iface lo inet loopback
动态地址:
auto eth0
iface eth0 inet dhcp
静态地址
auto eth0
iface eth0 inet static
address 192.168.0.11
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameserver 114.114.114.114

参照上图进行填写,其中网卡名称、静态IP地址、网关需要根据实际进行填写,填写好后保存退出。

(2)

allen@jettech-WS-C621E-SAGE-Series:/etc/netplan$ sudo cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.


search localdomain #如果本Server为DNS服务器,可以加上这一句,如果不是,可以不加
nameserver 172.16.3. #希望修改成的DNS
nameserver 172.16.3. #希望修改成的DNS
options edns0

(3) Ubuntu Server 最后一步,也是最重要的一步

  在rc.local里加入这个重启网络配置的命令:

sudo /etc/init.d/networking restart

【Desktop版本】

在Desktop版本中,除了可以修改 /etc/network/interfaces 来进行配置以外;还可以直接在network-manager中配置。通过 interfaces修改的方法参照Server版本。network-manager的配置和直观,按照提示一步一步操作即可,有兴趣的朋友,可以自行Google或者Baidu

但如果修改了interfaces,又配置了network-manager(以下简称nm),你就会发现出现了一些莫名其妙的问题:

1,interfaces和 nm中的网络设置不一样,系统实际的IP是哪个?

2,有时候莫名其妙的,界面右上角的网络连接图标就丢失了。

3,明明在nm中配置了正确的网络设置,为什么就上不了网呢?

其实,我们要知道 interfaces和 nm之间的关系,这些问题就不难解释了。

首先,当系统内没有第三方网络管理工具(比如nm)时,系统默认使用interfaces文件内的参数进行网络配置。(就像Server版本一样)

接着,当系统内安装了 nm之后,nm默认接管了系统的网络配置,使用nm 自己的网络配置参数来进行配置。

但是,如果用户在安装nm之后(Desktop版本默认安装了nm),自己手动修改了interfaces 文件,那nm 就自动停止对系统网络的管理,系统改使用interfaces 文件内的参数进行网络配置。

此时,再去修改nm 内的参数,不影响系统实际的网络配置。若要让nm 内的配置生效,必须重新启用nm 接管系统的网络配置。

现在知道了两者之间的工作关系,再看上面的三个问题:

1,要看nm是否接管,如果没有接管,系统实际的IP设置以interfaces 中的为准。反之,以nm 中的为准。

2,当nm 停止接管的时候,网络连接图标就丢失了。

3,同样是接管的问题。

如果用户希望在Desktop版本中,直接使用interfaces 进行网络配置,那可以关闭network-manager:

/etc/init.d/network-manager stop
systemctl stop NetworkManager

vim /etc/network/interfaces修改之后

确保/etc/NetworkManager/Network-manager.conf内的managed=false(系统默认是false,但是你更改过的话需要改这里)

/etc/init.d/networking restart
如果希望能继续使用nm 来进行网络配置,则需要进行如下操作:
sudo service network-manager stop # 停止 nm服务
sudo rm /var/lib/NetworkManager/NetworkManager.state # 移除nm 的状态文件
sudo gedit /etc/NetworkManager/nm-system-settings.conf # 打开nm 的配置文件

##里面有一行:managed=true

## 如果你手工改过 /etc/network/interfaces ,nm会自己把这行改成:managed=false(这里应该默认就是false)

## 将false 修改成true

sudo servicenetwork-manager start

Debian/Ubuntu的Network-Manager

    debian/ubuntu管理网络连接的有两个东西,图形化的NetworkManager和文字的 ifup/ifdown,如果在 /etc/network/interfaces里设置了网卡信息,那么NetworkManager就不会接管该网卡,如果没有设置NetworkManager默认是会接管网卡的。
    NetworkManager最方便的地方是个人电脑用无线连网的时候,因为文字界面的 iwlist wlan0 scan 并不是非常好用,而NetworkManger可以像windows那样列出所有可用的wifi热点,如果有中文乱码的,也一样可以连接,但如果你的机子是用来做服务器的,或者是在办公室里使用,有固定的路由环境,一般来说,也会有固定的ip,因为这样可以方便内网共享资源。总之不是个人用的,而且不用移来移去的话,最好是关掉这个NetworkManager,当然如果你经常带着本子跑,想去咖啡馆蹭网的话,就一定要打开这个NetworkManager,自动搜索无线非常方便了。
    下面来说说这两种情况:
    1,使用NetworkManger来联网,这个时候,如果使用了无线连接路由,而在/etc/network/interfaces里配置了有线连接的eth0的话,就会发生一个超级诡异的问题:可以访问外网,但不能访问内网,比如无线路由ip 192.168.0.1,ping该地址,会显示有线网卡的ip地址无法ping通,而不是无线!证明在设置了有线eth0的时候,会优先采用,但奇怪的是,外网连接正常,所有我怀疑这可能是debian的一个bug。所以当使用 NetworkManager的时候,可以注释掉所有/etc/network/interfaces 里的内容,仅仅保留本地回环网络:
        auto lo
        iface lo inet loopback
    这两句。设置固定ip,可以在NetworkManager图形界面里配置。
    2,关闭NetworkManager,关闭命令:sudo /etc/init.d/network-manager stop 取消开机启动:chkconfig network-manager off 重启网络:/etc/init.d/networking restart
    修改 /etc/network/interfaces 文件,
    系统配置部分:本地回环网络。
        auto lo
        iface lo inet loopback
    有线配置部分:
        auto eth0
        #iface eth0 inet dhcp # 如果你不想用固定ip的话,推荐用固定ip,这样可以省去请求路由分配的时间
        iface eth0 inet static
        netmask 255.255.255.0
        gateway 192.168.0.1      #gateway 0.0.0.0 # 拨号上网请把 gateway全部设置为0
        address 192.168.0.112
    无线配置部分:
        auto wlan0
        iface wlan0 inet static
        netmask 255.255.255.0
        gateway 192.168.0.1
        address 192.168.0.113
        pre-up ip link set wlan0 up
        pre-up iwconfig wlan0 essid ssid
        wpa-ssid TP-Link # 这里的ssid为路由里设置的无线名称
        wpa-psk 12345678 # 无线密码
    adsl拨号上网:
        auto dsl-provider
        iface dsl-provider inet ppp # dsl-provider 为之前配置好的拨号名称
        provider dsl-provider

;