Я пытаюсь установить защищенное соединение 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
Я хотел бы построить соединение IPsec между A и B, которое будет небезопасно перенаправляться между 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 - это небезопасно на всем пути.
Есть идеи, как это решить?
Используя такую конфигурацию, защищен только трафик, адресованный В. Когда я пытаюсь отправить что-то из A в C - он на всем пути незащищён.
Именно так и должно быть. Вы создали Transport Mode IPsec SA между A и B, что означает, что существуют политики 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 должна быть изменена соответствующим образом.
.