0x00引子
最近在调试 ubuntu 的服务器,需要设置固定 ip,想着这东西轻车熟路的没什么大的变化,更改个配置文件就好了,具体配置文件的位置有些记不清楚了,随手 bing 了一下,发现了一些新的东西记录一下。从Ubuntu 17.10 开始网络方面引入了一个新的工具,用来配置 ip 地址,总体来说略方便一点。下面分别记录一下两种方法。
0x01 修改配置文件 /etc/network/interfaces
这个配置文件为 /etc/network/interfaces
在里面添加内容即可。
1. 查看网卡信息
首先要查看网卡的名称,使用 ip a
或者 ifconfig
都可以看到网卡的信息,例如
ivo@bbb:~$ 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: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 28:d2:44:82:c5:f8 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.222/24 brd 192.168.2.255 scope global enp0s25
valid_lft forever preferred_lft forever
inet6 fe80::2ad2:44ff:fe82:c5f8/64 scope link
valid_lft forever preferred_lft forever
3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether e8:2a:ea:22:4c:be brd ff:ff:ff:ff:ff:ff
-------------------------------------------------------------------
ivo@bbb:/etc/network$ ifconfig
enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.222 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::2ad2:44ff:fe82:c5f8 prefixlen 64 scopeid 0x20<link>
ether 28:d2:44:82:c5:f8 txqueuelen 1000 (Ethernet)
RX packets 27300963 bytes 2982528487 (2.9 GB)
RX errors 0 dropped 1203843 overruns 0 frame 0
TX packets 267796 bytes 32069927 (32.0 MB)
TX errors 380 dropped 0 overruns 0 carrier 380 collisions 104372
device interrupt 20 memory 0xf0600000-f0620000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 826 bytes 69799 (69.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 826 bytes 69799 (69.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这两个命令的区别的 ip a
可以看到未配置的无线网卡的信息(没有连接),而 ifconfig
只能看到已经有默认配置的网卡的信息。 这里推荐使用 ip a
这种方式,因为在有些发型版本里面 ifconfig
命令没有被默认安装。
上面的信息中 ip a
查看到的有3个设备。
1. lo 回环设备 就是本机自己
2. enp0s25 这个是有线网卡,目前我见到的有线网卡几乎都是 enp 开头,老版本中才会有 eth0 eth1 这样的方式显示,一些特殊的发型版本比如 kali 目前还是使用的 eth 这样开头的方式来命名网卡。
3. wlp3s0 这个是无线网卡,目前我接触的的无线网卡大部分都是 wl 开头,这个可以当做一个规律来使用。
2. 编辑文件
介绍完这个下面开始进行配置。
编辑配置文件加入以下内容
auto enp0s25
iface enp0s25 inet static
address 192.168.8.88
netmask 255.255.240.0
gateway 192.168.8.1
dns-nameservers 8.8.8.8
解释一下内容
auto enp0s25 # 开机启动这个网卡
iface enp0s25 inet static # 开启静态 ip,如果使用 dhcp 获取 内容改为 iface enp0s25 inet dhcp即可
address 192.168.8.88 # ip 地址
netmask 255.255.240.0 # 子网掩码
gateway 192.168.8.1 # 网关
dns-nameservers 8.8.8.8 # dns,如果不指定 dns 那么会根据操作系统默认的 dns 进行网络解析。手动设置 ip 以后重启,会自动在 /etc/resolv.conf 文件中会自动添加 nameserver 8.8.8.8
3.重启网络
之后重启网络
sudo /etc/init.d/networking restart
或者
sudo service networking restart
有些时候不管用,只能重启才生效。
无效的可能是因为 sudo service network-manager restart 还要做这个服务的重启,要是使用这个服务的话需要做一条配置 /etc/NetworkManager/NetworkManager.conf 将“managed=false”修改为“managed=true”。意思是,将网络连接设置为自定义或手动。
如果还不行就重启吧。我个人配置机器的时候,生不生效都遇到过,所以默认的操作就是配置完以后重启,不去手动配置 NetworkManager,这个配置基本不动。
0x02 ubuntu 17.10 引入的新方式 netplan
先说一下这个程序的好处,使用它可以不重启机器就变更 ip,及时生效目前还出没过问题。
1. 配置文件
网卡信息配置在 /etc/netplan/01-network-manager-all.yaml 文件中,如果这个 yaml 文件不存在(发型版本中没有默认创建),那么可以使用一下的命令创建出来。创建出来的名字可能略有不同,好在 /etc/netplan/ 这个目录下面所有的 yaml 文件都可以生效。
sudo netplan generate
下面举个实例
vim /etc/netplan/01-network-manager-all.yaml
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
enp0s25:
dhcp4: no
dhcp6: no
addresses: [192.168.2.222/24, ]
gateway4: 192.168.2.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
version: 2
说明一下
network:
ethernets:
enp0s25:
dhcp4: no # dhcp 方式启动ipv4
dhcp6: no # dhcp 方式启动ipv6
addresses: [192.168.2.222/24, ] # 这里写ip地址和子网掩码 或者写成在下一行以 - 192.168.2.222 方式写
gateway4: 192.168.2.1 # 网关
nameservers:
addresses: [8.8.8.8, 8.8.4.4] # dns
version: 2
上面例子中的另一种写法
network:
ethernets:
ens160:
addresses:
- 192.168.2.222/24 # IP及掩码
gateway4: 192.168.2.1 # 网关
nameservers:
addresses:
- 8.8.8.8 # DNS
version: 2
2. 使netplan配置生效
sudo netplan apply
此时即可生效
这里有几点需要注意:
1、将renderer: NetworkManager注释,否则netplan命令无法生效;
2、ip配置信息要按如上格式,使用yaml语法格式,每个配置项使用空格缩进表示层级;
3、对应配置项后跟着冒号,之后要接个空格,否则netplan命令也会报错。
-- 本文中引用参考的内容如下,向这些前辈致敬
https://blog.csdn.net/u010039418/article/details/80934346
https://www.howtoing.com/configure-network-static-ip-address-in-ubuntu
http://www.cnblogs.com/jianxuanbing/p/10042892.html
https://blog.csdn.net/xiaohuozi_2016/article/details/54743992
https://www.jianshu.com/p/d69a95aa1ed7
https://blog.igevin.info/posts/ubuntu-1404-ip-dns/
https://blog.51cto.com/newthink/2049585
http://blog.biochen.com/archives/1190
https://blog.51cto.com/newthink/2049585
http://blog.biochen.com/archives/1190
https://blog.csdn.net/u013408061/article/details/52663073