用于GOST L2VPN管理的802.1Q或如何在软件更新上省钱





情况



我必须在网络上的两个站点之间建立一个VPN连接。服务器机房似乎已经安装了C-Terra网关4.2版安全网关。该方案很简单。供应商甚至发布了推荐的配置脚本。但是...供应商脚本使用三个网络接口,而我的网关只有两个。



我冲泡咖啡,记住我的CCNA并尝试使用我拥有的-管理型交换机中的免费端口。



我的网络



我的网络是在一个广播域中两个地理位置分开的站点。地址空间:10.10.205.0/24:







在两个安全网关手上,带有C-Terra L2软件包的C-Terra网关版本4.2。

关于C-Terra L2



软件包该软件包使您可以将一个或多个网关接口切换为PROMISC模式。PROMISC接口截取数据链接帧,C-Terra L2将其封装在UDP中。

然后对UDP数据包进行加密(封装在ESP中)。这将创建L2-over-L3 VPN连接。C-Terra L2已预安装在所有安全网关上,并通过单独的许可证激活。


在推荐的方案中,安全网关位于网络的边缘,并为管理分配了单独的接口:







为了更加清楚,我将描述这些接口:



  • Gi0 / 0-PROMISC接口;
  • Gi0 / 1-L3 WAN接口;
  • Gi0 / 2-专用管理界面。我知道我必须通过VPN隧道来管理第二个安全网关。


决断



当我在Habré上阅读有关802.1Q的内容时,第一杯咖啡结束了-我记得CCNA。切换设备时,第二个杯子已经冷却(我将用微波炉加热),如图所示:







我区分三种流量:



  • R1和R2设备之间的主要流量。我将其指定为BULK DATA,并将其放入VLAN 205中。在站点之间传输之前,必须对BULK DATA进行加密;
  • 网关管理流量-MGMT。我将其带到VLAN10。必须对到远程站点网关的MGMT通信进行加密。
  • 加密后的BULK DATA和MGMT我将指定为ESP DATA并将其放入VLAN 100中。


根据我的估计,网络上的BULK DATA / ESP DATA传输将如下所示(绿线代表未加密的流量,红色-加密):







用于本地站点网关控制的MGMT传输:







用于远程站点网关控制的MGMT / ESP DATA传输:







5个设定步骤



步骤1.处理BULK DATA



为BULK DATA选择一个单独的VLAN 205,为此,我将SW1和SW2设备的Gi0 / 2接口设置为使用VLAN 205的访问模式:



sw1(config)#
interface gi0/2
    description BULK_TO_R1
    switchport access vlan 205
    no shutdown

sw2(config)#
interface gi0/2
  description BULK_TO_R2
  switchport access vlan 205
  no shutdown


我设置网关GW1和GW2 PROMISC接口的接口Gi0 / 0。要将大容量数据传递到PROMISC接口,我将中继配置为PROMISC接口:



sw1(config)#
interface gi0/0
  description LINK_TO_PROMISC_GW1
  switchport mode trunk
  switchport trunk allowed vlan 205
  switchport trunk encapsulation dot1q
  no shutdown

sw2(config)#
interface gi0/0
  description LINK_TO_PROMISC_GW2
  switchport mode trunk
  switchport trunk allowed vlan 205
  switchport trunk encapsulation dot1q
  no shutdown






步骤2.处理本地MGMT



根据计划,MGMT流量正在承载VLAN10。VLAN10的地址空间为10.76.76.128/28。



在SW1和SW2设备上,我创建vlan10虚拟接口:



sw1(config)#
interface vlan10
  ip address 10.76.76.129 255.255.255.240
  no shutdown 

sw2(config)#
interface vlan10
  ip address 10.76.76.142 255.255.255.240
  no shutdown


我将VLAN 10设为本机VLAN,以免在网关上配置802.1Q接口:



sw1(config)#
interface gi0/1
  description LINK_TO_WAN_GW1
  switchport mode trunk
  switchport trunk allowed vlan 10
  switchport trunk native vlan 10
  switchport trunk encapsulation dot1q
  no shutdown

sw2(config)#
interface gi0/1
  description LINK_TO_WAN_GW2
  switchport mode trunk
  switchport trunk allowed vlan 10
  switchport trunk native vlan 10
  switchport trunk encapsulation dot1q
  no shutdown






我配置安全网关的Gi0 / 1接口:



GW1(config)#
interface gi0/1
   ip address 10.76.76.137 255.255.255.240
   no shutdown

GW2(config)#
interface gi0/1
  ip address 10.76.76.138 255.255.255.240
  no shutdown


现在,可以从SW1设备通过SSH使用GW1:



sw1#ssh –l root 10.76.76.137
Password:
S-Terra Gate 4.2.18201 (amd64)
root@GW1~#


同样,可以从SW2设备通过SSH访问GW2:



sw2#ssh –l root 10.76.76.138
Password:
S-Terra Gate 4.2.18201 (amd64)
root@GW2~#


不错,倒了另一杯咖啡。



步骤3.处理到远程站点网关的



MGMT必须加密到远程站点网关的MGMT通信。为此,我将通过VPN投掷VLAN 10。从PROMISC接口截获的所有流量都将进入VPN隧道。我将添加到PROMISC接口VLAN 10的中继:



sw1(config)#
interface gi0/0
  description LINK_TO_PROMISC_GW1  
  switchport trunk allowed vlan 10, 205

sw2(config)#
interface gi0/0
  description LINK_TO_PROMISC_GW1  
  switchport trunk allowed vlan 10, 205


不要浪费半小时进行故障排除!



PROMISC接口不应获取ESP数据,因此在以下选项中将VLAN 100从LINK_TO_PROMISC_GW1和LINK_TO_PROMISC_GW2中继中排除很重要:



switchport trunk allowed vlan 1-99,101-4096


步骤4.我到达ESP DATA



我在GW1和GW2网关的VLAN 100中选择了ESP DATA。VLAN 100的地址空间:192.168.10.0/30



为此,在网关GW1和GW2的WAN接口Gi0 / 1上,我创建了802.1Q接口Gi0 / 1.100。

来自此类接口的传出流量将属于VLAN 100:



GW1(config)#
interface gi0/1.100
   ip address 192.168.10.1 255.255.255.252
   no shutdown

GW2(config)#
interface gi0/1.100
  ip address 192.168.10.2 255.255.255.252
  no shutdown






我允许通过VLAN 100到中继LINK_TO_WAN_GW1和LINK_TO_WAN_GW2:



sw1(config)#
interface gi0/1
  description LINK_TO_WAN_GW1
  switchport trunk allowed vlan 10,100

sw2(config)#
interface gi0/1
  description LINK_TO_WAN_GW2
  switchport trunk allowed vlan 10,100


设备SW1和SW2之间的链路还必须传输标记的VLAN 100流量:



sw1(config)#
interface gi0/3
  description LINK_TO_SW2
  switchport mode trunk
  switchport trunk allowed vlan 100
  switchport trunk encapsulation dot1q
  no shutdown

sw2(config)#
interface gi0/3
  description LINK_TO_SW1
  switchport mode trunk
  switchport trunk allowed vlan 100
  switchport trunk encapsulation dot1q
  no shutdown


步骤5.使用GOST配置C-Terra L2和IPsec VPN



使用配置文件/opt/VPNagent/etc/l2.conf在操作系统中配置C-Terra L2。对于GW1:



vif tap0
bridge br0
capture eth0
remote 192.168.10.2
mssfix 1400
passtos


其中:



capture eth0-选择PROMISC接口,远程192.168.10.2-IPsec对等方的IP地址(GW2网关的Gi0 / 1.100接口)。



对于GW2:



vif tap0
bridge br0
capture eth0
remote 192.168.10.1
mssfix 1400
passtos


配置IKE / IPsec参数。对于GW1:

网关将使用主机名作为标识符,设置用于身份验证的预定义密钥(用于身份验证的规则需要使用数字证书,稍后将对其进行更改):



GW1(config)#
crypto isakmp identity hostname
ip host GW2 192.168.10.2
crypto isakmp key KEY hostname GW2


配置失效对等体检测(DPD)参数:



GW1(config)#
crypto isakmp keepalive 10 2
crypto isakmp keepalive retry-count 5


我设置了IPsec第一阶段参数:



GW1(config)#
crypto isakmp policy 1
  encr gost
  hash gost3411-256-tc26
  auth pre-share
  group vko2


我为IPsec阶段II设置了参数:



GW1(config)#
crypto ipsec transform-set TSET esp-gost28147-4m-imit
   mode tunnel


由于PROMISC L2接口截获的帧都封装在UDP中,因此定义了加密流量的访问列表:



GW1(config)#
ip access-list extended LIST
   permit udp host 192.168.10.1 host 192.168.10.2


我创建了一个加密映射并将其绑定到Gi0 / 1.100:



GW1(config)#
crypto map CMAP 1 ipsec-isakmp
  match address LIST
  set transform-set TSET
  set peer 192.168.10.2
interface gi0/1.100
  crypto map CMAP


我指定通过IPsec对等方的IP地址的默认路由:



GW1(config)#
ip route 0.0.0.0 0.0.0.0 192.168.10.2 	


GW2网关配置:



GW2(config)#
crypto isakmp identity hostname
ip host GW1 192.168.10.1
crypto isakmp key KEY hostname GW1
crypto isakmp keepalive 10 2
crypto isakmp keepalive retry-count 5
crypto isakmp policy 1
  encr gost
  hash gost3411-256-tc26
  auth pre-share
  group vko2
crypto ipsec transform-set TSET esp-gost28147-4m-imit
  mode tunnel
ip access-list extended LIST
  permit udp host 192.168.10.2 host 192.168.10.1
crypto map CMAP 1 ipsec-isakmp
  match address LIST
  set transform-set TSET
  set peer 192.168.10.1
interface gi0/1.100
  crypto map CMAP
ip route 0.0.0.0 0.0.0.0 192.168.10.1


发生了吗



从设备R1,我ping到R2:



R1#ping 10.10.205.2 
Type escape sequence to abort. 

Sending 5, 100-byte ICMP Echos to 10.10.205.2, timeout is 2 seconds: 
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/2/3 ms</code>

R2   ICMP.  ?  ARP   R1  R2:

<source>R1#show arp 
Protocol  Address          Age (min)  Hardware Addr   Type   Interface 
Internet  10.10.205.1             -   aabb.cc00.5020  ARPA   GigabitEthernet0/2 
Internet  10.10.205.2            54   aabb.cc00.6020  ARPA   GigabitEthernet0/2

R2#show arp 
Protocol  Address          Age (min)  Hardware Addr   Type   Interface 
Internet  10.10.205.1            52   aabb.cc00.5020  ARPA   GigabitEthernet0/2 
Internet  10.10.205.2             -   aabb.cc00.6020  ARPA   GigabitEthernet0/2


R1和R2设备假定它们在同一广播子网中。



SW1和SW2设备认为它们通过两条链路相互连接:



sw1#show cdp neighbors
Device ID    Local Intrfce   Holdtme     Capability  Platform  Port ID 
sw2          Gi0/0           146             R S I  Linux Uni Gi0/0 
sw2          Gi0/3           146             R S I  Linux Uni Gi0/3 
R1           Gi0/2           156              R B   Linux Uni Gi0/2

sw2#show cdp neighbors
Device ID    Local Intrfce   Holdtme     Capability  Platform  Port ID 
sw1          Gi0/0           140             R S I  Linux Uni Gi0/0 
sw1          Gi0/3           140             R S I  Linux Uni Gi0/3 
R2           Gi0/2           156              R B   Linux Uni Gi0/2


尝试从SW1设备通过SSH连接到GW2:



sw1#ssh –l root 10.76.76.138
Password:
S-Terra Gate 4.2.18201 (amd64)
root@GW2~#


结论:站点1和2透明链接到单个广播域。我将检查通道是否加密:



GW1设备上的IPsec隧道统计信息:



root@GW1:~# sa_mgr show 
ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections: 
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd 
1 2 (192.168.10.1,500)-(192.168.10.2,500) active 31378 31502

IPsec connections: 
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd 
1 2 (192.168.10.1,*)-(192.168.10.2,*) 17 ESP tunn 508224 27672


在192.168.10.1和192.168.10.2之间建立了IPsec隧道。



我检查了在SW1和SW2设备之间仅传输ESP流量,没有计算STP。这是来自SW1的gi0 / 3接口的流量转储:







最终



我喝了三杯咖啡-然后我整夜没有睡觉,但是我不必购买新硬件和更新。也许值得,供应商在4.3版本中想到了L2。我正在考虑采用4.3版进行测试。



匿名工程师

t.me/anonimous_engineer



All Articles