브리지 모드에서 KVM 게스트에 ipv6 주소 할당

브리지 모드에서 KVM 게스트에 ipv6 주소 할당

시스템: CentOS 6.5

네트워크: br0의 브리지

IPv6: ISP 기본 /64 블록.

IPv4: ISP 주소(내부 LAN 아님)

목적: 게스트에게만 (수동으로) IPv6를 할당하려면 게스트 OS에 IPv4 주소가 할당되는 것을 원하지 않습니다.


호스트에서:

/etc/sysctl.conf:

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1 
net.ipv6.conf.br0.forwarding = 1
net.ipv6.conf.default.forwarding = 1

brctl 쇼

bridge name     bridge id               STP enabled     interfaces
br0             8000.e840f2ecdfed       no              eth0
                                                        vnet0
virbr0          8000.52540051ef3c       yes             virbr0-nic

ifconfig:

br0       Link encap:Ethernet  HWaddr E8:40:F2:EC:DF:ED  
      inet addr:xxx.xxx.xxx.xxx  Bcast:xxx.xxx.xxx.255  Mask:255.255.255.0
      inet6 addr: 2607:beef:be:beef::1/64 Scope:Global
      inet6 addr: fe80::ea40:f2ff:feec:dfed/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:365707 errors:0 dropped:0 overruns:0 frame:0
      TX packets:470458 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:28867567 (27.5 MiB)  TX bytes:574512176 (547.8 MiB)

eth0      Link encap:Ethernet  HWaddr E8:40:F2:EC:DF:ED  
      inet6 addr: fe80::ea40:f2ff:feec:dfed/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:392675 errors:0 dropped:0 overruns:0 frame:0
      TX packets:608319 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:46359514 (44.2 MiB)  TX bytes:586262036 (559.1 MiB)
      Interrupt:20 Memory:fe500000-fe520000 

/etc/sysconfig/networt-scripts/ifcfg-br0:

DEVICE=br0
BOOTPROTO=static
IPADDR=xxx.xxx.xxx.xxx
NETMASK=255.255.255.0
ONBOOT=yes
GATEWAY=xxx.xxx.xxx.xxx
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=2607:beef:be:beef::1/64
TYPE=Bridge
DELAY=0

고양이 /etc/sysconfig/network-scripts/route6-br0

2607:beef:be:bff:ff:ff:ff:ff dev br0
default via 2607:beef:be:bff:ff:ff:ff:ff

경로 -A inet6 -n

Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
2607:beef:be:beef::/64                       ::                                      U     256    0        0 br0     
2607:beef:be:bff:ff:ff:ff:ff/128            ::                                      U     1024   1        0 br0     
fe80::/64                                   ::                                      U     256    0        0 virbr0  
fe80::/64                                   ::                                      U     256    0        0 vnet0   
fe80::/64                                   ::                                      U     256    0        0 br0     
fe80::/64                                   ::                                      U     256    0        0 eth0    
::/0                                        2607:beef:be:bff:ff:ff:ff:ff            UG    1024   20281       4 br0     
::1/128                                     ::                                      U     0      1        1 lo      
2607:beef:be:beef::/128                      ::                                      U     0      0        1 lo      
2607:beef:be:beef::1/128                     ::                                      U     0      36128       1 lo     
...

IP6테이블 -S:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p ipv6-icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited 
-A FORWARD -s 2607:beef:be:beef::/64 -i br0 -j ACCEPT 

손님:

OS: CentOS 6.5 최소

네트워크: 수동

고양이 /etc/sysconfig/network-scripts/ifcfg-eth0:

ONBOOT=yes
NM_CONTROLLED=no
IPV6INIT=yes
IPV6ADDR=2607:beef:be:beef::2/64
IPV6_DEFAULTGW=2607:beef:be:beef::1 (The host's ipv6 address)

행동:

호스트에서는 게스트의 ipv6 주소인 vise-vesa로 핑을 보낼 수 있습니다.

Google DNS 2001:4860:4860::8888/8844를 포함하여 게스트로부터 다른 ipv6 주소를 핑할 수 없습니다. (시간 초과)

할당되지 않은 ISP ipv6 주소에서 게스트로 ping을 보낼 수 없습니다. (시간 초과)

호스트에서 외부로의 ping6은 괜찮습니다.


업데이트:

  1. 게스트 게이트웨이를 2607:beef:be:bff:ff:ff:ff:ff(호스트 게이트웨이)로 변경하면 게스트가 "호스트에 대한 경로가 없습니다"라고 불평합니다. 게스트에 고정 경로 정보(route6-eth0)를 추가했는데도 여전히 연결되지 않습니다.

무슨 일이 일어나고 있는지 알아내는 데 도움을 줄 수 있는 사람이 있나요? 감사해요.

답변1

그래서 마크의 공지를 통해 제가 직접 질문에 답해드리겠습니다.

호스트 설정:

내 예에서는 IPv6 하위 블록을 가상 브리지에 할당합니다.

추가하다

<ip family='ipv6' address='2607:beef:be:beef:1::' prefix='96'>

/etc/libvirt/qemu/networks/default.xml을 수행 하려면 virshvirbr0 장치를 파괴하고 다시 빌드하십시오. 제 경우에는 virbr1 장치가 생성되었습니다.

ip6tables 규칙을 추가합니다:

ip6tables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT

ip6tables -A FORWARD -i br0 -j ACCEPT

VM 측에서:

선택한 IPv6 주소를 구성 파일에 추가합니다.

IPV6INIT=yes
IPV6ADDR=2607:beef:be:beef:1::253:8/128

VM의 네트워크 인터페이스를 다시 시작하면 제대로 작동합니다.

VM이 호스트의 virbr1 인터페이스를 통해 외부 세계와 연결되기 때문인 것 같습니다. 호스트의 게이트웨이는 br0입니다. ip6tables 규칙을 사용하면 모든 것이 정리됩니다.

내 블로그에 단계별 가이드를 정리했습니다.https://luxing.im/adding-ipv6-support-for-kvm-vms/

답변2

손님의 게이트웨이가 잘못되었습니다.

네트워크 연결을 브리지했으므로 VM이 호스트와 동일한 서브넷(LAN)에 있는 것과 같습니다. 따라서 호스트와 동일한 게이트웨이 주소를 사용해야 합니다.

관련 정보