Linux IP服务。为主机设定IP地址,对虚拟机进行联网等
首先介绍一下IP地址的一些基本知识
我们最常用的IP协议为IPv4,IPv4中规定IP地址长度为32,即有2^32-1个地址。
1.常用网络协议IPv4协议
11111111.11111111.11111111.11111111 == 255.255.255.255
netmask:子网掩码 用来标识IP的网络位和主机位
网络位:表示网络区域
主机位:表示网络区域内的某台主机
netmask 非0位所对应的IP地址数值为这个IP的网络位
主机位全1为广播地址,0代表此网络本身,均不可作为单独主机的IP使用
netmask 0位对应的IP地址数值为这个IP的主机位
网络位一致主机位不一致的两个IP是可以直接通信的(叫做直连网络)
网络位不一致,默认不可直接进行通信(可通过路由器进行通信)
2.IP的设定方法
ip addr show 查看网卡信息
ifconfig 也可以进行查看
IP设定方法一:编辑配置文件/etc/sysconfig/network-scripts/ifcfg-链接接名
cd /etc/sysconfig/network-scripts/
vim ifcfg-xxxx
编辑以下内容:
DEVICE=网卡
ONBOOT=yes
BOOTPROTO=dhcp或none或static
dhcp 表示动态获取IP地址
none/static 均表示静态IP地址
IPADDR=ip 自定义IP地址
NETMASK=子网掩码 或 PREFIX=子网掩码缩写
[NAME=链接名称]
例:(1)DHCP 动态获取
vim /etc/sysconfig/netwotk-scripts/ifcfg-link1
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
NAME=link1
(2)ststic 静态
vim /etc/sysconfig/network-scripts/ifcfg-link1
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.151.150
NETMASK=255.255.255.0 或 PREFIX=24
附:在一个网卡添加多个IP
cd /etc/sysconfig/network-scripts
编辑配置文件:vim ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR0=172.25.254.100
PREFIX0=24
IPADDR1=172.25.254.XXX
PREFIX1=24
TIP:如果忘记具体的参数,可在文件参数文档进行查看
/usr/share/doc/initscripts-*/sysconfig.txt
注:以下方法适用于企业七以后的系统
方法二:对IP进行临时修改
ifconfig eth0 查看网络情况
ifconfig device IP netmask 子网掩码 临时修改IP 重启网络或者系统重启将会恢复
ping IP 看网络是否连通
重启网络后失效:
方法三:永久修改/设定网络(图形方式)
(1)nm-connection-editor 图形 的设定ip方法
选择add进行添加
后进行IP链接名称修改,和硬件选择
选择网络类型和设定IP
其中:DHCP 向DHCP服务器获取动态IP,不固定 向服务器索取
Manual 设定静态IP,操作者自行设定。 不会改变
DHCP
注:若是edit编辑网络,在编辑后需要重启网络才会生效,若是add添加网络,则不需要重启。
(2)nmtui 当系统没有图形时可诶用此命令开启网络设定的ui界面
在其中进行编辑:
方法四: nmcli
先介绍一个网络管理的工具:NetworkManager
Red Hat Enterprise Linux 7 与 CentOS 7 中默认的网络服务由 NetworkManager 提供,这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的"ifcfg"类型的配置文件。NetworkManager 可以用于以下类型的连接:Ethernet,VLANS,Bridges,Bonds,Teams,Wi-Fi,mobile boradband(如移动3G)以及 IP-over-InfiniBand。针对与这些网络类型,NetworkManager 可以配置他们的网络别名,IP 地址,静态路由,DNS,VPN连接以及很多其它的特殊参数。
可以用命令行工具 nmcli 来控制 NetworkManager
nmcli的功能相比ifconfig要强大、复杂的多。
这次仅仅用他来进行IP地址的配置,其他详细功能可通过 man nmcli 来进行学习。
nmcli device 查看网络设备
nmcli device status eth0 查看eth0的状态
nmcli device show eth0 显示eth0具体信息
nmcli device disconnect eth0 关闭eth0
nmcli device connect eth 打开eth0
nmcli connection 查看网络连接
nmcli +connection down +链接名 关闭链接
nmcli +connection up +链接名 开启链接
nmcli +connection show +链接名 显示详细信息
nmcli connection delete +链接名 删除链接
可通过以下方式来添加IP地址
nmcli connection add type ethernet con-name 链接名称 ifname 设备名称 ip4 172.25.254.139/24
nmcli connection add + TAB 查看可补全的信息
修改IP:
DHCP---->static 动态到静态
nmcli connection modify 链接名 ipv4.method manual 修改类型到静态
nmcli connection modify 链接名 ipv4.addresses IP 添加IP
systemctl restart network
示例如下:
修改类型:
nmcli connection modify 链接名 ipv4.addresses IP
systemctl restart network
static---->DHCP 静态到动态
nmcli connection modify 链接名 ipv4.method auto #修改类型
systemctl restart network
从静态到动态:
3.对虚拟机进行外网连接。
首先介绍两个概念:网关和DNS(域名系统)
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
通俗的的来说就是,我们的主机想要和外网通信就需要借助于网关,我们想要浏览万维网上的信息必须得通过对应主机的IP地址来访问,也就是每浏览一个网页就得知道其对应的IP地址,而DNS可以让我们无需进行如此繁琐的操作。
废话说完,下面就来点干货
具体操作如下:
(1)在linux真机中切换到超级用户
编辑与外网通信的网卡,去掉网关。具体操作与上文中以文本方式添加IP类似
编辑/etc/sysconfig/network-scripts/ifcfg-br0(此处为自己主机网卡对应的链接名)
去掉网关,重启网络
2.连接到wifi或是保证真机可以连接到互联网
打开防火墙
打开masquerade 伪装服务
firewall-cmd --add-masquerade
打开前:
设定虚拟机网关为真机IP地址
(1)设定全局网络: 编辑 /etc/sysconfig/networkGATEWAY=网关IP
GATEWAY=网关IP(注意配合ip与掩码的格式)
(3)ping 网关,即真机IP看是否连通
(4)设定DNS解析
I. /etc/hosts 本地解析文件 :可在其中输入固定IP对应的网址用来连接。(输入什么IP地址就能能连上什么IP,局限性大,建议第二种)
II. /etc/resolv.conf "寻求帮助" 可植入:114.114.114.114:公共解析域名
或是设为真机的网关
编辑vim/etc/resolv.conf
ping www.baidu.com,看网络是否链通
可连通。这样就成功将虚拟机与外网连接了。
若是连接不上,可按照以下思路排错,
(1)在真机ping www.baidu.com,看是否可以ping通。
(2)检查防火墙情况:firewalld-cmd --list-all --> masquerade: yes
(3)在虚拟机中看网关和真机ip是否相同,再看DNS解析
(4)ping 网关,不通的话看是否虚拟机网卡出现问题
(5)在真机中执行:virt-manager
选择你的虚拟机双击打开
删除NIC:00:97:0a
ADD Hardware 之后添加virtio后再ping网关
执行:sysctl -a | grep ip_forward
看是否为net.ip_forward = 1,若为0
添加net.ip_forward = 1
sysctl -p。
后再尝试ping。
如下,将ip_forward = 1 执行
以上对虚拟机进行联网的操作,也可用于借助同一局域网内的一台连网主机,使其他主机进行联网。