
私は数日間答えを探していますが、ネットワークを動作させるにはどのような構成でも適切です。
CentOS 7(10.120.0.57) に KVM をインストールしました。シンプルなゲスト (10.120.0.58) VM を CentOS7 でも使用していますが、ゲストのネットワークに問題があります。ホストはインターネットにアクセスでき、ゲスト マシンに ping できます。ゲストもホストに ping できますが、他の IP に ping すると次のようになります:目的地に到達できません問題を解消するために、両方のマシンで事前にfirewalldとselinuxを無効にしました。
/etc/sysctl.conf を設定したので、ホスト ブリッジはトラフィックを通過できるはずです (!!!)
net.ipv4.ip_forward = 1
net.ipv4.conf.all.proxy_arp = 1
ホストでtcpダンプゲストからのICMPパケットは確認できますが、ネットワークの実際のゲートウェイにpingを実行しようとすると、一方向のリクエスト(応答なし)のみになります(10.120.0.1)
IP 10.120.0.58 > gateway: ICMP echo request, id 3716, seq 1, length 64
IP 10.120.0.58 > gateway: ICMP echo request, id 3716, seq 2, length 64
ゲスト(例:google.com)からpingすると(ホストからのtcpdump):
IP localhost.localdomain > 10.120.0.58: ICMP localhost.localdomain udp port domain unreachable, length 64
IP localhost.localdomain > 10.120.0.58: ICMP localhost.localdomain udp port domain unreachable, length 64
しかし、もちろん、ゲストにpingするとpingは機能します(10.120.0.58)<=> ホスト(10.120.0.57):
10.120.0.58 > localhost.localdomain: ICMP echo request, id 3719, seq 8, length 64
localhost.localdomain > 10.120.0.58: ICMP echo reply, id 3719, seq 8, length 64
私のホスト/ゲスト構成の何が問題なのか教えていただけますか?
ホスト: ifconfig -a:
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.120.0.57 netmask 255.255.255.0 broadcast 10.120.0.255
inet6 fe80::20c:29ff:fed5:14fa prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d5:14:fa txqueuelen 1000 (Ethernet)
RX packets 74849 bytes 6444652 (6.1 MiB)
RX errors 0 dropped 100 overruns 0 frame 0
TX packets 1033 bytes 88046 (85.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno16780032: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet6 fe80::20c:29ff:fed5:14fa prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d5:14:fa txqueuelen 1000 (Ethernet)
RX packets 2975 bytes 239252 (233.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 164 bytes 23286 (22.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 6 bytes 644 (644.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6 bytes 644 (644.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:9f:de:66 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0-nic: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:9f:de:66 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether fe:54:00:7f:c5:c5 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 5885 overruns 0 carrier 0 collisions 0
vnet1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether fe:54:00:b0:3d:40 txqueuelen 1000 (Ethernet)
RX packets 420 bytes 34697 (33.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 111762 bytes 9374955 (8.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
br0 構成:
DEVICE=br0
BOOTPROTO=static
TYPE=Bridge
ONBOOT=yes
IPADDR="10.120.0.57"
NETMASK="255.255.255.0"
#GATEWAY="10.120.0.1"
#DNS1="10.120.0.1"
#DNS2="8.8.8.8"
STP=yes
DELAY=0
NM_CONTROLLED=no
eno16780032 構成:
TYPE="Ethernet"
#NAME="eno16780032"
#UUID="4fc9740c-536a-4330-aab4-bdef7489582f"
DEVICE="eno16780032"
ONBOOT="yes"
NM_CONTROLLED=no
BRIDGE=br0
橋:
bridge name bridge id STP enabled interfaces
br0 8000.000c29d514fa yes eno16780032
vnet0
vnet1
virbr0 8000.5254009fde66 yes virbr0-nic
ホスト /etc/sysconfig/network:
# Created by anaconda
NETWORKING=yes
GATEWAY=10.120.0.1
ゲスト eth0 構成:
DEVICE=eth0
NAME=eth0
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
IPADDR="10.120.0.58"
NETMASK="255.255.255.0"
GATEWAY="10.120.0.57" (!?)
DNS1="10.120.0.57"
DNS2="8.8.8.8"
ご覧頂きありがとうございます。
編集
ホストからの iptables の結果を追加します。
[root@localhost ~]# iptables -L -v -n -t nat
Chain PREROUTING (policy ACCEPT 59 packets, 4981 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 34 packets, 3619 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 2 packets, 103 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 2 packets, 103 bytes)
pkts bytes target prot opt in out source destination
ゲストからの Iptables:
[root@localhost ~]# iptables -L -v -n -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
ゲストからのトレースパス(10.120.0.58) を 8.8.8.8 に変更します:
1?: [LOCALHOST] pmtu 1500
1: 10.120.0.58 3012.516ms !H
Resume: pmtu 1500
編集2
私は追加しますiptables -L -v -n結果。ホストより:
[root@localhost ~]# iptables -L -v -n
Chain INPUT (policy ACCEPT 162K packets, 17M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 8 packets, 476 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3894 packets, 309K bytes)
pkts bytes target prot opt in out source destination
ゲストより:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
答え1
ホストの物理デバイスを仮想マシンにブリッジしているので(VMに使用されているデバイスだvnet0
と思います)、 VM内のネットワークに物理的にアクセスできます。 したがって、vnet1
10.120.0.0/24
GATEWAY="10.120.0.57" (!?)
DNS1="10.120.0.57"
による
GATEWAY="110.120.0.1"
DNS1="10.120.0.1"
答え2
私もまったく同じ問題を抱えています。Virtio ネットワーク ドライバーのバグのようです。この問題を解決するために、次の変更を行いました。
Centos 7 - KVM -->
- KVM を実行している Centos 7 で NetworkManager サービスを無効にし、古い「ネットワーク」サービスを有効にします。
- /etc/sysconfig/network で GATEWAY を定義し、/etc/sysconfig/network-scripts/ifcfg-eth0 (または同様のもの) で必要な変更をすべて行います。IPADDR、NETMASK などを設定します。
- ゲスト マシンの仮想ネットワーク ドライバー (virt-manager 経由) を変更します。「e1000」に設定する
ゲストについて -->
- まったく同じ操作を行います。NetworkManager を無効にし、ネットワーク サービスを有効にします。
- この変更はネットワークインターフェース名に影響する可能性があるため、#cat /proc/net/dev (centos guest) コマンドを使用して新しい名前を確認してください。
上記の方法は私にとっては有効です。解決策を見つけるのに 1 週間以上かかりました。