解决KVM虚拟机不能连外网的问题
症状主机和虚拟机之间互相能ping通主机能ping通外网虚拟机不能ping通外网解决方法依次尝试下面的步骤:1. 设置IP转发vim /etc/sysctl.conf末行添加: net.ipv4.ip_forward=1,然后执行sysctl -p2. 打开防火墙sudo systemctl start firewalld防火墙关了,路由表就没有了,不能进行IP转发。可以在防火墙开关前后分别查看路
症状
主机和虚拟机之间互相能ping通
主机能ping通外网
虚拟机不能ping通外网
解决方法
依次尝试下面的步骤:
1. 设置IP转发
vim /etc/sysctl.conf
末行添加: net.ipv4.ip_forward=1,然后执行
sysctl -p
2. 打开防火墙
sudo systemctl start firewalld
防火墙关了,路由表就没有了,不能进行IP转发。
可以在防火墙开关前后分别查看路由表,看看结果如何:
iptables -t nat -vL # 查看路由表
防火墙与路由表的关系:
Linux 自带的防火墙是什么呢?网上很多都是把linux防火墙解释为iptables,这样的解释不能说是不对,但是不全,具体的说,Linux自带的防火墙应该是一套系统自带的iptables 策略,通过系统自带的防火墙,我们可以在图形界面下,配置iptables策略,默认的已经有了很多策略,而这些策略可能会在我们配置系统服务的时候产生干扰,所以通常情况下不建议关闭系统自带的防火墙。上面我也说了,系统自带的防火墙只是一些iptables策略,我们只是不想用系统子自带的这些策略。我们可以通过手动的方式添加,我们需要的策略,这样是比较好了,因为对于这些我们手动添加的策略,我们了解他。
在启用和关闭系统自带的防火墙时有些要注意的,假如你的系统中已经手动配置过iptables,那在你启用系统自带防火墙式一定要备份一下,这些策略,否则会丢失现有策略,后果很严重。
大家都知道,使用iptables -F 可以清除所有的策略,所以,如果你是在启用系统自带防火墙的状态下,使用的这条命令,策略是会被清掉,你也可以加,运行也没问题。这个时侯假如你突然想关闭系统自带的防火墙,那要提醒一下,你先保存一下策略,否则你会后悔的。
转载自:https://blog.51cto.com/nameyjj/486963
3. 重新建立网桥
(1) 首先获取默认的配置文件
virsh net-dump default # default 是默认网卡的名字
会获得类似这样的结果
<network>
<name>default</name>
<uuid>1897fb56-1c5f-4124-bd91-e326f7cbcd04</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:8b:0e:53'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
(2) 把上面的network.name修改了,再把network.bridge.name修改了,不要跟之前的重复,将新文件保存为/usr/share/libvirt/networks/new.xml
(3) 然后使用下面的命令新建网桥:
virsh net-define /usr/share/libvirt/networks/new.xml
virsh net-autostart default # default要改成新的network.name
virsh net-start default
(4) 打开virt-manager(虚拟机管理器)将虚拟机的网卡改成新网卡,也可以用virsh edit命令修改。
更多推荐

所有评论(0)