
Я ищу ответ уже несколько дней, и любая конфигурация подойдет мне, чтобы настроить работу сети.
У меня CentOS 7 (10.120.0.57) с установленным KVM на нем. Я создал простую гостевую (10.120.0.58) vm с CentOS7, но у меня возникли некоторые проблемы с сетью на гостевой машине. Хост может получить доступ к интернету и может пинговать гостевую машину. Гость также может пинговать хост, но когда он пингует какой-то другой IP, то получает:Место назначения недостижимо. Я заранее отключил firewalld и 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
Но, конечно, пинг работает, когда я пингую Гостя (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
Поскольку вы соединили физическое устройство вашего хоста с виртуальной машиной (я полагаю, vnet0
и/или 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 -->
- Отключите службу NetworkManager на Centos 7, на котором запущен KVM, и включите старую службу «Сеть».
- Определите свой GATEWAY в /etc/sysconfig/network и внесите все необходимые изменения в /etc/sysconfig/network-scripts/ifcfg-eth0 (или аналогичном). Установите IPADDR, NETMASK и т. д.
- Измените драйвер виртуальной сети (через virt-manager) для гостевых машин.Установите его на «e1000»
В гостях -->
- Сделайте то же самое. Отключите NetworkManager и включите сетевую службу.
- Это изменение может повлиять на имя сетевого интерфейса, поэтому проверьте новое имя с помощью команды #cat /proc/net/dev (гости centos)
Вышеуказанное работает для меня. Я потратил больше недели, чтобы найти решение.