linux隧道6rd配置

拓扑如下所示,CE(Customer Edge)和BR(Border Relay)使用两台Ubuntu系统的虚拟机。

      |----------|                                |----------|
      |          | ens33                    ens33 |          |
      |   CE     |--------------------------------|   BR     |
      |          | 192.168.3.47      192.168.3.49 |          |
      |----------|                                |----------|
       6rd-prefix
      2001:db8::/32  

6rd必须的几个参数取值如下:

6rdCEIPv4Address - 192.168.3.47
IPv4MaskLen - 32
6rdPrefix - 2001:db8::
6rdPrefixLen - 32
6rdBRIPv4Address - 192.168.3.49

按照RFC5969的定义,CE设备可通过DHCPv4协议的选项OPTION_6RD (212)来获取这些信息,其中6rdBRIPv4Address地址可为多个。但是,这需要CE的DHCP客户端在请求报文的Parameter Request List Option中,明确包括对OPTION_6RD参数的请求。

这里全部6rd信息都为手动配置。

   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  OPTION_6RD   | option-length |  IPv4MaskLen  |  6rdPrefixLen |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                           6rdPrefix                           |
   |                          (16 octets)                          |
   |                                                               |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     6rdBRIPv4Address(es)                      |
   .                                                               .
   .                                                               .
   .                                                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

6rd地址的格式如下,这里我们使用IPv4的掩码长度为32,即全部的IPv4地址都包括在6rd代理前缀中。

   |     n bits    |    o bits    |   m bits  |    128-n-o-m bits      |
   +---------------+--------------+-----------+------------------------+
   |  6rd prefix   | IPv4 address | subnet ID |     interface ID       |
   +---------------+--------------+-----------+------------------------+
   |<--- 6rd delegated prefix --->|

CE配置:

# printf "%02x%02x:%02x%02x\n" 192 168 3 47
c0a8:032f
#
# ip address add 192.168.3.47 dev ens33
# ip link set ens33 up
#
# ip tunnel add 6rd-vif mode sit local 192.168.3.47
# ip tunnel 6rd dev 6rd-vif 6rd-prefix 2001:db8::/32 6rd-relay_prefix 192.168.3.49/32
# ip link set 6rd-vif up
#
# ip -6 addr add 2001:db8:c0a8:032f::1/64 dev 6rd-vif 
#
# ip -6 route add 2001:db8::/32 dev 6rd-vif
# ip -6 route add default via ::192.168.3.49

6rd需要使用到以下的内核模块。

# lsmod | grep sit
sit                    32768  0
tunnel4                16384  1 sit
ip_tunnel              32768  1 sit

查看CE的6rd相关配置:

# ip -d tunnel show 6rd-vif
6rd-vif: ipv6/ip remote any local 192.168.3.47 ttl inherit 6rd-prefix 2001:db8::/32 6rd-relay_prefix 192.168.3.49/32
#
# ip address
6: 6rd-vif@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/sit 192.168.3.47 brd 0.0.0.0
    inet6 2001:db8:c0a8:32f::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 ::192.168.3.47/96 scope global 
       valid_lft forever preferred_lft forever
#
# ip -6 route
::/96 dev 6rd-vif proto kernel metric 256 pref medium
2001:db8:c0a8:32f::/64 dev 6rd-vif proto kernel metric 256 pref medium
2001:db8::/32 dev 6rd-vif metric 1024 pref medium
default via ::192.168.3.49 dev 6rd-vif metric 1024 pref medium

BR配置:

# printf "%02x%02x:%02x%02x\n" 192 168 3 49
c0a8:0331

# ip address add 192.168.3.49 dev ens33
# ip link set ens33 up
#
# ip tunnel add 6rd-vif mode sit local 192.168.3.49
# ip tunnel 6rd dev 6rd-vif 6rd-prefix 2001:db8::/32
# ip link set 6rd-vif up
#
# ip -6 addr add 2001:db8:c0a8:0331::1/64 dev 6rd-vif 
#
# ip -6 route add 2001:db8::/32 dev 6rd-vif

查看BR的6rd相关配置:

# ip tunnel show 6rd-vif
6rd-vif: ipv6/ip remote any local 192.168.3.49 ttl inherit 6rd-prefix 2001:db8::/32
#
$ ip address
6: 6rd-vif@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/sit 192.168.3.49 brd 0.0.0.0
    inet6 2001:db8:c0a8:331::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 ::192.168.3.49/96 scope global 
       valid_lft forever preferred_lft forever
#
# ip -6 route 
::/96 dev 6rd-vif proto kernel metric 256 pref medium
2001:db8:c0a8:331::/64 dev 6rd-vif proto kernel metric 256 pref medium
2001:db8::/32 dev 6rd-vif metric 1024 pref medium

在CE设备上ping6设备BR的6rd地址。

# ping6 2001:db8:c0a8:0331::1 -c 3
PING 2001:db8:c0a8:0331::1(2001:db8:c0a8:331::1) 56 data bytes
64 bytes from 2001:db8:c0a8:331::1: icmp_seq=1 ttl=64 time=0.192 ms
64 bytes from 2001:db8:c0a8:331::1: icmp_seq=2 ttl=64 time=0.318 ms
64 bytes from 2001:db8:c0a8:331::1: icmp_seq=3 ttl=64 time=0.186 ms

--- 2001:db8:c0a8:0331::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2045ms
rtt min/avg/max/mdev = 0.186/0.232/0.318/0.060 ms

查看报文,ICMP请求如下,注意IPv4头部协议号为41,表面封装为IPv6报文:

在这里插入图片描述

ICMP回复报文如下:

在这里插入图片描述

在CE设备上ping6设备BR的其他IPv6地址,首先在BR上创建一个虚拟的网桥接口,并配置IPv6地址2003::1。之后在CE上ping6此地址,这里使用配置的默认路由。

BR # ip link add dev br0 type bridge
BR # ip link set br0 up
BR # ip -6 addr add 2003::1/64 dev br0

CE # ping6 2003::1 -c 3
PING 2003::1(2003::1) 56 data bytes
64 bytes from 2003::1: icmp_seq=1 ttl=64 time=0.255 ms
64 bytes from 2003::1: icmp_seq=2 ttl=64 time=0.247 ms
64 bytes from 2003::1: icmp_seq=3 ttl=64 time=0.219 ms

--- 2003::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2037ms
rtt min/avg/max/mdev = 0.219/0.240/0.255/0.015 ms

以下为ICMP请求报文:
在这里插入图片描述
以下为ICMP回复报文:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值