通过 IPv4 网络建立隧道

通过 IPv4 网络建立隧道

我读过的大部分关于隧道的文章都描述了隧道支持两个 IPv6 网络通过(跨越)IPv4 网络进行通信。例如:

     TUNNEL A (IPv6) ==> INTERNET NETWORK (IPv4) => TUNNEL B (IPv6)

以下情况可行吗:

     TUNNEL A (IPv4) ==> INTERNET NETWORK (IPv6) => TUNNEL B (IPv4)

请给我一个详细的答案。

提前致谢。

答案1

绝对是的,但是你需要“正确”的软件。

您没有提到操作系统,所以我将使用我熟悉的操作系统。FreeBSDtun接口。它是一种通用隧道协议(实际上与许多 VPN 使用的协议相同),您可以分配 IPv4 或 IPv6 端点,以及 IPv4 或 IPv6 私有地址。这允许 IPv4-over-IPv6、IPv6-over-IPv4 或 IPv4-over-IPv4 等。

对于这样的实现,您的私有地址和目标都必须是相同的协议(IPv4 或 IPv6)。还有 DNS64/NAT64 等技术,允许您在本地运行仅 IPv6 协议,同时连接到 IPv4 和 IPv6 互联网。还有其他技术,例如 6to4,它本质上是一种隧道协议,但允许您在内部网络上拥有 IPv6 地址、IPv4 外部地址,并且仍连接到 IPv6 互联网。

了解更多有关您要完成的目标以及要使用哪些资源的详细信息将会有很大帮助。

答案2

当然可以。如果您询问如何在 Cisco 环境中执行此操作,则配置如下:

(r100)tun1(IPv4)==> IPv6 核心 => (r107)tun0(IPv4)

r100's e0/0 ipv6 address is 2001:1:1:1::100/64
r107's e0/0 ipv6 address is 2001:3:0:2::107/64

r100#sh run int tun1
Building configuration...

Current configuration : 151 bytes
!
interface Tunnel1
 ip address 10.254.254.5 255.255.255.252
 tunnel source Ethernet0/0
 tunnel mode gre ipv6
 tunnel destination 2001:3:0:2::107
end


r107#sh run int tun0
Building configuration...

Current configuration : 151 bytes
!
interface Tunnel0
 ip address 10.254.254.6 255.255.255.252
 tunnel source Ethernet0/0
 tunnel mode gre ipv6
 tunnel destination 2001:1:1:1::100
end

通过 ipv6 核心从 r100(ipv4) ping r107(ipv4):

r100#ping 10.254.254.6

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.254.254.6, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
r100#

通过 ipv6 核心从 r107(ipv4) ping r100(ipv4):

r107#ping 10.254.254.5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.254.254.5, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
r107#

答案3

目前,许多(如果不是大多数)连接到 IPv6 的用户都是通过这种方式连接的。对于 IPv6,有 6in4 和 6to4 隧道。这些隧道将 IPv6 数据包封装在 IPv4 数据包中,并通过 IPv4 网络发送。IPv6 数据包是 IPv4 数据包的有效负载。IPv4 标头每个数据包的开销为 20 字节,这导致以这种方式路由的数据包的 MTU 较小。

IPv4 选项可能是在 IPv6 上运行的 VPN。我期望 IPv6 over IPv4 所用的技术也可用于 IPv4 over IPv6,尽管我并不知道有任何此类技术。

IPv6 还具有 IPv4 寻址方案,因此 IPv6 地址可用于 IPv6 网络。但是,IPv4 报头处理选项的方式不同,需要对某些报头选项进行报头转换。在 IPv6 网络中路由 IPv4 地址存在重大问题,因此首选的传输方法是封装。

答案4

所有路由器和设备通常都是双栈的。这意味着如果您传输 IPv4 数据包,IPv6 设备将协商并以 IPv4 接收并以 IPv4 发送,以便端点正确接收它。

据我所知,没有任何设备仅仅是 IPv6,这将是愚蠢的,而且供应商不会出售任何设备。

IPv6 通过 IPv4 到达其 IPv6 端点需要将 IPv6 数据包封装在 IPv4 数据包中。这可以通过隧道(手动 IPv6 隧道、6to4 隧道或 ISATAP)、toredo 隧道或第三方代理服务来实现。每种方式都有优点和缺点。

该信息具有不同的报头信息,以便 IPv6 设备知道它已被封装并且可以在两端正确打开。当 IPv6 设备接收到封装的数据包时,报头通常会被剥离。IPv6 报头信息与 IPv4 报头信息完全不同。IPv6 报头现在包含的信息较少。

现在每个操作系统都是双栈的,除了 Win XP,你可以下载客户端来处理。

各种隧道挖掘方法太长了,无法在这篇文章中描述。

回答你的问题,不需要从 IPv4 设备通过 IPv6 设备建立隧道到达 IPv4 端点,因为中间人是双栈的。这意味着 IPv4 和 IPv6。

相关内容