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个设备。
- lo 回环设备 就是本机自己
- enp0s25 这个是有线网卡,目前我见到的有线网卡几乎都是 enp 开头,老版本中才会有 eth0 eth1 这样的方式显示,一些特殊的发型版本比如 kali 目前还是使用的 eth 这样开头的方式来命名网卡。
- 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 no 方式(静态ip)启动ipv4
dhcp6: no # dhcp no 方式启动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