症状

主机和虚拟机之间互相能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命令修改。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐