Linux 主机上的传入 IPSec 流量不会通过使用 XFRM 规则的 VTI 隧道进行处理

Linux 主机上的传入 IPSec 流量不会通过使用 XFRM 规则的 VTI 隧道进行处理

我有以下设置:

远程 IPSec VPN 网关:81.xxx
本地机器地址:172.22.1.156
VPN 分配的 IP:10.0.30.97

VTI 隧道接口:

vti0: ip/ip remote 81.x.x.x local 172.22.1.156 ttl inherit nopmtudisc key 1000
inet 10.0.30.97/22 scope global vti0

路由到远程子网 10.xxx:

10.0.0.0/8 dev vti0 scope link 
10.0.28.0/22 dev vti0 proto kernel scope link src 10.0.30.97 

XFRM 状态:

src 81.x.x.x dst 172.22.1.156
        proto esp spi 0xxxxxxxxx reqid 0 mode tunnel
        replay-window 0 
        auth-trunc hmac(sha256) 0xxxxx 128
        enc cbc(aes) 0xxxxx
        encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
        anti-replay context: seq 0x0, oseq 0x0, bitmap 0x00000000
        sel src 0.0.0.0/0 dst 0.0.0.0/0 
src 172.22.1.156 dst 81.x.x.x
        proto esp spi 0xxxxxxxxx reqid 0 mode tunnel
        replay-window 0 
        auth-trunc hmac(sha256) 0xxxxxxxxx 128
        enc cbc(aes) 0xxxxxxxxx
        encap type espinudp sport 4500 dport 4500 addr 0.0.0.0
        anti-replay context: seq 0x0, oseq 0x26, bitmap 0x00000000
        sel src 0.0.0.0/0 dst 0.0.0.0/0 

XFRM 政策:

src 0.0.0.0/0 dst 0.0.0.0/0 
        dir in priority 0 ptype main 
        mark 0x3e8/0xffffffff 
        tmpl src 81.x.x.x dst 172.22.1.156
                proto esp reqid 0 mode tunnel
src 0.0.0.0/0 dst 0.0.0.0/0 
        dir out priority 0 ptype main 
        mark 0x3e8/0xffffffff 
        tmpl src 172.22.1.156 dst 81.x.x.x
                proto esp reqid 0 mode tunnel

使用此设置时,传入 IPSec 流量路由存在问题。根据 wireshark 日志,数据包在两个方向上都正确传输,例如,我可以 ping 10.xxx 子网上的远程主机,并且会返回加密的 ESP 回复(包含 ICMP 封装数据),但它从未在 VTI 隧道上进行处理并转发到 172.22.1.156。解密和身份验证密钥设置正确,可以在 wireshark 中解密传入的 ESP 数据包。是否缺少任何其他策略或路由?

答案1

回答我自己的问题:

仅当在端口 4500 上有一个监听 UDP 套接字并且UDP_ENCAP套接字选项设置为 时,自动 UDP IPSec 解封装才在 Linux 上有效UDP_ENCAP_ESPINUDP

相关内容