在橋接模式下為 KVM 來賓分配 ipv6 地址
系統: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 可以。
更新:
- 如果我將訪客的網關更改為 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/中編寫了分步指南