在 Linux 中,当谈到基于路由的 IPsec 隧道时,它非常简单。安装主要的 ipsec 实现之一。建立安全关联,在每个端点上添加 VTI 接口,向 VTI 添加标记,更改一些 sysctl 选项,然后您可以在两个端点之间路由流量。
在进行基于策略的路由时如何路由流量?到目前为止,我遇到的所有教程都只提到如何设置 ipsec 连接,但没有一个真正解释如何在两个端点之间路由流量或此过程需要哪些额外步骤。我要创建一条隧道吗?我必须标记它吗?添加路线?如果是这样,那么这与基于路由的设置有什么不同?
有人可以解释一下吗?
“一般来说,IPsec 处理基于策略。定期路由查找完成后,操作系统内核会查阅其安全策略数据库以查找匹配的策略,如果发现与 IPsec SA 关联的策略,则会处理数据包。
根据操作系统的不同,还可以配置基于路由的 VPN。这里 IPsec 处理不(仅)依赖于协商策略,而是可以通过将数据包路由到特定接口来控制。”
因此,基于策略的路由与操作系统的路由表无关,但它使用单独的“数据库”,因此ip route此处不适用。您可以使用 IPSec 配置来设置这些策略。IPSec 可以自行完成隧道传输。
ip route这是我的和的输出swanctl --list-sas(我使用swanctl来配置和控制Strongswan):
正如您所看到的,我的托管服务器 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/28192.168.88.0/2410.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"
}
}
Run Code Online (Sandbox Code Playgroud)
例如,当我从 sv1 ping 到 192.168.88.5 时:
| 归档时间: |
|
| 查看次数: |
6430 次 |
| 最近记录: |