isatap linux,关于isatap隧道的IPV6的缩略地址下IPV4映射/兼容地址的计算方法

Ipv6扩展地址

Ipv6缩略地址

Ipv6表示地址

2002:ac10:9c4c:0:0:0:0:0

2002:ac10:9c4c::

Ipv4映射地址

0:0:0:0:0:FFFF:172.16.156.76

::FFFF:172.16.156.76

Ipv4兼容地址

0:0:0:0:0:0:172.16.156.76

::FFFF:ac10:9c4c

看下我本机的路由表

[text]route -6 print

IPv6 Route Table

===========================================================================

Active Routes:

If Metric Network Destination Gateway

20 286 ::/0 fe80::5efe:219.230.144.10

1 306 ::1/128 On-link

15 58 2001::/32 On-link

15 306 2001:0:4137:9e76:819:297e:f5f7:fff1/128

On-link

20 38 2001:da8:1008:6003::/64 On-link

20 286 2001:da8:1008:6003:0:5efe:172.16.156.76/128

On-link

15 306 fe80::/64 On-link

19 296 fe80::5efe:10.8.0.14/128 On-link

20 286 fe80::5efe:172.16.156.76/128

On-link

15 306 fe80::819:297e:f5f7:fff1/128

On-link

1 306 ff00::/8 On-link

15 306 ff00::/8 On-link

===========================================================================

Persistent Routes:

None[/text]

在windows下面,无论是XP还是VISTA/7 都是使用IPv4映射地址来进行表示和设置路由的。

主机先向ISATAP服务器发送路由请求,得到一个64位的IPv6地址前缀(比如我们学校的前缀就是2001:da8:1008:6003),然后再加上64位的接口标识符::0:5EFE:x.x.x.x(这里的x.x.x.x是双栈主机的IPv4单播地址),这样就构成一个ISATAP地址

IPV4映射地址到IPV4兼容缩略地址之间是十六进制转换关系

比如

172

->

ac

16

->

10

156

->

9c

76

->

4c

可以用下面的shell脚本进行转化(需要先安装Linux下面的计算器bc: apt-get install bc)

[bash]#!/bin/bash

ipv4=172.16.156.76

b='';for id in echo $ipv4|sed 's/\./ /g'

do

b=${b}echo "obase=16;$id"|bc

if [ expr ${#b} % 4 -eq 0 ]; then

b=${b}:;

fi

done

echo $b |tr 'A-Z' 'a-z'

[/bash]

无论是windows还是linux,都可以直接使用IPV4映射地址进行IPV6隧道的人工配置,

Linux的手工配置方法可以看这里只不过Linux配置完毕后,用ifconfig看到的都是兼容地址,还有最著名的BT软件μtorrent链接peers的时候也是使用的兼容地址,

在windows下面,手工配置isatap隧道地址的方法如下

@echo off

set interface=isatap.{0A26141A-77D1-41BC-942A-423FD94902EF}

set prefix="2001:da8:1008:6003"

set ip="219.230.144.212"

set gateway="219.230.144.254"

set isataprouter="219.230.144.10"

route add %isataprouter% %gateway%

for /f " tokens=2 delims='\s' " %%a in ('"netsh int ipv6 show addr %interface% | findstr /r ^Address.*Parameters$"') do netsh int ipv6 del addr %interface% %%a

netsh int ipv6 add addr %interface% fe80::5efe:%ip%

netsh int ipv6 add addr %interface% %prefix%:0:5efe:%ip%

netsh int ipv6 isa s s d

netsh int ipv6 isa s s e

pause

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

@echooff

setinterface=isatap.{0A26141A-77D1-41BC-942A-423FD94902EF}

setprefix="2001:da8:1008:6003"

setip="219.230.144.212"

setgateway="219.230.144.254"

setisataprouter="219.230.144.10"

routeadd%isataprouter%%gateway%

for/f" tokens=2 delims='\s' "%%ain('"netsh int ipv6 show addr %interface% | findstr /r ^Address.*Parameters$"')donetshintipv6deladdr%interface%%%a

netshintipv6addaddr%interface%fe80::5efe:%ip%

netshintipv6addaddr%interface%%prefix%:0:5efe:%ip%

netshintipv6isassd

netshintipv6isasse

pause

顺便说一下shell里面十进制转换为其他进制的方法

[bash]#二进制转换10进制

((n=2#11111111));echo $n

#16进制华为10进制

((n=16#ac));echo $n

[/bash]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值