在 Linux 中,当涉及到基于路由的 IPsec 隧道时,它非常简单。安装主要的 ipsec 实现之一。建立安全关联,在每个端点上添加 VTI 接口,向 VTI 添加标记,更改一些 sysctl opts,然后您就可以在两个端点之间路由流量。
在执行基于策略的路由时,如何路由流量?到目前为止,我遇到的所有教程都只提到如何设置 ipsec 连接,但没有一个真正解释如何在两个端点之间路由流量或此过程需要哪些额外步骤。我是否要创建隧道?我是否必须标记它?添加路由?如果是这样,那么这与基于路由的设置有何不同?
有人可以解释一下这一点吗?
答案1
“通常,IPsec 处理基于策略。完成常规路由查找后,操作系统内核将查询其安全策略数据库以查找匹配的策略,如果找到与 IPsec SA 关联的策略,则处理该数据包。
根据操作系统,还可以配置基于路由的 VPN。此处 IPsec 处理不(仅)依赖于协商的策略,但可能通过将数据包路由到特定接口来控制。
来源:基于路由的VPN
因此,基于策略的路由与操作系统的路由表无关,但它使用单独的“数据库”,因此ip route
这里不涉及这些内容。您可以使用 IPSec 配置设置这些策略。IPSec 可以自行进行隧道传输。
ip route
以下是我的输出swanctl --list-sas
(我正在使用swanctl配置和控制斯特朗斯旺):
如您所见,我的托管服务器 sv1 (37.17.xx) 和我的家庭路由器 (87.97.xx) 之间建立了 IPSec 连接。服务器的路由表只有默认设置,但您可以看到名为 和 的 IPSec 策略home-invitel
,home-securewifi
它们分别home-lan
将来自服务器的所有流量路由到家庭 LAN 子网192.168.100.0/24
和。第四个名为 sv1-local 的策略路由我家庭端点192.168.87.0/28
和服务器上的本地子网192.168.88.0/24
之间的流量。10.1.1.0/24
这是我在服务器上使用的 swanctl 配置:
connections {
home {
local_addrs = 37.17.x.x
remote_addrs = vpn.example.org
version = 2
proposals = aes256-sha256-ecp384
keyingtries = 0
dpd_delay = 60s
local1 {
auth = psk
}
remote1 {
auth = psk
}
children {
sv1-local {
local_ts = 10.1.1.0/24
esp_proposals = aes256gcm16-ecp384
dpd_action = restart
close_action = start
start_action = start
}
home-securewifi {
remote_ts = 192.168.87.0/28
esp_proposals = aes256gcm16-ecp384
dpd_action = restart
close_action = start
start_action = start
}
home-lan {
remote_ts = 192.168.88.0/24
esp_proposals = aes256gcm16-ecp384
dpd_action = restart
close_action = start
start_action = start
}
home-invitel {
remote_ts = 192.168.100.0/24
esp_proposals = aes256gcm16-ecp384
dpd_action = restart
close_action = start
start_action = start
}
}
}
}
secrets {
ike-local {
id = 37.17.x.x
secret = "preshared-secret-key-goes-here"
}
ike-remote {
id = vpn.example.org
secret = "preshared-secret-key-goes-here"
}
}
例如,当我从 sv1 ping 到 192.168.88.5 时:
- 操作系统检查路由表,但未发现 192.168.88.5 特定规则
- 然后操作系统检查 IPSec 策略数据库以查找匹配的策略
- 家庭局域网策略匹配,因此操作系统将数据包发送给 IPSec
- IPSec 封装(加密)数据包并通过家庭局域网隧道发送
- 我的家庭路由器接收封装(加密)的数据包,在其自己的 IPSec 策略数据库中找到匹配的策略,解封装(解密)该数据包并将现在未加密的数据包发送到 192.168.88.5
答案2
基于策略的路由的关键是ip rule
和ip route
。创建一个新的路由表,并根据规则将流量放入路由表中。查看Description
相应手册页的部分以了解更多详细信息。