Я хочу настроить ответчик IPSec (сервер VPN) для настольных компьютеров и ноутбуков OSX.
Кажется, все работает нормально, за исключением того, что я не могу принудительно использовать DNS-сервер для всей системы на инициаторе (VPN-клиенте).
Я использую поддержку IKEv1 Charon в StrongSwan 5.0.4 с расширениями Unity, а машины OSX настраиваются графически с помощью «Cisco VPN» в сетевых настройках.
Я попытался изменить порядок обслуживания на клиенте, чтобы VPN был наверху, но это не помогло.
В scutils --dns
, преобразователь отображается только как resolver #1
в DNS configuration (for scoped queries)
раздел, а не в первом разделе DNS configuration
.
Вот соответствующие файлы конфигурации:
/etc/ipsec.conf:
conn %default
ikelifetime=24h
keylife=1h
rekeymargin=10m
keyingtries=3
keyexchange=ikev1
left=%defaultroute
auto=add
conn main
leftfirewall=yes
leftsubnet=0.0.0.0/0
leftauth=psk
right=%any
rightauth=psk
rightauth2=xauth-pam
rightsourceip=172.17.0.0/22
/etc/strongswan.conf:
charon {
threads = 16
cisco_unity = yes
plugins {
attr {
dns = 172.16.0.23
split-include = 10.0.0.0/8, 172.16.0.23/32
split-exclude = 10.65.36/22
}
xauth-pam {
pam_service = ipsec
}
}
}
Пара комментариев к вашему конфигу:
Подсеть, для которой вы настроили split-exclude
является недействительным. Вероятно, это должно быть
split-exclude = 10.65.36.0/22
Если вы используете плагин единства вы должны настроить
leftsubnet=10.0.0.0/8, 172.16.0.23/32
вместо того split-include
в strongswan.conf
. Это позволяет назначать разные подсети для каждого соединения.
Точно так же DNS-серверы могут быть назначены для каждого соединения через rightdns
вариант.
Что касается вашего основного вопроса, Mac OS X устанавливает DNS-серверы без ограничения только если весь трафик отправляется через VPN, то есть если leftsubnet=0.0.0.0/0
настроен, и клиент не получает никаких UNITY_SPLIT_INCLUDE
атрибуты.
Чтобы правильно разрешить имена хостов на вашем удаленном сайте, я предлагаю вам отправить клиенту правильный домен поиска через UNITY_DEF_DOMAIN
атрибут, например:
charon {
plugins {
attr {
28674 = strongswan.org
}
}
}
Этот атрибут принимает только одно доменное имя. Если требуется несколько доменов, UNITY_SPLITDNS_NAME
атрибут можно использовать:
charon {
plugins {
attr {
28675 = strongswan.org hsr.ch
}
}
}
Он принимает список доменных имен, разделенных пробелами, который отправляется клиенту как есть (в результате получается преобразователь для каждого домена на клиенте).