总结
ip -6 route replace 2001:db8:123:456:fff:dead:beef:cafe/128 via fd00:5151::1
给了我错误:
Error: Gateway can not be a local address.
为什么不允许在路由中使用本地地址作为网关?如何修复该问题以便2001:db8:123:456:fff:dead:beef:cafe
通过 到达fd00:5151::1
?
文本
我想为单个虚拟机分配一个静态全局单播 IPv6 地址。虚拟机fd:5151::1
的网关为。我的 ISP 给了我:2001:db8:123:456::/64
现在静态 IP 应该是:2001:db8:123:456:fff:dead:beef:cafe
。
主机现在应该将该 IP 的所有传入包直接重定向到 VM。如果我尝试使用该命令从主机 ping 该 IP,则一切正常。
$ ping 2001:db8:123:456:fff:dead:beef:cafe
64 bytes from 2001:db8:123:456:fff:dead:beef:cafe: icmp_seq=1 ttl=64 time=0.453 ms
VM 中也分配了 Ip ip addr
。
inet6 fd00:5151::d8c:7603/128 scope global dynamic noprefixroute
valid_lft 84146sec preferred_lft 84146sec
inet6 2001:db8:123:456:fff:dead:beef:cafe/128 scope global
valid_lft forever preferred_lft forever
但如果我尝试从客户端(例如 Windows PC) ping 该 IP,连接就会失败。
ping 2001:db8:123:456:fff:dead:beef:cafe
Destination Port Unreachable
主机在接口上eno1
正确接收来自 Windows PC 的传入 ping。我用 进行了检查tcpdump -i eno1 host 2001:db8:123:456:fff:dead:beef:cafe
。但它没有重定向它。
为了修复这个问题,我尝试使用ip -6 route replace 2001:db8:123:456:fff:dead:beef:cafe/128 via fd00:5151::1
但是 Linux 给了我错误:
Error: Gateway can not be a local address.
现在我不明白为什么不允许在路由中使用本地地址作为网关?如何解决这个问题,以便可以从互联网访问虚拟机?
答案1
由于虚拟化软件和网络位于同一台机器上,导致了这个问题。
我需要将条目设置为虚拟机的网络,然后一切就正常了。
<ip family='ipv6' address='2001:db8:123:456:fff:dead:beef:cafe' prefix='128'></ip>