libreswan 为 ipsec 流量配置虚拟接口

libreswan 为 ipsec 流量配置虚拟接口

描述:

我正在学习如何使用 libreswan 配置 ipsec。我想在两台主机之间设置主机到主机的 vpn。我希望每台主机都为其 ipsec 隧道使用虚拟接口。

问题:

我使用 RSA 设置了我的 ipsec 配置并启动了隧道,但没有构建虚拟接口。

系统:

(2)RHEL 8.2 虚拟机

我不清楚什么

  • 我如何启动隧道?我知道我运行了ipsec auto --up mytunnel,但是这个命令是否需要同时在两个系统上运行,还是先在右侧系统上运行,然后再在左侧系统上运行?
  • 我的“左”和“右” IP 是在可以相互路由的接口上配置的 IP 地址。这样正确吗?
  • 我觉得我这里缺少了一个步骤,比如配置接口和设置 libreswan 以便可以使用它?

故障排除:

  • 我跟着这些说明关于如何设置 ipsec 隧道。
  • 我用 netstat 确认,似乎所有接口都在监听 500 和 4500。
  • 执行后ip a,我看不到正在创建的虚拟接口。
  • 为了启动隧道,我运行systemctl restart ipsec.service,然后ipsec auto --up mytunnel,最后ipsec auto --up mytunnel,我看到这个输出
181 "mytunnel" #1: initiating IKEv2 IKE SA
181 "mytunnel" #1: STATE_PARENT_I1: sent v2I1, expected v2R1
182 "mytunnel" #2: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=AES_GCM_16_256 integ=n/a prf=HMAC_SHA2_512 group=DH19}
002 "mytunnel" #2: IKEv2 mode peer ID is ID_FQDN: '@west'
003 "mytunnel" #2: Authenticated using RSA with IKEv2_AUTH_HASH_SHA1
002 "mytunnel" #2: negotiated connection [10.10.10.111-10.10.10.112:0-65535 0] -> [10.10.10.111-10.10.10.112:0-65535 0]
004 "mytunnel" #2: STATE_V2_IPSEC_I: IPsec SA established transport mode {ESP=>0xe25ebdee <0x3d8ac123 xfrm=AES_GCM_16_256-NONE NATOA=none NATD=none DPD=passive}

我的 ipsec 配置:

conn mytunnel
    auto=add
    leftid=@west
    left=10.10.10.111
    leftrsasigkey=0sAwEAAbqd ... blqu1K0=
    rightid=@east
    right=10.10.10.112
    rightrsasigkey=0sAwEAAboA ... NEJbLk=
    authby=rsasig

编辑 修复了我的日志输出。

编辑2 我了解到 ipsec 不会自行设置虚拟接口。这需要通过 IPIP、GRE 或其他方法来完成。

  • 是一个关于设置 VPN 路由的不同方法的有用链接。
  • 是关于如何设置 IPIP 的良好链接。

答案1

IPsec 不一定使用虚拟接口。

相反,您有一个 IPsec 策略数据库(setkey -DP显示当前内容),并且这些策略在数据包通过堆栈时应用于它们。

当您不想花费额外的精力分配额外的地址并确保它们与其他用途不冲突时,这很有用。

您所配置的传输模式甚至没有为数据包留出空间来存放附加地址。像您这样的策略规定“从 10.10.10.111 到 10.10.10.112 的任何数据包都需要加密,然后正常路由”,但如果您没有任何使用这些地址的接口,则永远不会生成此类数据包。

我不太清楚为什么日志文件中的地址和配置中的地址不同。

根据日志,您拥有的 IPsec 设置将加密 10.104.8.109 和 10.104.8.108 之间的数据包。如果您从其中一个主机 ping 另一个主机,则 ping 数据包应该被封装,数据包结构为 IP - ESP - ICMP,任何没有密钥的人都只能看到 ESP,而无法分辨其中传输的内部协议是什么。

对于隧道,有两种主要方法:将 IPsec 策略应用于未加密的隧道,以及连接两个无论如何都会通过同一接口路由的网络。

未加密的隧道将使用 GRE 或 IPIP 来创建数据包结构 IP - IP - ICMP,然后加密策略(在传输模式下)将环绕内部 IP 标头以获取 IP - ESP - IP - ICMP。隧道提供 IP 地址绑定到的虚拟接口。

网络链路方法使用隧道模式 IPsec,但仍然不会创建接口。在这里,数据包从内部网络接口到达,并被寻址到不在内部接口上的目的地,因此它们被路由到默认路由。IPsec 策略将整个数据包包装在传输数据包中,传输数据包将其带到另一端,在那里将其解包并正常路由到那里的内部接口。中间的路由器看不到内部地址,因此它们可以处于私有范围内。对于这种方法,也不需要虚拟网络设备,路由器也不需要远程网络的路由条目。

相关内容