描述:
我正在学习如何使用 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
编辑 修复了我的日志输出。
EDIT2 我了解到 ipsec 不会自行设置虚拟接口。这需要通过 IPIP、GRE 或其他方法完成。
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 策略将整个数据包包装在一个传输数据包中,将其带到另一端,在那里它被解包并正常路由到那里的内部接口。中间的路由器看不到内部地址,因此它们可以在私有范围内。对于这种方法,也不需要虚拟网络设备,路由器也不需要远程网络的路由条目。