配置GRE通过静态路由实现IPv4协议互通示例

2023-12-28 13:01:08 浏览数 (2)

GRE简介

定义

通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。

GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种三层隧道封装技术,使报文可以通过GRE隧道透明的传输,解决异种网络的传输问题。

受益
  • GRE实现机制简单,对隧道两端的设备负担小。
  • GRE隧道可以通过IPv4网络连通多种网络协议的本地网络,有效利用了原有的网络架构,降低成本。
  • GRE隧道扩展了跳数受限网络协议的工作范围,支持企业灵活设计网络拓扑。
  • GRE隧道将不连续的子网连接起来,用于组建VPN,实现企业总部和分支间安全的连接。

配置GRE通过静态路由实现IPv4协议互通示例

组网图形

图1 配置GRE使用静态路由组网图

  • 组网需求
  • 配置思路
  • 操作步骤
  • 配置文件
组网需求

图1所示:

  • SwitchA、SwitchB、SwitchC实现公网互通(本示例使用OSPF协议)。
  • 在PC1和PC2上运行IPv4私网协议,现需要PC1和PC2通过公网实现IPv4私网互通。
  • 其中PC1和PC2上分别指定SwitchA和SwitchC为自己的缺省网关。
配置思路

要实现PC1和PC2通过公网互通,需要在SwitchA和SwitchC之间建立直连链路,部署GRE隧道,通过静态路由指定到达对端的报文通过Tunnel接口转发,PC1和PC2就可以互相通信了。

配置GRE通过静态路由实现IPv4协议互通的思路如下:

  1. 所有设备之间运行OSPF路由协议实现设备间路由互通。
  2. 在SwitchA和SwitchC上创建Tunnel接口,创建GRE隧道,并在SwitchA和SwitchC上配置经过Tunnel接口的静态路由,使PC1和PC2之间的流量通过GRE隧道传输,实现PC1和PC2互通。

操作步骤
代码语言:javascript复制
配置各物理接口的IP地址
# 配置SwitchA。
<HUAWEI> system-view
[HUAWEI] sysname SwitchA [SwitchA] vlan batch 10 30
[SwitchA] interface gigabitethernet 0/0/1 
[SwitchA-GigabitEthernet0/0/1] port link-type trunk 
[SwitchA-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 
[SwitchA-GigabitEthernet0/0/1] quit [SwitchA] interface gigabitethernet 0/0/2
[SwitchA-GigabitEthernet0/0/2] port link-type access 
[SwitchA-GigabitEthernet0/0/2] port default vlan 30 
[SwitchA-GigabitEthernet0/0/2] quit [SwitchA] interface vlanif 10 
[SwitchA-Vlanif10] ip address 20.1.1.1 24 
[SwitchA-Vlanif10] quit 
[SwitchA] interface vlanif 30 
[SwitchA-Vlanif30] ip address 10.1.1.2 24 
[SwitchA-Vlanif30] quit
# 配置SwitchB。
<HUAWEI> system-view 
[HUAWEI] sysname SwitchB 
[SwitchB] vlan batch 10 20 
[SwitchB] interface gigabitethernet 0/0/1 
[SwitchB-GigabitEthernet0/0/1] port link-type trunk 
[SwitchB-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 
[SwitchB-GigabitEthernet0/0/1] quit
[SwitchB] interface gigabitethernet 0/0/2 
[SwitchB-GigabitEthernet0/0/2] port link-type trunk 
[SwitchB-GigabitEthernet0/0/2] port trunk allow-pass vlan 20 
[SwitchB-GigabitEthernet0/0/2] quit
 [SwitchB] interface vlanif 10 
 [SwitchB-Vlanif10] ip address 20.1.1.2 24 
 [SwitchB-Vlanif10] quit 
 [SwitchB] interface vlanif 20 
 [SwitchB-Vlanif20] ip address 30.1.1.1 24 
 [SwitchB-Vlanif20] quit
# 配置SwitchC。
<HUAWEI> system-view 
[HUAWEI] sysname SwitchC
[SwitchC] vlan batch 20 30
[SwitchC] interface gigabitethernet 0/0/1 
[SwitchC-GigabitEthernet0/0/1] port link-type trunk 
[SwitchC-GigabitEthernet0/0/1] port trunk allow-pass vlan 20 
[SwitchC-GigabitEthernet0/0/1] quit 
[SwitchC] interface gigabitethernet 0/0/2 
[SwitchC-GigabitEthernet0/0/2] port link-type access 
[SwitchC-GigabitEthernet0/0/2] port default vlan 30  
[SwitchC-GigabitEthernet0/0/2] quit 
[SwitchC] interface vlanif 20 
[SwitchC-Vlanif20] ip address 30.1.1.2 24 
[SwitchC-Vlanif20] quit 
[SwitchC] interface vlanif 30 
[SwitchC-Vlanif30] ip address 10.2.1.2 24 
[SwitchC-Vlanif30] quit
配置设备间使用OSPF路由
# 配置SwitchA。
[SwitchA] ospf 1 
[SwitchA-ospf-1] area 0 
[SwitchA-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255 
[SwitchA-ospf-1-area-0.0.0.0] quit
 [SwitchA-ospf-1] quit
# 配置SwitchB。
[SwitchB] ospf 1 
[SwitchB-ospf-1] area 0
 [SwitchB-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255 
 [SwitchB-ospf-1-area-0.0.0.0] network 30.1.1.0 0.0.0.255
  [SwitchB-ospf-1-area-0.0.0.0] quit
   [SwitchB-ospf-1] quit
# 配置SwitchC。
[SwitchC] ospf 1 
[SwitchC-ospf-1] area 0 
[SwitchC-ospf-1-area-0.0.0.0] network 30.1.1.0 0.0.0.255 
[SwitchC-ospf-1-area-0.0.0.0] quit 
[SwitchC-ospf-1] quit
# 配置完成后,在SwitchA和SwitchC上执行display ip routing-table命令,可以看到它们能够学到去往对端接口网段地址的OSPF路由。
配置Tunnel接口
# 配置SwitchA。
[SwitchA] interface tunnel 1 
[SwitchA-Tunnel1] tunnel-protocol gre 
[SwitchA-Tunnel1] ip address 40.1.1.1 255.255.255.0
 [SwitchA-Tunnel1] source 20.1.1.1 
 [SwitchA-Tunnel1] destination 30.1.1.2 
 [SwitchA-Tunnel1] quit
# 配置SwitchC。
[SwitchC] interface tunnel 1 
[SwitchC-Tunnel1] tunnel-protocol gre [SwitchC-Tunnel1] ip address 40.1.1.2 255.255.255.0 
[SwitchC-Tunnel1] source 30.1.1.2 
[SwitchC-Tunnel1] destination 20.1.1.1 
[SwitchC-Tunnel1] quit
# 配置完成后,Tunnel接口状态变为Up,Tunnel接口之间可以Ping通,直连隧道建立。
以SwitchA的显示为例:
[SwitchA] ping -a 40.1.1.1 40.1.1.2   PING 40.1.1.2: 56  data bytes, press CTRL_C to break     Reply from 40.1.1.2: bytes=56 Sequence=1 ttl=255 time=1 ms     Reply from 40.1.1.2: bytes=56 Sequence=2 ttl=255 time=1 ms     Reply from 40.1.1.2: bytes=56 Sequence=3 ttl=255 time=1 ms     Reply from 40.1.1.2: bytes=56 Sequence=4 ttl=255 time=1 ms     Reply from 40.1.1.2: bytes=56 Sequence=5 ttl=255 time=1 ms    --- 40.1.1.2 ping statistics ---     5 packet(s) transmitted     5 packet(s) received     0.00% packet loss     round-trip min/avg/max = 1/1/1 ms
配置静态路由
# 配置SwitchA。
[SwitchA] ip route-static 10.2.1.0 255.255.255.0 tunnel 1
# 配置SwitchC。
[SwitchC] ip route-static 10.1.1.0 255.255.255.0 tunnel 1
# 配置完成后,在SwitchA和SwitchC上执行display ip routing-table命令,可以看到去往对端用户侧网段的静态路由出接口为Tunnel接口。
以SwitchA的显示为例。
[SwitchA] display ip routing-table 10.2.1.0 Route Flags: R - relay, D - download to fib, T - to vpn-instance ------------------------------------------------------------------------------ Routing Table : Public Summary Count : 1 Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface         10.2.1.0/24  Static  60   0           D   40.1.1.1        Tunnel1
PC1和PC2可以相互Ping通。

配置文件
代码语言:javascript复制
SwitchA的配置文件

#
sysname SwitchA
#
vlan batch 10 30
#
interface Vlanif10
 ip address 20.1.1.1 255.255.255.0
#
interface Vlanif30
 ip address 10.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
 port link-type access
 port default vlan 30
#
interface Tunnel1
 ip address 40.1.1.1 255.255.255.0
 tunnel-protocol gre
 source 20.1.1.1
 destination 30.1.1.2
#
ospf 1
 area 0.0.0.0
  network 20.1.1.0 0.0.0.255
#
ip route-static 10.2.1.0 255.255.255.0 Tunnel1
#
return
SwitchB的配置文件

#
sysname SwitchB
#
vlan batch 10 20
#
interface Vlanif10
 ip address 20.1.1.2 255.255.255.0
#
interface Vlanif20
 ip address 30.1.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
 port link-type trunk
 port trunk allow-pass vlan 20
#
ospf 1
 area 0.0.0.0
  network 20.1.1.0 0.0.0.255
  network 30.1.1.0 0.0.0.255
#
return
SwitchC的配置文件

#
sysname SwitchC
#
vlan batch 20 30
#
interface Vlanif20
 ip address 30.1.1.2 255.255.255.0
#
interface Vlanif30
 ip address 10.2.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 20
#
interface GigabitEthernet0/0/2
 port link-type access
 port default vlan 30
#
interface Tunnel1
 ip address 40.1.1.2 255.255.255.0
 tunnel-protocol gre
 source 30.1.1.2
 destination 20.1.1.1
#
ospf 1
 area 0.0.0.0
  network 30.1.1.0 0.0.0.255
#
ip route-static 10.1.1.0 255.255.255.0 Tunnel1
#
return

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

0 人点赞