Networking

在橋接模式下為 KVM 來賓分配 ipv6 地址

  • September 11, 2015

系統:CentOS 6.5

網路:br0 上的網橋

IPv6:ISP 本機 /64 塊。

IPv4:ISP 地址(不是內部 LAN)

目的:僅將 IPv6 分配給來賓(手動),我不希望將 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

如果配置:

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     
...

ip6tables -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 

來賓:

作業系統: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)

行為:

在主機上,我可以 ping 客人的 ipv6 地址,vise-vesa。

我無法從訪客 ping 任何其他 ipv6 地址,包括 google dns 2001:4860:4860::8888/8844。(時間到)

我無法從任何未分配的 ISP ipv6 地址 ping 到訪客。(時間到)

從主機到外部的 ping6 可以。


更新:

  1. 如果我將訪客的網關更改為 2607:beef:be:bff:ff:ff:ff:ff (主機的網關),訪客會抱怨“沒有到主機的路由”。即使我將靜態路由資訊(route6-eth0)添加到來賓,它仍然無法連接。

誰能幫我弄清楚發生了什麼?謝謝。

所以有了馬克的通知,我會回答我自己的問題。

主機設置:

在我的範例中,將 IPv6 子塊分配給您的虛擬網橋:

添加

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

/etc/libvirt/qemu/networks/default.xml,使用virsh銷毀並重建 virbr0 設備,在我的例子中,它生成了一個 virbr1 設備。

添加 ip6tables 規則:

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

ip6tables -A FORWARD -i br0 -j ACCEPT

在虛擬機方面:

將選定的 IPv6 地址添加到您的配置文件中:

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

重新啟動虛擬機的網路介面,它就可以工作了。

我猜這是因為虛擬機通過主機上的 virbr1 介面與外界連接。主機上的網關是 br0。使用 ip6tables 規則,一切都會解決。

我在我的部落格https://luxing.im/adding-ipv6-support-for-kvm-vms/中編寫了分步指南

引用自:https://serverfault.com/questions/563700