我正在尝试设置与网关的 IPSec 安全连接。有三台主机:
A:
eth1 - fec0:1::1/64
B:
eth1 - fec0:1::2/64
eth2 - fec0:2::2/64
which is gateway between A and C; forwarding is set to 1 in sysctl
C:
eth1 - fec0:2:3/64
我想在 A 和 B 之间建立 IPsec 连接,但在 B 和 C 之间转发时会不安全。
ipsec.conf:
config setup
charondebug="ike 2, knl 2, cfg 1"
ca strongswan
cacert=ca.crt
auto=add
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
mobike=no
keyexchange=ikev2
conn host-host
left=fec0:1::1
leftcert=hostA.crt
leftid=@hostA
right=fec0:1::2
rightid=%any
type=transport
auto=add
B 的配置看起来类似。我尝试设置 auto=route,但无法初始化任何连接。
使用此类配置,只有发往 B 的流量是安全的。当我尝试从 A 向 C 发送某些内容时,整个路径都是不安全的。
有什么想法可以解决它吗?
答案1
使用此类配置,只有发往 B 的流量是安全的。当我尝试从 A 向 C 发送某些内容时,整个路径都是不安全的。
确实应该如此。您在 A 和 B 之间建立了传输模式 IPsec SA,这意味着存在仅适用于这两个主机之间流量的 IPsec 策略。如果您想保护 A 和 C 之间的流量(在 A 和 B 之间的路径上),您必须使用隧道模式并配置适当的流量选择器/策略。
添加附加连接:
conn host-c
also=host-host
rightsubnet=fec0:2:3/128
type=tunnel
或者更改现有的连接:
conn host-host # or host-hosts
left=fec0:1::1
leftcert=hostA.crt
leftid=@hostA
right=fec0:1::2
rightid=%any
rightsubnet=fec0:1::2/128,fec0:2:3/128
type=tunnel
auto=add
B 上的配置也必须做相应的改变。