
며칠 동안 답을 찾고 있는데 네트워킹이 작동하도록 설정하는 데 어떤 구성이든지 적합합니다.
나는 CentOS 7(10.120.0.57) KVM이 설치되어 있습니다. 간단한 게스트를 만들었습니다(10.120.0.58) CentOS7에도 VM이 있지만 게스트의 네트워크에 문제가 있습니다. 호스트는 인터넷에 액세스할 수 있으며 게스트 시스템에 ping을 보낼 수 있습니다. 게스트는 호스트에도 ping을 수행할 수 있지만 다른 IP에 ping을 수행하면 다음과 같은 결과가 나타납니다.목적지에 도달할 수 없음. 문제를 제거하기 위해 두 시스템 모두에서 방화벽과 selinux를 미리 비활성화했습니다.
/etc/sysctl.conf(!!!)를 설정했기 때문에 내 호스트 브리지가 트래픽을 전달해야 합니다.
net.ipv4.ip_forward = 1
net.ipv4.conf.all.proxy_arp = 1
호스트에서tcpdump게스트의 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)로부터 핑을 보내는 경우(호스트에서 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
하지만 물론 Guest(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
게스트의 Tracepath(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) 명령을 사용하여 새 이름을 확인하세요.
위의 작업은 나를 위해 작동합니다. 해결책을 찾는 데 일주일 이상이 걸렸습니다.