PFSense - дистрибутив основанный на FreeBSD очень удобен при потребности быстрого разворачивания сетей. Все настраивается через вебинтерфейс, работает стабильно, функций имеет довольно много. При наличии сети филиалов которая разрастается довольно быстро, оправданно его использование.
Шлюз основной сети можно поднять на FreeBSD поскольку сдесь может понадобится более гибкая управляемость, а на остальных офисах ставить PFSense и обьединить все посредством IPsec.
Сначала настройка FreeBSD (Версия 9.0)
Для поддержки IPsec компилируем ядро со следующими опциями:
options IPSEC
options IPSEC_NAT_T
device crypto
Также должно быть включено устройство:
device gif
#(В GENERIC оно включено по умолчанию, но не будет лишним проверить)
После компиляции устанавливаем IPsec:
cd /usr/ports/security/ipsec-tools/
make config
Включаем следующие опции:
make install clean
Если все успешно установилось создаем папку /usr/local/etc/racoon и в ней создаем три конфигурационных файла:
racoon.conf
spd.conf
psk.txt
В файле psk.txt будут храниться ключи, поэтому ограничиваем к нему доступ
chown root:wheel psk.txt
chmod 600 psk.txt
В racoon.conf записываем конфигурацию:
path pre_shared_key "/usr/local/etc/racoon/psk.txt"; #путь к нашему файлу с ключами
log debug2; # уровень логирования
path certificate "/usr/local/etc/racoon"; # путь к сертификатам, для нас необязателен
listen
{
adminsock "/var/db/racoon/racoon.sock" "root" "wheel" 0660;
isakmp 8.8.8.8 [500]; #адресс внешнего интерфейса с тунелем
isakmp_natt 8.8.8.8 [4500]; #
}
remote 9.9.9.9 # адресс и далее секция с опциями удаленной стороны
{
ph1id 1;
exchange_mode aggressive;
my_identifier address 8.8.8.8; # наш внешний адресс
peers_identifier address 9.9.9.9; # адресс удаленного сервера
ike_frag on;
generate_policy = off;
initial_contact = on;
nat_traversal = off;
support_proxy on;
proposal_check claim;
proposal # аутентификация и шифрование
{
authentication_method pre_shared_key;
encryption_algorithm 3des;
hash_algorithm md5;
dh_group 1;
lifetime time 28800 secs;
}
}
sainfo subnet 1.1.1.1/24 any subnet 2.2.2.2/24 any #внутренние подсети 1 наша 2 удаленная
{
remoteid 1;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
lifetime time 28800 secs;
compression_algorithm deflate;
}
#И так повторяем для кажого соединения начиная с опции remote
Теперь файл spd.conf
flush;
spdflush;
spdadd 1.1.1.1/32 1.1.1.1/32 any -P in none;
spdadd 1.1.1.1/32 1.1.1.1/32 any -P out none;
#следующие две строки нужно добавлять для кажого соединения
#с соответвущими адрессами
spdadd 1.1.1.0/24 2.2.2.0/24 any -P out ipsec esp/tunnel/8.8.8.8-9.9.9.9/unique;
spdadd 2.2.2.0/24 1.1.1.0/24 any -P in ipsec esp/tunnel/9.9.9.9-8.8.8.8/unique;
Далее нуждо создать интерфейс для тунеля, для этого добавляем в rc.conf
gif_interfaces="gif0"
gifconfig_gif0="8.8.8.8 9.9.9.9"
ifconfig_gif0="inet 1.1.1.1 2.2.2.2 netmask 255.255.255.0"
#Включаем IPSec
ipsec_enable="YES"
ipsec_program="/usr/local/sbin/setkey"
ipsec_file="/usr/local/etc/racoon/spd.conf"
racoon_enable="YES"
racoon_flags="-f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log" #Для логов
#добавляем маршрут
static_routes="remote"
route_remote="2.2.2.0 2.2.2.1 255.255.255.0"
На основном сервере все работает.
Настройка PFSense.
В секции VPN выбираем IPsec и создаем новое подключение с такими же настройками как на FreeBSD:
Рис.2
Добавляем фазу 2
Рис.3
Ставим галочку Enable IPsec и все готово.
Конечно не забываем добавить правила для фаерволлов обеих сторон, в соответствии со своими нуждами.
Дополнение.
Шлюз основной сети можно поднять на FreeBSD поскольку сдесь может понадобится более гибкая управляемость, а на остальных офисах ставить PFSense и обьединить все посредством IPsec.
Сначала настройка FreeBSD (Версия 9.0)
Для поддержки IPsec компилируем ядро со следующими опциями:
options IPSEC
options IPSEC_NAT_T
device crypto
Также должно быть включено устройство:
device gif
#(В GENERIC оно включено по умолчанию, но не будет лишним проверить)
После компиляции устанавливаем IPsec:
cd /usr/ports/security/ipsec-tools/
make config
Включаем следующие опции:
make install clean
Если все успешно установилось создаем папку /usr/local/etc/racoon и в ней создаем три конфигурационных файла:
racoon.conf
spd.conf
psk.txt
В файле psk.txt будут храниться ключи, поэтому ограничиваем к нему доступ
chown root:wheel psk.txt
chmod 600 psk.txt
В racoon.conf записываем конфигурацию:
path pre_shared_key "/usr/local/etc/racoon/psk.txt"; #путь к нашему файлу с ключами
log debug2; # уровень логирования
path certificate "/usr/local/etc/racoon"; # путь к сертификатам, для нас необязателен
listen
{
adminsock "/var/db/racoon/racoon.sock" "root" "wheel" 0660;
isakmp 8.8.8.8 [500]; #адресс внешнего интерфейса с тунелем
isakmp_natt 8.8.8.8 [4500]; #
}
remote 9.9.9.9 # адресс и далее секция с опциями удаленной стороны
{
ph1id 1;
exchange_mode aggressive;
my_identifier address 8.8.8.8; # наш внешний адресс
peers_identifier address 9.9.9.9; # адресс удаленного сервера
ike_frag on;
generate_policy = off;
initial_contact = on;
nat_traversal = off;
support_proxy on;
proposal_check claim;
proposal # аутентификация и шифрование
{
authentication_method pre_shared_key;
encryption_algorithm 3des;
hash_algorithm md5;
dh_group 1;
lifetime time 28800 secs;
}
}
sainfo subnet 1.1.1.1/24 any subnet 2.2.2.2/24 any #внутренние подсети 1 наша 2 удаленная
{
remoteid 1;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
lifetime time 28800 secs;
compression_algorithm deflate;
}
#И так повторяем для кажого соединения начиная с опции remote
Теперь файл spd.conf
flush;
spdflush;
spdadd 1.1.1.1/32 1.1.1.1/32 any -P in none;
spdadd 1.1.1.1/32 1.1.1.1/32 any -P out none;
#следующие две строки нужно добавлять для кажого соединения
#с соответвущими адрессами
spdadd 1.1.1.0/24 2.2.2.0/24 any -P out ipsec esp/tunnel/8.8.8.8-9.9.9.9/unique;
spdadd 2.2.2.0/24 1.1.1.0/24 any -P in ipsec esp/tunnel/9.9.9.9-8.8.8.8/unique;
Далее нуждо создать интерфейс для тунеля, для этого добавляем в rc.conf
gif_interfaces="gif0"
gifconfig_gif0="8.8.8.8 9.9.9.9"
ifconfig_gif0="inet 1.1.1.1 2.2.2.2 netmask 255.255.255.0"
#Включаем IPSec
ipsec_enable="YES"
ipsec_program="/usr/local/sbin/setkey"
ipsec_file="/usr/local/etc/racoon/spd.conf"
racoon_enable="YES"
racoon_flags="-f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log" #Для логов
#добавляем маршрут
static_routes="remote"
route_remote="2.2.2.0 2.2.2.1 255.255.255.0"
в файл psk.txt записываем адресс удаленного сервера и секретный ключ
9.9.9.9 psk@key
Теперь можно стартовать сервис для этого достаточно перегрузиться или же набираем ряд следующих комманд:
/etc/netstart
setkey –P –f /usr/local/etc/racoon/setkey.conf
route add 2.2.2.0 2.2.2.1 255.255.255.0
/usr/local/etc/rc.d/racoon start
На основном сервере все работает.
Настройка PFSense.
В секции VPN выбираем IPsec и создаем новое подключение с такими же настройками как на FreeBSD:
Рис.2
Добавляем фазу 2
Рис.3
Ставим галочку Enable IPsec и все готово.
Конечно не забываем добавить правила для фаерволлов обеих сторон, в соответствии со своими нуждами.
Дополнение.
Появился шлюз на CISСO RV042G Gigabit Dual WAN VPN Router. С ним туннель поднялся тоже довольно легко, не сервере ничего не пришлось править, только создать новое подключение по примеру выше но без gif.
Ну и настройки на роутере:
Тип - Gateway To Gateway
сохраняем. Жмем Connect и через пару минут ожидания все готово.