KVM 虚拟化疑点


1、今天登陆 KVM 服务器 ,忽然看到 iptables 规则多了好些。

[root@my-localhost ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  tcp  --  192.168.122.0/24    !192.168.122.0/24    masq ports: 1024-65535
MASQUERADE  udp  --  192.168.122.0/24    !192.168.122.0/24    masq ports: 1024-65535
MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@my-localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:67
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24    state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

2、除了默认规则 ,全部是自己多出来的 ,之前也没发现 ...

3、查找相关资料发现这些规则都是 libvirtd 这个服务启动时为了确保虚拟内网能访问外网所添加

## libvirtd 是 libvirt 的守护进程 , 服务停止 规则消失 , 服务启动 规则出现

[root@my-localhost ~]# ls /etc/libvirt/  # 这是配置文件所在位置
libvirt.conf  libvirtd.conf  lxc.conf  nwfilter  qemu  qemu.conf  storage

[root@my-localhost ~]# service libvirtd status
libvirtd (pid  2220) 正在运行...

## 可以看到 libvirtd 守护进程正在运行 ,但是你会发现找不到它

[root@my-localhost ~]# netstat -anpt | grep libvirtd

## 这是因为默认情况下 ,libvirtd 监听在一个本地的 Unix domain socket 上 ,并没有监听基于网络的 TCP/IP socket。

[root@my-localhost ~]# netstat -anp | grep libvirtd
unix  2      [ ACC ]     STREAM     LISTENING     16543  2220/libvirtd       /var/run/libvirt/libvirt-sock
unix  2      [ ACC ]     STREAM     LISTENING     16545  2220/libvirtd       /var/run/libvirt/libvirt-sock-ro

## 这回可以看到它的真面目了 ,可以通过下面的方法将监听方式改为 TCP

[root@my-localhost ~]# vim /etc/libvirt/libvirtd.conf

listen_tls = 0     # 原为 #listen_tls = 0

listen_tcp = 1     # 原为 #listen_tcp = 1

auth_tcp = "none"  # 原为 #auth_tcp = "sasl"

[root@my-localhost ~]# vim /etc/sysconfig/libvirtd

LIBVIRTD_ARGS="--listen"  # 原为 #LIBVIRTD_ARGS="--listen"

[root@my-localhost ~]# service libvirtd restart
正在关闭 libvirtd 守护进程:                               [确定]
启动 libvirtd 守护进程:                                   [确定]

[root@my-localhost ~]# netstat -anpt | grep libvirtd
tcp        0      0 0.0.0.0:16509               0.0.0.0:*                   LISTEN      3278/libvirtd
tcp        0      0 :::16509                    :::*                        LISTEN      3278/libvirtd

## 现在可以看到监听 TCP 16509 端口


你可能感兴趣的:(Accumulation,kvm,libvirtd)