ipv6以及ip6tables的nat转发

一、IPV6
  IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代 IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。
由于 IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍

1.表示方法

IPv6的长分布式结构图 IPv6的长分布式结构图
IPv6的地址长度为128位,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。
(1)  冒分十六进制表示法
  格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如:
  ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
  这种表示法中,每个X的前导0是可以省略的,例如:
  2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
(2)  0位压缩表示法
  在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
  FF01:0:0:0:0:0:0:1101 → FF01::1101
  0:0:0:0:0:0:0:1 → ::1
  0:0:0:0:0:0:0:0 → ::
(3)  内嵌IPv4地址表示法
  为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用 [9]
2.特殊地址(本地单播地址):
  链路本地地址和唯一本地地址都属于本地单播地址,在IPv6中,本地单播地址就是指本地网络使用的单播地址,也就是IPV4地址中 局域网专用地址。每个接口上至少要有一个链路本地单播地址,另外还可分配任何类型(单播、任播和组播)或范围的IPv6地址。
(1)  链路本地地址(FE80::/10):仅用于单个链路(链路层不能跨VLAN),不能在不同子网中路由。结点使用链路本地地址与同一个链路上的相邻结点进行通信。例如,在没有路由器的单链路IPv6网络上,主机使用链路本地地址与该链路上的其他主机进行通信。
(2)  唯一本地地址(FC00::/7):唯一本地地址是本地全局的,它应用于本地通信,但不通过Internet路由,将其范围限制为组织的边界。
(3)  站点本地地址(FEC0::/10,新标准中已被唯一本地地址代替)
3.linux 常规使用:ping6、"curl -6 -g http://[X::X]"(-g 参数是为了支持[])、“telnet -6”、“ip addr add(del) dev ETH0 X::X ”。
 
二、ip6tables的nat转发
1.常用命令
 显示nat表规则:
  ip6tables -t nat -nL
 显示编号:
  ip6tables -t nat -nL --line-number
 删除对应编号:
  ip6tables -t nat  -D PREROUTING 1
  ip6tables -t nat  -D POSTROUTING 1
  添加转发规则:
  ip6tables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to [本地IPv6地址]:8999  
  ip6tables -t nat -I POSTROUTING -p tcp --dport 8999 -j MASQUERADE

  注:SNAT,DNAT,MASQUERADE都是NAT,MASQUERADE是SNAT的一个特例。
  SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机。
  MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE。
2.可能遭遇的问题:
  数据包进入PREROUTE链后,修改完DNAT,但未转发到POSTROUTE脸。
  解决方案:开启内核forward转发
   查看:sysctl -a |grep ipv6 |grep forward
  

   修改:sysctl -w net.ipv6.conf.all.forwarding=1

猜你喜欢

转载自www.cnblogs.com/ZS-ZCL/p/10450604.html