Ubuntu 配置 ip 地址
之前的经历告诉我,Linux 通过读取配置文件加载 ip 相关的配置,这让问题变得简单。在 Redhat 系中,通过修改 /etc/sysconfig/network-scripts/ifcfg-*
等文件,可以针对网卡级别直接修改配置,而 Debian 系实现的方案并不一致。
众所周知,Ubuntu 分为 Server 版和 Desktop 版,后者提供更优秀的可视化配置;同时 Ubuntu 在 17.04 引入了 netplan 配置,这改变了网络配置的方式。
Ubuntu Desktop 18.10 Desktop 网络配置
这里对桌面版不再说明细节,图文解释见 How to configure static IP address on Ubuntu 18.10 Cosmic Cuttlefish Linux。
Ubuntu 17.10 之后的网络配置
临时配置 ip 地址
通过 ip
这个命令可以临时配置 ip 地址。重启后消失。
# 设置 ip 地址
$ sudo ip addr add 192.168.1.21/24 dev eno1
# 设置通道开闭(如果在 ssh 登陆情况下关闭,那么就只能去...)
$ ip link set dev eno0 up
$ ip link set dev eno0 up
# 查看网卡绑定地址信息
$ ip address show dev eno1
# 设置网关
$ sudo ip route add default via 192.168.1.1
# 查看网关信息
$ ip route show
动态 ip 地址分配(DHCP)
修改 netplan 相关配置文件即可。
$ sudo vim /etc/netplan/99_config.yaml
# /etc/netplan/99_config.yaml
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: true
dhcp6: true
$ sudo netplan apply
关于为什么修改这个文件,这个文件的内容是什么意思,后面会详细解释,在这里理解 eno1 这块网卡可以使用 dhcp 服务获取动态 ip 就好了。
配置静态地址
17.10 引入了一个新的工具,叫做 Netplan
。所以 /etc/network/interfaces 将不再使用。可以通过 man netplan
或者 man(netplan) 查看它的相关信息。
简单来说,我们可以创建 /{lib,etc,run}/netplan/*.yaml 配置文件(一般来说只会创建 /etc/netplan/*.yaml),关于网络的配置,包括 ip 地址,DHCP 配置,DNS 配置,甚至包括 ntp 和 route 配置。
它的格式是yaml,所以每个元素的间隔非常重要,语法可见:YAML 语言教程;加载顺序是从小到大,从默认的 01-netcfg.yaml
到 99-config.yaml
(命名随便的,为了方便,前两个字符留给数字),后者的配置会将前者出现过的配置覆盖或者增加。
具体的使用可以看 man(netplan),这里只做个最简单的静态 ip 配置。
通过 ip a 查看网卡名以及网络连接情况
$ sudo vim /etc/netplan/01-netcfg.yaml
# /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses: [192.168.1.11/24] # 如果要对单网卡绑定多个地址,那么可以 [192.168.1.11/24, 192.168.1.12/24]
gateway4: 192.168.1.1
nameservers:
addresses:
- "192.168.31.1"
$ sudo netplan apply
这个 YAML 文件大致的 key 结构是:
network: # 默认就这个,别改
version: 2 # curtin,MaaS 等当前使用的YAML是版本 1,其他的都是 2
renderer: networkd # 指定配置渲染器,默认这个就足够了(19.04改成了 NetworkManager)
ethernets: # 这里开始就根据类型进行分组了,除了 ethernets 类型还有 wifis,bridges
eno1: # 网卡名
addresses: [192.168.1.11/24] # 指定 ip 地址
gateway4: 192.168.1.1 # 指定网关地址
nameservers: # 指定 dns 服务地址,一般配置成和网关一致,或者 8.8.8.8
addresses:
- "192.168.31.1"
Ubuntu 12.04 - 17.04 的网络配置
通过配置 /etc/network/interfaces 实现配置。
具体的实现可以查看 - How to configure static IP address on Ubuntu 18.10 Cosmic Cuttlefish Linux。
简单的说就是随着新版本的推出,网络的配置工具逐渐统一化,(虽然这违背了 UNIX 美学)。所以之前的版本修改过程还比较复杂。