3、VPN技术基础:IPsec VPN原理,站点到站点VPN配置,动态路由协议(BGP)在VPN中的应用。
3.1 IPsec VPN原理:别被“隧道”两个字骗了
很多人一听到VPN,脑子里就浮现出“挖隧道”的画面。其实没那么玄乎。IPsec VPN说白了,就是在两个网络节点之间,给IP数据包加了一层“加密信封”。
我个人习惯把IPsec拆成两个部分来理解:认证头(AH)和封装安全载荷(ESP)。AH只管数据有没有被篡改,ESP才负责加密。实际项目中,我几乎只用ESP,因为AH不支持NAT穿透——你想想看,现在哪个企业网络没有NAT?
IPsec有两种模式:
- 传输模式:只加密IP包的数据部分,头部不动。适合端到端的通信,比如两台服务器之间。
- 隧道模式:整个IP包都被加密,再套上一个新的IP头。这才是站点到站点VPN的标准姿势。
核心要点:IPsec不是单个协议,而是一套协议族。它包括IKE(密钥交换)、ESP(加密)、AH(认证)。IKE又分两个阶段——阶段1建立管理通道,阶段2建立数据通道。
嗯,这里要注意:IKE阶段1有两种模式——主模式和野蛮模式。主模式更安全,但交互次数多。野蛮模式快,但会暴露身份。我在项目中遇到过,有些老旧防火墙只支持野蛮模式,那就只能迁就它了。
3.2 站点到站点VPN配置:手把手教你搭一条“专线”
配置站点到站点IPsec VPN,其实就三步:定义感兴趣流、配置IKE策略、配置IPsec策略。我拿华为和思科的设备举个例子。
华为设备配置示例:
# 定义感兴趣流(哪些流量要走VPN)
acl number 3000
rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 10.0.0.0 0.0.0.255
# 配置IKE提议
ike proposal 1
encryption-algorithm aes-256
dh group14
authentication-algorithm sha256
authentication-method pre-share
integrity-algorithm hmac-sha256
# 配置IPsec策略
ipsec policy vpn-policy 1 isakmp
security acl 3000
ike-peer hq-peer
proposal ipsec-proposal-1
思科设备配置示例:
crypto isakmp policy 10
encr aes 256
authentication pre-share
group 14
hash sha256
crypto isakmp key cisco123 address 203.0.113.1
crypto ipsec transform-set AES256-SHA esp-aes 256 esp-sha-hmac
crypto map VPN-MAP 10 ipsec-isakmp
set peer 203.0.113.1
set transform-set AES256-SHA
match address 101
避坑指南:我曾经在配置两端设备时,把预共享密钥写成了“cisco123”和“Cisco123”——大小写不一致,结果排错排了整整两个小时。记住,预共享密钥是大小写敏感的!
配置完成后,记得用display ike sa(华为)或show crypto isakmp sa(思科)检查IKE阶段1是否建立成功。如果状态是“RD”或“QM_IDLE”,恭喜你,隧道通了。
3.3 动态路由协议(BGP)在VPN中的应用:让网络自己“认路”
站点到站点VPN建好了,但问题来了——如果我有三个分支、两个总部,难道每条链路都要手动配静态路由?那网络拓扑一变,你就得改配置改到哭。
这时候就该BGP上场了。BGP在VPN中的应用,我把它分为两种场景:
- MPLS VPN中的BGP:运营商级别的玩法,用BGP传递VPNv4路由,配合MPLS标签转发。这个比较复杂,咱们后面章节再细聊。
- 普通IPsec VPN中的BGP:直接在IPsec隧道上跑BGP,让两端设备自动交换路由。
说白了,就是在IPsec隧道接口上启用BGP,把隧道当成一条物理链路来用。配置起来很简单:
# 华为设备配置BGP over IPsec
interface Tunnel0/0/0
ip address 10.255.255.1 255.255.255.252
tunnel-protocol ipsec
source GigabitEthernet0/0/0
destination 203.0.113.1
bgp 65001
peer 10.255.255.2 as-number 65002
network 192.168.1.0 255.255.255.0
注意:BGP over IPsec有一个坑——BGP的Keepalive报文如果因为IPsec隧道抖动而丢失,会导致BGP邻居频繁震荡。我建议把BGP的Hold Time调大一些,比如从默认的180秒改成300秒,给IPsec重协商留出缓冲时间。
为什么要用BGP而不是OSPF?原因有三:
- BGP更稳定:OSPF对链路抖动敏感,IPsec隧道一旦重协商,OSPF就会重新计算SPF树。
- BGP支持策略控制:你可以用Route-Map精确控制哪些路由能通过VPN传播。
- BGP适合大规模组网:分支多了,OSPF的LSA泛洪会压垮设备CPU,BGP的增量更新就优雅得多。
我记得有一次帮客户做跨国组网,三个国家的分支通过IPsec VPN连到总部。一开始用的OSPF,结果每次IPsec重协商,全网路由都要震荡一遍。后来改成BGP,世界清净了。
3.4 实战经验总结:三个“一定”
| 场景 | 建议 | 原因 |
|---|---|---|
| IPsec配置 | 一定要用AES-256 + SHA256 | 3DES和MD5已经不安全了,等保测评过不去 |
| NAT穿透 | 一定要开启NAT-T | 两端设备如果都在NAT后面,不加NAT-T隧道建不起来 |
| 路由协议 | 一定要用BGP | 静态路由维护成本高,OSPF不稳定,BGP是正解 |
最后说一句:IPsec VPN + BGP的组合,是企业多云互联的“黄金搭档”。你想想看,云上VPC、本地数据中心、分支办公室,全都能通过BGP自动交换路由,IPsec负责加密传输。这套方案我用了五年,稳得很。
下一章咱们聊聊SD-WAN——说白了就是给IPsec VPN加了个“智能大脑”,让流量自动选择最优路径。到时候你会发现,原来网络也可以这么“聪明”。