这篇文章是对官方文档的翻译。详细的讲了网络的各种配置。
原文链接:Configuring networks | Ubuntu
Ubuntu 上的网络配置是通过 Netplan 来处理的,它提供了一种高级的、与发行版无关的方式,通过 YAML 配置文件来界说体系上的网络设置。
固然 Netplan 是一个配置抽象出现器,涵盖了网络配置的方方面面,但在此我们将概述 IP 所在、以太网设备、名称解析等底层体系元素。我们会在适当的地方参考相关的 Netplan 设置,但我们还是发起大家学习 Netplan 文档。
以太网接口
体系利用可猜测的网络接口名称来辨认以太网接口(Ethernet interfaces)。这些名称可以表现为 eno1 或 enp0s25。但在某些环境下,接口仍大概利用内核 eth#定名方式。
辨认以太网接口
要快速辨认所有可用的以太网接口,可以利用 ip 命令,如下所示。
- 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 brd 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: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
- link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0
- inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0
- valid_lft 3257sec preferred_lft 3257sec
- inet6 fe80::216:3eff:fee2:5242/64 scope link
- valid_lft forever preferred_lft forever
复制代码 lshw 命令是另一个可以帮助辨认体系所有可用网络接口的应用程序。该命令可提供有关特定适配器硬件功能的更多详细信息。在下面的示例中,lshw 表现了一个逻辑名称为 eth4 的以太网接口,以及总线信息、驱动程序详细信息和所有支持的功能。
- sudo lshw -class network
- *-network
- description: Ethernet interface
- product: MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
- vendor: Mellanox Technologies
- physical id: 0
- bus info: pci@0004:01:00.0
- logical name: eth4
- version: b0
- serial: e4:1d:2d:67:83:56
- slot: U78CB.001.WZS09KB-P1-C6-T1
- size: 10Gbit/s
- capacity: 10Gbit/s
- width: 64 bits
- clock: 33MHz
- capabilities: pm vpd msix pciexpress bus_master cap_list ethernet physical fibre 10000bt-fd
- configuration: autonegotiation=off broadcast=yes driver=mlx4_en driverversion=4.0-0 duplex=full firmware=2.9.1326 ip=192.168.1.1 latency=0 link=yes multicast=yes port=fibre speed=10Gbit/s
- resources: iomemory:24000-23fff irq:481 memory:3fe200000000-3fe2000fffff memory:240000000000-240007ffffff
复制代码 以太网接口名称
以太网接口名称也可通过 Netplan 配置举行配置。假如要控制哪个接口接收特定的逻辑名称,可利用match和set-name字段。match字段用于根据 MAC 所在、驱动程序等尺度查找适配器。set-name字段可用于将设备更改为所需的逻辑名称。
- network:
- version: 2
- renderer: networkd
- ethernets:
- eth_lan0:
- dhcp4: true
- match:
- macaddress: 00:11:22:33:44:55
- set-name: eth_lan0
复制代码 以太网接口设置
ethtool 是一个表现和更改以太网卡设置(如自动协商、端口速度、双工模式和网络叫醒)的程序。下面举例说明怎样查看以太网接口的支持功能和配置设置。
- sudo ethtool eth4
- Settings for eth4:
- Supported ports: [ FIBRE ]
- Supported link modes: 10000baseT/Full
- Supported pause frame use: No
- Supports auto-negotiation: No
- Supported FEC modes: Not reported
- Advertised link modes: 10000baseT/Full
- Advertised pause frame use: No
- Advertised auto-negotiation: No
- Advertised FEC modes: Not reported
- Speed: 10000Mb/s
- Duplex: Full
- Port: FIBRE
- PHYAD: 0
- Transceiver: internal
- Auto-negotiation: off
- Supports Wake-on: d
- Wake-on: d
- Current message level: 0x00000014 (20)
- link ifdown
- Link detected: yes
复制代码 IP 寻址
下面将介绍配置体系 IP 所在和默认网关的过程,以便在局域网和互联网上举行通讯。
临时分配 IP 所在
对于临时网络配置,可以利用 ip 命令,该命令在大多数其他 GNU/Linux 操纵体系中也能找到。利用 ip 命令举行的配置会立即生效,但这些设置并不持久,重启后会丢失。
要临时配置 IP 所在,可以按以下方式利用 ip 命令。修改 IP 所在和子网掩码,使其符合网络要求。
- sudo ip addr add 10.102.66.200/24 dev enp0s25
复制代码 然后就可以利用 ip 命令来设置链接的启动或关闭。
- ip link set dev enp0s25 up
- ip link set dev enp0s25 down
复制代码 要验证 enp0s25 的 IP 所在配置,可以按以下方式利用 ip 命令:
- ip address show dev enp0s25
- 10: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
- link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0
- inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0
- valid_lft 2857sec preferred_lft 2857sec
- inet6 fe80::216:3eff:fee2:5242/64 scope link
- valid_lft forever preferred_lft forever6
复制代码 要配置默认网关,可按以下方式利用 ip 命令。修改默认网关所在,使其符合网络要求。
- sudo ip route add default via 10.102.66.1
复制代码 您还可以利用 ip 命令验证默认网关配置,如下所示:
- ip route show
- default via 10.102.66.1 dev eth0 proto dhcp src 10.102.66.200 metric 100
- 10.102.66.0/24 dev eth0 proto kernel scope link src 10.102.66.200
- 10.102.66.1 dev eth0 proto dhcp scope link src 10.102.66.200 metric 100
复制代码 假如临时网络配置必要 DNS,可在 /etc/resolv.conf 文件中添加 DNS 服务器 IP 所在。一样平常来说, 不发起直接编辑 /etc/resolv.conf,但这是一个临时和非持久的配置。下面的示例表现了怎样在 /etc/resolv.conf 中输入两个 DNS 服务器,应将其更改为得当自己网络的服务器。下一节将详细介绍 DNS 客户端配置的正确(持久)方法。
- nameserver 8.8.8.8
- nameserver 8.8.4.4
复制代码 假如不再必要这些配置,并希望清除接口上的所有 IP 配置,可以利用带有 flush 选项的 ip 命令:
注意
利用 ip 命令刷新 IP 配置不会清除 /etc/resolv.conf 中的内容。您必须手动删除或修改这些条目(或重新启动),这也会导致重新编写 /etc/resolv.conf(它是 /run/systemd/resolve/stub-resolv.conf 的符号链接)。
动态分配 IP 所在(DHCP 客户端)
要配置服务器利用 DHCP 进举措态分配所在,请在 /etc/netplan/99_config.yaml 文件中创建 Netplan 配置。以下示例假定您配置的第一个以太网接口为 enp3s0。
- network:
- version: 2
- renderer: networkd
- ethernets:
- enp3s0:
- dhcp4: true
复制代码 然后可以利用 netplan 命令应用配置:
静态 IP 所在分配
要配置体系利用静态所在分配,请在 /etc/netplan/99_config.yaml 文件中创建 netplan 配置。下面的示例假定您正在配置第一个以太网接口 eth0。更改所在、路由和名称服务器值,以满足网络要求。
- network:
- version: 2
- renderer: networkd
- ethernets:
- eth0:
- addresses:
- - 10.10.10.2/24
- routes:
- - to: default
- via: 10.10.10.1
- nameservers:
- search: [mydomain, otherdomain]
- addresses: [10.10.10.1, 1.1.1.1]
复制代码 然后可以利用 netplan 命令应用配置。
注意
Ubuntu Bionic 18.04 LTS 中的 netplan 无法用 to: default 语法去指定默认路由,应利用较旧的 gateway4: 10.10.10.1 字段去替换整个 routes: 块。
体系将环回接口(loopback interface)辨认为 lo,默认 IP 所在为 127.0.0.1。可以利用 ip 命令查看。
- ip address show lo
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
- link/loopback 00:00:00:00:00 brd 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
复制代码
名称解析
名称解析(与 IP 网络有关)是将主机名映射到 IP 所在的过程,反之亦然,如许可以更容易地辨认网络上的资源。下文将介绍怎样利用 DNS 和静态主机名去正确配置体系,以此举行名称解析。
DNS 客户端配置
传统上,/etc/resolv.conf 文件是一个静态配置文件,很少必要更改,或者通过 DHCP 客户端钩子自动更改。systemd-resolved 负责处理名称服务器配置,应通过 systemd-resolve 命令与之交互。Netplan 对 systemd-resolved 举行配置,以生成一份名称服务器和域的列表,并将其放入 /etc/resolv.conf,这是一个符号链接:
- /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
复制代码 要配置解析器,请在 netplan 配置文件中添加适当的网络名称服务器 IP 所在。还可以添加可选的 DNS 后缀搜刮列表,以匹配网络域名。生成的文件大概如下所示:
- network:
- version: 2
- renderer: networkd
- ethernets:
- enp0s25:
- addresses:
- - 192.168.0.100/24
- routes:
- - to: default
- via: 192.168.0.1
- nameservers:
- search: [mydomain, otherdomain]
- addresses: [1.1.1.1, 8.8.8.8, 4.4.4.4]
复制代码 搜刮选项也可与多个域名一起利用,如许 DNS 查询将按输入顺序添加。例如,您的网络大概有多个要搜刮的子域名;一个父域名 example.com,以及两个子域名 sales.example.com 和 dev.example.com。
假如您希望搜刮多个域,您的配置大概如下:
- network:
- version: 2
- renderer: networkd
- ethernets:
- enp0s25:
- addresses:
- - 192.168.0.100/24
- routes:
- - to: default
- via: 192.168.0.1
- nameservers:
- search: [example.com, sales.example.com, dev.example.com]
- addresses: [1.1.1.1, 8.8.8.8, 4.4.4.4]
复制代码 假如您实验 ping 名为 server1 的主机,体系会按以下顺序自动查询 DNS 的完全及格域名 (FQDN):
- server1.example.com
- server1.sales.example.com
- server1.dev.example.com
假如没有找到匹配项,DNS 服务器将提供 notfound 的效果,DNS 查询将失败。
静态主机名
静态主机名是本地界说的 主机名-IP 映射,位于 /etc/hosts 文件中。 默认环境下,hosts 文件中的条目优先于 DNS。这意味着,假如体系实验解析一个主机名,但该主机名与 /etc/hosts 文件中的条目相匹配,体系将不会实验在 DNS 中查找该记录。在某些配置中,尤其是不必要访问互联网时,可以方便地将与有限资源通讯的服务器设置为利用静态主机名而不是 DNS。
下面是一个主机文件示例,其中一些本地服务器是通过简单的主机名、别名及其等效的完全及格域名(FQDN)来标识的:
- 127.0.0.1 localhost
- 127.0.1.1 ubuntu-server
- 10.0.0.11 server1 server1.example.com vpn
- 10.0.0.12 server2 server2.example.com mail
- 10.0.0.13 server3 server3.example.com www
- 10.0.0.14 server4 server4.example.com file
复制代码 注意
在本例中,除了服务器正确名字和 FQDN 外,还为每台服务器提供了别名。server 1 被映射为 vpn,server 2 被映射为 mail,server 3 被映射为 www,server 4 被映射为 file。
名称服务交换机(NSS)配置
体系选择将主机名解析为 IP 所在的方法的顺序由 Name Service Switch(NSS)配置文件 /etc/nsswitch.conf 控制。如上一节所述,通常体系 /etc/hosts 文件中界说的静态主机名优先于 DNS 解析的名称。下面是 /etc/nsswitch.conf 文件中负责主机名查找顺序的一行示例。
- hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
复制代码
- files 起首实验解析位于 /etc/hosts 中的静态主机名。
- mdns4_minimal 实验利用Multicast DNS(多播DNS)解析名称。
- [NOTFOUND=return] 表示前面的 mdns4_minimal 历程的任何 not found 相应都应被视为权威相应,体系不应继续寻找回答。
- dns 表示传统的单播 DNS 查询。
- mdns4 表示多播 DNS 查询。
要修改这些名称解析方法的顺序,只需将 hosts: 字符串更改为自己选择的值即可。例如,假如您更喜欢利用传统的单播 DNS 而不是多播 DNS,可以如下所示更改 /etc/nsswitch.conf 中的字符串:
- hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4
复制代码
桥接多个接口
桥接是一种更高级的配置,但在多种环境下都非常有用。一种环境是利用多个网络接口设置网桥,然后利用防火墙过滤两个网段之间的流量。另一种环境是在有一个接口的体系上利用网桥,允许虚拟机直接访问外部网络。 下面的示例涵盖了后一种环境:
通过编辑 /etc/netplan/ 中的 netplan 配置来配置网桥,为物理接口和网络输入适当的值:
- network:
- version: 2
- renderer: networkd
- ethernets:
- enp3s0:
- dhcp4: no
- bridges:
- br0:
- dhcp4: yes
- interfaces:
- - enp3s0
复制代码 如今应用配置启用网桥:
新的网桥接口如今应该已启动并运行。brctl 提供有关网桥状态的有用信息,控制哪些接口是网桥的一部分等。更多信息请参阅 man brctl。
用于钩子脚本的 networkd-dispatcher
曾经利用过 ifupdown 的用户大概更认识怎样在接口文件中利用钩子脚本(如 pre-up、post-up)。Netplan 现在不支持在配置界说中利用钩子脚本。
作为替换,用户可以通过 networkdd 中的 networkd-dispatcher 来实现这一功能。当达到特定网络状态时,该软件包会为用户和软件包提供挂钩点,以帮助对网络状态做出反应。
注意
假如您利用的是台式机(而非 Ubuntu 服务器),则网络由Network Manager驱动–在这种环境下,必要利用 NM Dispatcher 脚本。
Netplan FAQ 有一个很好的表格,比力了 ifupdown/systemd-networkd/network-manager 之间的变乱时序。
必要注意的是,这些钩子是异步运行的;也就是说,它们不会阻止过渡到另一种状态。
Netplan 常见问题中还有一个将旧的 ifupdown 挂钩转换为 networkd-dispatcher 的示例。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |