我想为 OSX 台式机和笔记本电脑设置一个 IPSec 响应器(VPN 服务器)。
一切似乎都运行良好,除了我无法推送 DNS 服务器到启动器(VPN 客户端)上供全系统使用。
我在 StrongSwan 5.0.4 中使用 Charon 的 IKEv1 支持,带有 Unity 扩展,并且使用网络偏好设置中的“Cisco VPN”以图形方式配置 OSX 机器。
我确实尝试过改变客户端上的服务顺序,将 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
}
}
}
答案1
关于您的配置的几点评论:
您配置的子网
split-exclude
无效。应该split-exclude = 10.65.36.0/22
如果你使用unity 插件你应该配置
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
}
}
}
它采用空格分隔的域名列表,并将其按原样发送给客户端(从而为客户端上的每个域生成一个解析器)。