Как оказалось, в pfSense при настройке IPSec в транспортном режиме нельзя указать какой именно протокол будем шифровать, он шифрует все. Это не так уже и плохо, с MikroTik и strongswan с ним работают, если на второй стороне указан только GRE, но в случаи с racoon никак. Только на стороне racoon так же прописывать any, но это нам не подходит - нам же только GRE необходимо криптовать.
Мой костыль заключается в том, чтобы в конфиг файле /var/etc/ipsec/ipsec.conf дописать нужный нам протокол. Кстати, в документации по strongswan, который используется в pfSense, так и сказано, что необходимо дописывать протокол в полях rightsubnet и leftsubnet. Почему этого не сделали в интерфейсе pfSense - загадка. Хочу отметить, что редактировать файл ipsec.conf бесполезно - он каждый раз перезаписывается при любых изменениях в IPSec. Поэтому, мы будет править файл отвечающий за генерацию самого конфига IPSec, и он расположен в /etc/inc/vpn.inc. Данный файл на самом деле код написанный на PHP.
В файле ищем единственное вхождение слова "transport", вот пример блока с pfSense 2.4.4:
} else {
$tunneltype = "type = transport";
$installpolicy = "installpolicy = yes";
if ((($ph1ent['authentication_method'] == "xauth_psk_server") ||
($ph1ent['authentication_method'] == "pre_shared_key")) &&
isset($ph1ent['mobile'])) {
$left_spec = "%any";
} else {
$tmpsubnet = ipsec_get_phase1_src($ph1ent);
$leftsubnet_spec[] = $tmpsubnet;
}
if (!isset($ph2ent['mobile'])) {
$rightsubnet_spec[] = $right_spec;
}
}
К $leftsubnet_spec[] = $tmpsubnet; и $rightsubnet_spec[] = $right_spec; перед точкой с запятой дописываем ."[gre]". В итоге наш код выглядит так:
} else {
$tunneltype = "type = transport";
$installpolicy = "installpolicy = yes";
if ((($ph1ent['authentication_method'] == "xauth_psk_server") ||
($ph1ent['authentication_method'] == "pre_shared_key")) &&
isset($ph1ent['mobile'])) {
$left_spec = "%any";
} else {
$tmpsubnet = ipsec_get_phase1_src($ph1ent);
$leftsubnet_spec[] = $tmpsubnet."[gre]";
}
if (!isset($ph2ent['mobile'])) {
$rightsubnet_spec[] = $right_spec."[gre]";
}
}
Данный костыль заставит всегда дописывать GRE, если выбрал транспортный режим! Другие протоколы в транспортном режиме не будут шифроваться!
Файл vpn.inc перезаписывается после каждого обновления pfSense - необходимо будет заново внести изменения!
Комментариев нет:
Отправить комментарий