Ubuntu修改IP地址
前言
本文章旨在介绍,如何在Ubuntu中如何通过新建方式, 来配置多个静态IP地址.
如果Ubuntu处于虚拟机中,要添加一个新的IP地址(非指修改);肯定是需要添加一块虚拟网卡, 具体添加方式,依照虚拟机的不同而不同.
而,如果是要修改某个网卡的IP地址,则需要将,配置文件名的改网卡名的部分删掉重写.方法与下面的类似, 就是换个名而已.
基于16.04
- 查看网卡是否连接成功
首先使用
dmesg | grep eth (dmesg用法见帅哥笔记)
查看两个网卡连接是否成功(link up)
[ 3.009052] e1000 0000:02:06.0 ens38: renamed from eth1
[ 3.012121] e1000 0000:02:01.0 ens33: renamed from eth0
通过以上两句我们发现, 在Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-62-generic x86_64)
中网卡名称已被重命名, 在接下来编写IP地址时应该特别注意这一块
- 进入配置目录(准备配置文件);
其次:
1. vim /etc/network/interface
发现source /etc/network/interfaces.d/*
这句话的意思, 应该就是,引用当前目录下的interfaces.d下的配置文件.
故,我们今后的修改应该将配置文件统统都放在该目录下.
2.备份 /etc/network/interface文件
在/etc/network/interfaces.d/下,
新建一个文件名为XXX(注意不可以与前一个网卡重名,文件名没事,参考dmesg | grep eth得到的信息)
- 修改配置文件
# 编辑文件
vim /etc/network/interfaces.d/eth0
# 添加配置信息(按需添加)
auto eth0
iface eth0 inet static
address IP地址
netmask 子网掩码
gateway 网关地址
dns-nameservers DNS解析地址
.....
多个IP多个网卡可以继续配置
但是我一般一个文件一个网卡一个IP
.....
我的配置如下:
auto ens33
iface ens33 inet static
address 192.168.80.129
netmask 255.255.0.0
gateway 192.168.80.1
dns-nameservers 8.8.8.8
hwaddress ether 00:50:56:35:CB:9D
注意:
此处最应该注意的时, 网卡名称一定不要搞错,重复应该是没有问题的, 但是不生效.
dns-nameservers和hwaddress其实完全不用写
ubutnu的DNS配置在vim /etc/resolv.conf
之所以写下来是为了告诉自己知道,这里可以单独指定.
同时应该注意的时,据称DHCP解析会自动分配DNS 服务器地址.
静态IP后就没有自动获取到DNS服务器了,需要自己设置一个
设置完重启电脑后,/etc/resolv.conf 文件中会自动添加 nameserver 8.8.8.8
但是一般在虚拟机中除非必要,我从来不动DNS.
原因在于, 我的虚拟机一般都是加载两块虚拟网卡,一块NAT直连本机,用来上网,自己用. 一块桥接获得路由IP,让别人访问.
重启网卡
service network restart
或者
sudo /etc/init.d/networking restart
其实这两种方式是一样的....
如果不行就重启机器吧.
- 设置Mac地址
在大多数情况下是不需要进行专门的指定Mac地址
但是VMware在window下配置IP时.
爆出这个错误, 很是要命, 不解决这个问题, 一旦重启系统, 将无法开机.
Restarting network (via systemctl): Job for network.service failed. See *systemctl status network.service* and *journalctl -xn* for details.
原因在于:
配置文件中的HWADDR(即网卡的MAC地址)与实际网卡地址不符(如迁移虚拟机时只复制了虚拟机磁盘,系统会给新虚拟机重新分配MAC地址),注释掉这一行,或者查找到新的MAC地址并改正确就好了。
我的解决方案是, 重置一下虚拟机的Mac地址.
更为专业的方法是指定一下Mac地址:
临时设置网卡配置(即重启无效):
## 修改 eth0 的 MAC 地址
sudo ifconfig eth0 down
sudo ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF
sudo ifconfig eth0 up
在配置文件中设置:
hwaddress ether 00:50:56:35:CB:9D
基于18.04
进入目录修改文件
cd /etc/netplan
vim 50-cloud-init.yaml
将文件改成这样:
这个是基于virtualBox的Ubuntu18.04-Server虚拟机来做的,一个nat网络(enp0s3),一个是host only(enp0s8)
enp0s3 主要用来上网.也可以用桥接连接.
enp0s8 主要用来和宿主之间通信,比如ssh连接等等.
network:
version: 2
ethernets:
enp0s3:
dhcp4: true
addresses: []
enp0s8:
dhcp4: false
addresses: [192.168.56.100/24]
# 后面的都可以不用设置
optional: true
# 18.04如果双网卡,比如在虚拟机下开一个nat网络地址转换和仅主机host only,那么就要把gateway4注释掉,否则会开个多个路由,导致不能上网
gateway4: 192.168.56.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
虚拟机双网卡(nat和Host only)下,不要开启多个网关,否则导致无法上网,原因如下
比如,我的enp0s3(nat):开启dhcp4: true(会自动设置网关),而enp0s8(host only):没有开启dhcp4,但是下面我有设置了网关地址 gateway4: 192.168.56.1
导致问题如下: 出现了多个默认的网关地址,且192.168.56.1是第一个,但是这个是host only并不可用,将导致无法上网
liuhao@ubuntu:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.56.1 0.0.0.0 UG 0 0 0 enp0s8
default 10.0.2.2 0.0.0.0 UG 100 0 0 enp0s3
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
10.0.2.2 0.0.0.0 255.255.255.255 UH 100 0 0 enp0s3
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
# 一般这时候我只有删除掉192.168.56.1网关就可以上网了,但是下次再启动的时候,192.168.56.1还是会被添加上来.
# 所以我们在配置网络IP地址的时候最好就直接配好省的费劲
sudo route del gw default 192.168.56.1
运行
# 重启网卡
netplan apply
# 查看网卡情况
ip addr