![IPv6 PPP 链路无法将路由器通告转发到本地 LAN](https://linux22.com/image/646171/IPv6%20PPP%20%E9%93%BE%E8%B7%AF%E6%97%A0%E6%B3%95%E5%B0%86%E8%B7%AF%E7%94%B1%E5%99%A8%E9%80%9A%E5%91%8A%E8%BD%AC%E5%8F%91%E5%88%B0%E6%9C%AC%E5%9C%B0%20LAN.png)
一个具有eth0
、eth1
、设备eth2
的Debian 服务器ppp0
:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
4: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
63: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
link/ppp
到处都启用转发:
/proc/sys/net/ipv6/conf ~
all/forwarding=1 default/forwarding=1
eth0/forwarding=1 eth1/forwarding=1
eth2/forwarding=1 ppp0/forwarding=1
并且 autoconf 也被激活:
/proc/sys/net/ipv6/conf ~
all/autoconf=1 default/autoconf=1
eth0/autoconf=0 eth1/autoconf=1
eth2/autoconf=1 ppp0/autoconf=1
更远类风湿关节炎(=路由器广告)在任何设备上都可以接受,但设置接受_ra=2
至少ppp0
和eth1
:
/proc/sys/net/ipv6/conf ~
all/accept_ra=1 default/accept_ra=1
eth0/accept_ra=1 eth1/accept_ra=2
eth2/accept_ra=0 lo/accept_ra=1
ppp0/accept_ra=2
PPP 连接建立成功,ipv6 ::死亡:牛肉选项设置在/etc/ppp/peer/myProvider配置文件:
63: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qlen 3
inet6 2003:42:e67f:d3ca:6105:155:f2b3:71f0/64 scope global temporary dynamic
valid_lft 14266sec preferred_lft 1666sec
inet6 2003:42:e67f:d3ca::dead:beef/64 scope global dynamic
valid_lft 14266sec preferred_lft 1666sec
inet6 fe80::dead:beef/10 scope link
valid_lft forever preferred_lft forever
并设置到提供商的链路本地地址的默认路由:
2003:42:e67f:d3ca::/64 dev ppp0 proto kernel metric 256 expires 13559sec
fe80::/64 dev ppp0 proto kernel metric 256
fe80::/10 dev ppp0 metric 1
fe80::/10 dev eth1 proto kernel metric 256
fe80::/10 dev ppp0 proto kernel metric 256
fe80::/10 dev eth0 metric 1024
default via fe80::90:1a10:1b2:b780 dev ppp0 proto kernel metric 1024 expires 1789sec
公共2003:42:e67f:d3ca::/64
前缀具有到设备的路由ppp0
。
電視安装并运行,转储文件显示ppp0
IPv6 链接发送放射学会
interface ppp0
{
AdvSendAdvert on;
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
AdvManagedFlag off;
AdvOtherConfigFlag on;
AdvReachableTime 0;
AdvRetransTimer 0;
AdvCurHopLimit 0;
AdvDefaultLifetime 1800;
AdvHomeAgentFlag off;
AdvDefaultPreference medium;
AdvLinkMTU 1492;
prefix 2003:42:e67f:d3ca::/64
{
AdvValidLifetime 14400;
AdvPreferredLifetime 1800;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
}; # End of prefix definition
}; # End of interface definition
从服务器主机我可以ping6成功从互联网上获取主机。现在当我尝试强制类风湿关节炎通过请求路由器ppp0
我得到:
Soliciting ff02::2 (ff02::2) on ppp0...
Hop limit : undefined ( 0x00)
Stateful address conf. : No
Stateful other conf. : Yes
Router preference : medium
Router lifetime : 1800 (0x00000708) seconds
Reachable time : unspecified (0x00000000)
Retransmit time : unspecified (0x00000000)
MTU : 1492 bytes (valid)
Prefix : 2003:42:e67f:d3ca::/64
Valid time : 14400 (0x00003840) seconds
Pref. time : 1800 (0x00000708) seconds
我希望所有节点都eth1
配置了 SLAAC,但是当我尝试进行请求时,eth1
我得到了:
Soliciting ff02::2 (ff02::2) on eth1...
Timed out.
Timed out.
Timed out.
No response.
- 我不想使用DHCPv6但斯坦福直线加速器通过電視
- 我想避免 bash kung fu 从提供商那里截取实际的前缀(例如:来自rdisc6 输出)来调整radvd配置文件自行提交(例如:在 if-up 事件中)
- 桥接设备不是解决方案。PPP 设备是虚拟的,无法桥接。
以某种方式转发类风湿关节炎数据包从ppp0
到eth1
(以及到任何其他设备)似乎根本不起作用。为什么?据我所知,任何带有 DSL 调制解调器的路由器都必须以某种方式转发放射学会从其内部调制解调器设备到所连接的物理 LAN 端口,否则连接在那里的任何主机都不会获得 IPv6 地址,对吗?现在路由器和我的 Debian 盒子有什么区别?如果您能提供任何提示,我将不胜感激。
答案1
路由器广告不应该被转发。因此,当您发现它们未被转发时,至少该部分工作正常。
您应该在路由器中运行自己的路由器广告守护程序,以便它向 LAN 进行广告宣传。
您应该为三个 LAN 分配三个单独的 /64 前缀。因此,您需要从 ISP 获得路由的 /62 或更短的前缀。这没有问题,因为您的 ISP 应该会为此给您一个更短的前缀(多短取决于您询问的对象,最初是 /48,但有些人只会给出 /56)。
如果 ppp 链路上有可用的 DHCPv6 服务器,那么您可以发送 DHCPv6 请求,要求将前缀委托给您。否则,您可能不得不实际与某人交谈。
答案2
此类 IP 设置的结构通常为:
- 您通过 ppp0 收到 RA,因此您的系统会获得默认路由和可选的前缀
- 您在系统上运行 DHCPv6-PD 客户端,以向 ISP 请求可路由前缀
- 使用该前缀中的 /64 来编号其他接口
- 您使用 radvd 将 RA 发送到本地接口,以便让其他系统知道您的 ipv6 网络是如何配置的
- 你不需要向 ppp0 发送 RA,因为你不是你的 ISP 的路由器,他们那边才是你的路由器