NetBSD IPv6环境建立

参考http://www.netbsd.org/docs/network/ipv6/

我的NetBSD机器信息如下:

netbsd-cook# uname -a
NetBSD netbsd-cook.com 6.1.2 NetBSD 6.1.2 (MYKERNEL) #0: Sat Jan  4 21:18:44 CST 2014  root@netbsd-cook.com:/usr/src/sys/arch/i386/compile/MYKERNEL i386

1. 设置为自动配置主机,也就是通过本地的Router来自动配置

    修改/etc/rc.conf,添加或修改如下语句

    ip6mode="autohost"
    ifconfig_{IFNAME}_ipv6="inet6 accept_rtadv"


2. 简单设置NetBSD作为路由器

     1)修改/etc/rc.conf,添加如下语句

     ip6mode="router"
     rtsol="NO"
     rtadvd="YES"            rtadvd_flags="wm0 wm1"  # wm0, wm1是我NetBSD电脑两个网卡的名字

    2)修改/etc/sysctrl.conf,添加如下语句

     net.inet6.ip6.forwarding=1

   3)根据电脑实际网卡的名字,修改/etc/ifconfig.{IFNAME}

    对于我的电脑,我需要修改/etc/ifconfig.wm0, /etc/ifconfig.wm1

    在这两个文件中可以设置ip地址等相关信息,例如我在ifconfig.wm0和ifconfig.wm1中设置了IPv6地址:

     inet6 2001:0db8:ffff:0001::e prefixlen 64     # wm0

     inet6 2001:0db8:ffff:0002::e prefixlen 64     # wm1

   4)修改/etc/rtadvd.conf,添加如下语句

    wm0:\
        :addr="2001:0db8:ffff:0001::":prefixlen#64:
    wm1:\
        :addr="2001:0db8:ffff:0002::":prefixlen#64:

   5)根据实际情况添加路由规则
     NetBSD添加一条IPv6路由的命令一般格式如下

      route add -inet6 <Destination Network> <NextHot>%<IFNAME> -ifp <IFNAME>


3. 设置NetBSD网卡IPv6地址高4字节为2001:db8的问题

     在公司内部IPv6的的测试中,把FreeBSD和NetBSD与Cisco的路由器两个端口相连,地址分配如下:

    


    因为FreeBSD和NetBSD都是设置的通过router获得IPv6地址,所以FreeBSD和NetBSD在收到Cisco Router发送的RA包后,会设置自己的IPv6地址和默认路由。

    按理说,FreeBSD和NetBSD是可以ping通的,但实际情况却相反。

    使用netstat -r -n -f inet6查看路由,默认路由都设置了,没什么问题,很是疑惑。

    经过仔细查看,发现NetBSD有这么一条路由规则,注意标为红色的路由:

         Destination        Gateway            Flags    Refs      Use    Mtu Interface

        Internet6:
        Destination                        Gateway                        Flags    Refs      Use    Mtu Interface
            ::/104                             ::1                            UGRS        0        0      -  lo0 =>
            ::/96                              ::1                            UGRS        0        0      -  lo0
            ::1                                ::1                            UH         12        0  33192  lo0
            ::127.0.0.0/104                    ::1                            UGRS        0        0      -  lo0
            ::224.0.0.0/100                    ::1                            UGRS        0        0      -  lo0
            ::255.0.0.0/104                    ::1                            UGRS        0        0      -  lo0
            ::ffff:0.0.0.0/96                  ::1                            UGRS        0        0      -  lo0
            2001:db8::/32                      ::1                            UGRS        0        0      -  lo0

      这条路由会匹配目的地址前32位是2001:db8的地址,然后发送到lo0,也就是丢弃了

      因为FreeBSD IPv6的地址前32为正好是2001:db8,所以NetBSD和FreeBSD之间是无法ping通的。

      后来发现这条路由是在/etc/rc.d/network中配置的,解释如下:

                # disallow the use of the RFC3849 documentation address
                #
                /sbin/route -q add -inet6 2001:db8:: -prefixlen 32 ::1 -reject

       FreeBSD, Fedora默认应该都不会设置这样一条路由,NetBSD却这样做了,呵呵!

       大家可以把这条语句注释掉,可以省掉一些麻烦了.

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值