Ubuntu 18.04 lts 修改静态ip

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

上一篇
下一篇