你好,我正在尝试在公共 IPv6 地址上启动虚拟机。
当我net.ipv6.conf.all.forwarding = 1
在主机上启用它时,它似乎会终止 ipv6 连接
root@li166-218:~# ip -6 route show dev eth0
2600:3c01::/64 proto kernel metric 256 expires 2591994sec
fe80::/64 proto kernel metric 256
default via fe80::1 proto ra metric 1024 expires 84sec
root@li166-218:~# traceroute -6 google.com
traceroute to google.com (2607:f8b0:4010:801::1000), 30 hops max, 80 byte packets
1 2600:3c01::8678:acff:fe0d:79c1 (2600:3c01::8678:acff:fe0d:79c1) 0.860 ms 0.915 ms 1.005 ms
2 10gigabitethernet8-2.core3.fmt2.he.net (2001:470:1:3b8::1) 10.615 ms 10.608 ms 7.144 ms
3 10ge5-4.core1.pao1.he.net (2001:470:0:263::2) 6.539 ms 6.601 ms 6.653 ms
4 google-as15169.10gigabitethernet8-2.core1.pao1.he.net (2001:470:0:244::2) 0.937 ms 0.905 ms 0.882 ms
5 2001:4860::1:0:21 (2001:4860::1:0:21) 9.843 ms 9.812 ms 9.740 ms
6 2001:4860:0:1::3d5 (2001:4860:0:1::3d5) 1.974 ms 1.712 ms 1.979 ms
7 2607:f8b0:8000:24::2 (2607:f8b0:8000:24::2) 1.575 ms 2607:f8b0:8000:24::7 (2607:f8b0:8000:24::7) 1.637 ms 2607:f8b0:8000:24::1 (2607:f8b0:8000:24::1) 1.684 ms
root@li166-218:~# sysctl net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.forwarding = 1
root@li166-218:~# traceroute -6 google.com
traceroute to google.com (2607:f8b0:4010:801::1000), 30 hops max, 80 byte packets
connect: Network is unreachable
当net.ipv6.conf.all.forwarding = 1
我可以从客户虚拟机 ping 主机时。但是主机不再具有公共 ipv6 连接。
答案1
启用 IPv6 转发将禁用 IPv6 自动配置。通常您希望路由器(转发设备)具有静态地址。
这记录在Linux IPv6 指南。
以下是相关部分:
转发
类型:BOOLEAN
默认值:如果全局转发被禁用(默认),则为 FALSE,否则为 TRUE
配置特定接口的主机/路由器行为。
注意:建议在所有接口上采用相同的设置;混合路由器/主机场景并不常见。
值 FALSE:默认情况下,假定主机行为。这意味着:
- 邻居广告中未设置 IsRouter 标志。
- 在必要时发送路由器请求。
- 如果 accept_ra 为 TRUE(默认),则接受路由器通告(并进行自动配置)。
- 如果 accept_redirects 为 TRUE(默认),则接受重定向。
值 TRUE:如果启用了本地转发,则假定为路由器行为。这意味着与上面的情况完全相反:
- IsRouter 标志在邻居广告中设置。
- 路由器请求未发送。
- 路由器通告被忽略。
- 重定向将被忽略。
通过将转发设置为 TRUE,您的机器将像路由器一样运行。您需要强制它接受路由器通告 (RA),或者您需要手动配置您的地址和路由。
要在使用转发时启用 autoconf,请使用以下命令:
accept_ra
类型:BOOLEAN
接受路由器通告;使用它们进行自动配置。
可能的值包括:
- 0:不接受路由器通告。
- 1:如果转发被禁用,则接受路由器通告。
- 2:否决转发行为。即使启用了转发,也接受路由器通告。
是的,它是一个布尔值,值为 0、1 和 2:)
答案2
启用转发将清除默认路由。您可以使用以下命令将其重新添加:
ip -6 route add default via <ipv6 gateway address> dev <interface>
一旦添加,IPv6 连接应该就可以再次正常使用了。
就我而言,我必须通过在我的电缆调制解调器中四处窥探来找到网关地址http://192.168.100.1
。