Сервер живёт на реальном IP=ххх.ххх.ххх.ххх , внутренний интерфейс 10.10.122.4 на котором сеть 10.10.122.0/24, на сервере установлены ipsec-tools-0.7.3.
Модем на динамическом, но также реальном IP, интернет подключен через СТРИМ, внутренняя сеть 10.10.133.0/24, внутренний фейс модема 10.10.133.4 (на модеме 4 Lan порта и WiFi, поднят dhcp, маршрутизация статическая).
Генерим самоподписные сертификаты для сервера и модема приведёнными ниже скриптами.
Серверный сертификат:
server$ cat ./gencrt_bsd.sh |
Сертификат для модема:
server$ cat ./gencrt_adsl.sh |
В настройках модема:
1. Идём в раздел Advanced Setup->Certificate->Trusted CA, жмём Import Certificate и через copy/paste добавляем публичный сертификат сервера (server.test.ru.public).
У меня он называется "server.test.ru".
2. В разделе Advanced Setup->Certificate->Local, говорим Import Certificate и добавляем сертификаты модема (публичный и приватный - adsl.test.ru.public/adsl.test.ru.private), называем "adsl".
3. В разделе Advanced Setup->IPsec, создаём подключение: Add New Connection,
где выставляем
IPSec Connection Name = myconnection,
Remote IPSec Gateway Address (IP or Domain Name) = ххх.ххх.ххх.ххх,
Tunnel access from local IP addresses = subnet,
IP Address for VPN = 10.10.133.4,
IP Subnetmask = 255.255.255.0,
Tunnel access from remote IP addresse = subnet,
IP Address for VPN = 10.10.122.4,
IP Subnetmask = 255.255.255.0,
Key Exchange Method = auto(ike),
Authentication Method = certificate(x.509),
certificates = adsl,
Perfect Forward Secrecy = enable,
Advanced IKE Settings
Phase 1
Mode = aggressive,
Encryption Algorithm = 3des,
Integrity Algorithm = sha1,
Select Diffie-Hellman Group for Key Exchange = 1024bit,
Key Life Time = 3600seconds,
Phase 2
Encryption Algorithm = 3des,
Integrity Algorithm = sha1,
Select Diffie-Hellman Group for Key Exchange = 1024bit,
Key Life Time = 3600seconds
Жмакаем Save/Apply и на свежесозданном подключении ставим галку Enable.
Для тестирования и отладки, разделе Management->System Log можно выставить уровень debug. Логи очень информативны и помогут разобраться в проблемах подключения.
Теперь настройки сервера:
Публичные и приватные сертификаты сервера, а также публичный ключ модема кладём в /usr/local/etc/racoon/cert и выставляем корректные права:
server$ ls -AlFGo /usr/local/etc/racoon |
Дальше правим /usr/local/etc/racoon/racoon.conf
server$ cat /usr/local/etc/racoon/racoon.conf path include "/usr/local/etc/racoon"; path certificate "/usr/local/etc/racoon/cert"; log debug2; #log info; padding {
# if no listen directive is specified, racoon will listen on all # available interface addresses. listen { isakmp xxx.xxx.xxx.xxx [500]; } # Specify various default timers. timer { # These value can be changed per remote node.
remote anonymous {
certificate_type x509 "server.test.ru.public" "server.test.ru.private"; peers_certfile x509 "adsl.test.ru.public"; # конфигурация параметров предложения первой фазы proposal {
} # конфигурация параметров предложения второй фазы sainfo anonymous {
|
Теперь правим /etc/rc.conf:
server$ echo "ipsec_enable="YES" >> /etc/rc.conf |
Если нет, то смотрим настройки файерволла на сервере - должен пропускаться udp на 500 порт (isakmp) а также протокол esp.
Я использую pf, правила такие:
pass in on $ext_if proto udp from any to $ext_ip port {isakmp}
pass in on $ext_if proto esp from any to $ext_ip
При описанной схеме подключения, FreeBSD кидает пакеты в туннель без указаний маршрутов и настройки политик в /etc/ipsec.conf. Модем также не нуждается в прописывании дополнительных маршрутов. (Но если вы например планируете использовать для аутентификации на модеме, radius сервер находящийся в сети по ту сторону туннеля, то маршрут прописать всё таки придётся - указывать он должен на внутренний интерфейс модема -10.10.133.4)
Воспроизведение, перепечатка или распространение иным образом материалов данной статьи возможно только с указанием автора и гиперссылки на данную страницу.