1.虚拟机网络配置
1.命题:
首先server 为路由器,desktop为客户端,desktop(1.1.1.150)想通过联网的真机上网
设置server为路由器,两端IP分明别为:172.25.150.50 & 1.1.1.50,server可以通过真机连接互联网;
desktop为内网的主机,内网IP为1.1.1.150;
desktop此时想通过server连接到外网
2.方法:
###1.设置desktop的IP为1.1.1.150:
###2.设置server的IP,由于server是路由器,因此需要在路由器上开启地址伪装功能:
注意:经过上两步设置,此时两台虚拟机可以互相ping通,但若是server可以ping通真机,但desktop不能ping通,说明内核的路由功能没有开启,在srver上执行以下命令:
设置内核:
sysctl -a | grep ip_forward ##查看内核的路由功能:若结果为0表示未开启,改为1表示开启
vim /etc/sysctl.conf ##在此文件中进行添加
添加: net.ipv4.ip_forward=1
sysctl -p ##使配置生效
我们可以看到当前desktop不能ping通真机
使用sysctl -a | grep ip_forward
命令查看当前内核路由状态:
可以看到当前内核的路由关闭,此时需要打开内核路由:
再执行 sysctl -p
使更改生效:
进过设置后,desktop就可以ping通真机:
###3.使真机连上WIFI,我们可以看到真机能ping通百度的域名,但两台虚拟机均不能pin通,此时设置真机为路由器,将server的网关设置为真机ip,同时在真机上开启防火墙中的地址伪装功能与内核路由功能:
"注意":以上操作均要在真机中的root用户权限下做
首先我们可以看真机可以ping通百度的域名:
但server和desktop则不能ping通此IP,这是因为此时对于server和desktop来说,他们是内网的主机,server作为路由只能使desktop主机ping通172.25.150网段的主机,但对于server本身而言,他也不知道去外网的“路”,因此,我们还需要将真机设置为路由器,将server的网关设置为真机ip,同时在真机上开启防火墙中的地址伪装功能与内核路由功能:
我们可以看到server和desktop则不能ping通百度的IP
将server的网关设置为真机的ip地址(具体方法在Linux中的网络配置中有详细介绍),并且在真机中开启防火墙的地址伪装功能:
此处要注意,若在真机中进行防火墙配置时出现错误,可以使用以下解决方法:
systemctl stop libvirtd.service ##关闭与虚拟机的连接
systemctl restart firewalld.service ##重启防火墙
firewall-cmd --list-all ##查看地址伪装是否开启
firewall-cmd --add-masquerade ##添加地址伪装
success ##成功添加
virt-manager ##虚拟机管理
systemctl start libvirtd.service ##开启与虚拟机连接
配置完成后,我们可以看到,server与desktop此时均可以ping通百度的ip:
2.DNS配置
我们注意到,当真机ping百度时,可以直接ping百度的域名www.baidu.com,但是在使用虚拟机ping百度时,就必须使用IP地址,使用域名会出现如下错误:
这是因为在虚拟机中没有DNS(Domin Name System)即域名解析,DNS将域名映射为一个IP地址,方便人们记忆有意义的域名,而不是较为难记的IP地址,那么,如何进行DNS配置呢?
1.设定DNS:
###方法1.更改本地解析文件:
vim /etc/hosts ##本地DNS解析文件,此文件指定一个域名与地址的静态映射
编辑此文件,添加域名与IP的一对一映射:
保存后,再ping百度的域名,我们可以看到此时就可以ping通,并且实际ping的IP地址为我们在文件中写的ip:
注意:更改本地文件使得我们ping域名时实质上ping的是我们指定的ip,若我们指定一个错误的IP,那么就很有可能ping不通,如下,将www.baidu.com对应的IP改为72.25.150.250(真机ip):
此时ping百度的域名,我们可以看到实际上在ping真机的ip:
因此更改本地文件时注意应该添加正确的映射关系
###方法2.更改DNS指向文件
vim /etc/resolv.conf ##DNS指向文件,
nameserver 114.114.114.114 ##陕西省DNS解析服务器
首先,删除上面在本地文件中的添加的内容,在文件/etc/resolv.conf
中添加DNS服务器的ip:
此时我们可以看到,ping百度的域名时,ping的ip为61.135.169.125而不是61.135.169.121
2.设定DNS解析的优先级
默认本地优先级高,即在使用ping时先查询的是/etc/hosts中的映射关系,可以改变优先级:
vim /etc/nsswitch.conf ##DNS优先级设定文件,在此文件中更改优先级
39行: files->本地解析文件 DNS->网络解析文件 ##哪个在前面哪个优先
默认files 在 dns之前,我们将dns放在files之前:
再更改DNS指向文件/etc/resolv.conf
,将里面内容全部清空,只添加:
nameserver 114.114.114.114
再ping百度的域名,可以看到此域名与之前域名都不相同:
3.静态DNS配置:
在/etc/resolv.conf文件中指定的DNS是临时的,将网卡的设备文件中的BOOTPROTO改为dhcp后,经过systemctl restart network后会将/etc/resolv.conf文件文件中的内容全部注释;
将ip获取方式改为dhcp后 ;我们可以看到此时desktop获取到的ip为1.1.1.151:
此时,查看/etc/resolv.conf文件,我们会发现此文件中会自动添加一些项目,并且原文件中的内容也会被覆盖,这是因为在dhcp方式下,网卡设备文件中的参数PEERDNS默认为yes:
那么,如何让自己设定的DNS始终存在于/etc/resolv.conf文件中:
vim /etc/sysconfig/network-scripts/ifcfg-et0(网卡的配置文件)
添加:DNS1=xxx.xxxx.xxx.xxx
DNS2=xxx.xxxx.xxx.xxx
“注意”:此种方式添加最多只能添加2个,且手动添加的DNS在自动获取的DNS下方
此时,再重启网络后,/etc/resolv.conf文件中自己指定的DNS就不会消失:
4.自动获取DNS
在上面我们就可以看到,将IP的获取方式改为DHCP后,/etc/resolv.conf文件中DNS的指向就会自动被修改,因此若想自动获取DNS,则将ip获取方式改为dhcp即可:
vim /etc/sysconfig/network-scripts/ifcfg-et0(网卡的配置文件)
BOOTPROTO=dhcp
5.如何让自己设定DNS不受dhcp的控制:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
PEERDNS=yes ##是否指定DNS,当主机设置获取IP为DHCP方式时,此项参数默认为yes,它会自动修改/etc/resolv.conf文件
##当参数设置为no,在dhcp方式下,系统不会修改/etc/resolv.conf文件
首先,vim /etc/sysconfig/network-scripts/ifcfg-eth0
将原来的DNS1删除,再添加PEERDNS=no:
重启网络,此时我们可以看到/etc/resolv.conf文件内容被重置:
再vim /etc/sysconfig/network-scripts/ifcfg-eth0 添加DNS1:
此时再重启网络,我们可以看到,在dhcp服务仍开启的情况下文件内容仍不会被更改:
此时在ping百度仍可以ping通:
3.命令的方式修改网络
nmcli ##此命令的实现依赖于NetworkManager.service,若此服务关闭,则此命令失效
如图,停止NetworkManager.service,则nmcli命令就不能使用:
nmcil device
status ##显示设备状态
disconnect 设备名 ##断开与此设备(物理网卡)连接,断开后,ifconfig此网卡无IP
connect 设备名 ##连接此设备
show 设备名 ##显示此设备的祥细信息
nmcil device disconnect 设备名 ##断开与此设备(物理网卡)连接,断开后,ifconfig此网卡无IP
nmcil connection
show ##显示当前所有连接(逻辑IP与物理网卡)
delet "NAME(连接名称)" ##删除此连接(disconnect)
add ##添加连接
type(连接类型):ethernet(以太网)
con-name(连接名称):用户指定
ifname(interface name 设备名,以实际网卡为准):eth0/1
autoconnect(自动获取ip):yes/no
若手动指定ipv4:ip4 172.25.254.139/24
"注意":当前若已经设置好设备,则应把以前的设备好的设备删除再添加,一块网卡只对一个连接生效
up 连接名称:开启此块网卡
down 连接名称:关闭此块网卡
modify
连接名称 ipv4.method auto(将静态ip改为动态获取)
“注意”:若连接名称之间有空格,例如System eth0,要用‘’
在删除后,打开图形界面,也看不到此连接:
使用add ,我们需要指定所要添加的网络的一些参数:
con-name 网络名
ifname 设备名
type 网络类型
若为静态IP,还需指定ipv4的地址
使用ifconfig。我们就可以看到对eth0的配置生效:
down 设备名
用来关闭指定的网卡设备:
up 设备名
用来开启指定的网卡设备:
将静态的IP改为dhcp自动获取,可用modify参数:
重启网络后生效:
同时,也可使用modify将dhcp方式改为静态ip获取:
1)指定IP地址:网络名称 ipv4.addresses 172.25.254.139/24
2) modify 网络名称 ipv4.method manual
“注意”:使用down & up可以只关闭或开启指定网卡,而不影响其他网卡的工作,而restart network则会重启整个网络设置