系統: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/network-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)新增至Guest,它仍然無法連接。
誰能幫我弄清楚發生了什麼事嗎?謝謝。
答案1
因此,根據馬克的通知,我將回答我自己的問題。
主機設定:
將 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/
答案2
您的訪客中的網關錯誤。
由於您橋接了網路連接,因此虛擬機器就像與主機位於同一子網路 (LAN) 上一樣。因此它需要使用與主機相同的網關位址。