kvm 게스트는 호스트 외부에 연결할 수 없으며 그 반대의 경우도 마찬가지입니다.

kvm 게스트는 호스트 외부에 연결할 수 없으며 그 반대의 경우도 마찬가지입니다.

네트워크 브리지가 있고 인터넷에 대한 전체 액세스 권한이 있는 우분투 12.04 서버(이름=vmhost)를 실행하는 vmware vm이 있습니다.

이 vmhost는 kvm 하이퍼바이저를 사용하고 있으며 vm(centOS 6.4), 네트워크 브리지도 실행 중입니다.

vmhost는 인터넷에 액세스할 수 있고 해당 vm에도 액세스할 수 있으며, vm은 vmhost에 액세스할 수 있습니다. VM은 인터넷에 액세스할 수 없으며 내 서브넷의 다른 PC에서 ping/ssh를 실행할 수도 없습니다.

vmhost/its vm에 대한 브리지가 있고 iptables/routes를 확인했지만 아무것도 찾지 못했습니다. 또한 ip_forwarding이 있습니다. tcpdump를 실행하면 vmhost가 패키지를 볼 수 있지만 아무 작업도 수행하지 않는 것을 볼 수 있습니다. ufw를 비활성화하려고 시도했지만 도움이 되지 않았습니다.

VHMOST 경로에 대한 정보:

커널 IP 라우팅 테이블

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    100    0        0 virbr0
192.168.0.0     *               255.255.255.0   U     0      0        0 virbr0

The vmhouste Iptables -l
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps

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

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination



Interface file:
auto lo
iface lo inet loopback

auto virbr0
iface virbr0 inet static
        address 192.168.0.21
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
    dns-nameservers 192.168.0.1
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off

Brctl show:
bridge name bridge id       STP enabled interfaces
virbr0      8000.000c29f8f8e4   yes     eth0 vnet1
vnet0       8000.000000000000   no   




 THE VM 
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host 
   valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 02:00:c0:a8:00:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.32/24 brd 192.168.0.255 scope global eth0
inet6 fe80::c0ff:fea8:20/64 scope link 
   valid_lft forever preferred_lft forever


ip route
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.32 
default via 192.168.0.1 dev eth0 

곧 tcpdump 결과를 게시하겠습니다.

vmhost를 vm 호스트로 사용하여 opennebula를 실행하고 있다는 점도 언급할 가치가 있지만 이것이 문제라고 생각하지 않습니다.

답변1

나는 이 문제를 여러 번 겪었고 내가 찾은 가장 좋은 해결책은 다음을 편집한 것입니다 /etc/sysctl.conf.

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

그런 다음 다음을 실행하십시오.

sudo sysctl -p

나는 (인터넷을 통해) conf 파일을 만드는 것이 더 낫다고 들었지만 /etc/sysctl.d/거기에 무엇을 넣었든 항상 실행해야 하는 것 같습니다 sysctl -p. 어떤 문제가 있을 수 있다고 생각 tuned하지만 너무 깊이 조사하지는 않았습니다.

sysctl -p재부팅 시 실행을 방해하는 크론 작업을 설정할 수 있습니다 .

@reboot      sleep 15; sysctl -p

방탄은 아니지만 제가 사용해 본 대부분의 시스템에서 작동합니다.

답변2

라우터가 DHCP를 사용하여 각각의 별도 IP 주소를 할당하도록 NAT에서 모든 가상 머신의 브리징을 해제할 수 있습니다. 또는 각각의 가상 머신을 NAT에 브리지한 상태로 유지하고 각 머신에 대해 "물리적 연결 상태 복제"를 확인해보세요. 직관적으로 이들 중 하나는 가상 머신에 대해 일관되고 상호 가시적인 환경을 제공해야 하는 것 같습니다.

관련 정보