网络接口 up 顺序、ipv6 隧道问题

网络接口 up 顺序、ipv6 隧道问题

我有一个 ipv6 隧道接口,它使用 eth0 上的网络连接。当我打开系统时,有些东西搞砸了,而且我没有 ipv6 连接。

系统是Ubuntu 14.04服务器

这就是发生的事情:

  • 启动
  • eth0上去,然后搜索DHCP(不是我可以控制的参数,亚马逊使用DHCP)
  • ipv6 接口已启动,但无法正确设置隧道,因为 eth0 未完全启动(我想)。
  • eth0 没有分配 ipv6 地址并且找不到 ipv6 路由
  • nginx 搜索为第一个站点分配 ipv6 地址并失败,退出。

所以我必须登录,删除所有路由并按正确的顺序调出接口:

  • eth0
  • ifup he-ipv6
  • 重启nginx服务

这是我的 /network/interfaces 文件

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
    address 2001:470:1f0a:******
    netmask 64
    endpoint 216.66.*****
    local 172.********
    up ip -6 route add default dev he-ipv6
    down ip -6 route del default dev he-ipv6
    post-up ifconfig eth0 inet6 add 2001:470:*******

如何配置系统以实现 ipv6 连接而无需手动干预?

先感谢您!

答案1

正确的做法是使 he-ipv6 接口依赖于工作的 eth0 接口。不幸的是,您无法在interfaces文件中表达此类依赖关系。

一个简单的技巧可能是在节pre-up sleep 5中添加一行或类似的内容he-ipv6。它有点难看,但通常应该可以工作,具体取决于 DHCP 客户端完成其工作所需的时间。或者,您可以编写一个工具来监视 netlink,并且仅在存在有效的 v4 路由时返回,然后从pre-up.这会更可靠一点,但你需要做更多的工作。

相关内容