Pie*_*ier 3 domain-name-system ipsec mac-osx split-tunneling strongswan
我想为 OSX 台式机和笔记本电脑设置 IPSec 响应器(VPN 服务器)。
一切似乎都工作正常,除了我无法在启动器(VPN 客户端)上推送要在系统范围内使用的 DNS 服务器。
我在 StrongSwan 5.0.4 中使用 Charon 的 IKEv1 支持,带有 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
Run Code Online (Sandbox Code Playgroud)
/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
}
}
}
Run Code Online (Sandbox Code Playgroud)
关于您的配置的一些评论:
您配置的子网split-exclude
无效。应该是
split-exclude = 10.65.36.0/22
Run Code Online (Sandbox Code Playgroud)如果您使用统一插件,您应该配置
leftsubnet=10.0.0.0/8, 172.16.0.23/32
Run Code Online (Sandbox Code Playgroud)
而不是split-include
在strongswan.conf
. 这允许为每个连接分配不同的子网。
同样,可以通过该rightdns
选项为每个连接分配 DNS 服务器。
关于您的主要问题,仅当所有流量都通过 VPN 发送时,Mac OS X才会安装无作用域的 DNS 服务器,也就是说,如果leftsubnet=0.0.0.0/0
已配置并且客户端未收到任何UNITY_SPLIT_INCLUDE
属性。
为了正确解析远程站点的主机名,我建议您通过UNITY_DEF_DOMAIN
属性向客户端发送正确的搜索域,例如:
charon {
plugins {
attr {
28674 = strongswan.org
}
}
}
Run Code Online (Sandbox Code Playgroud)
该属性只需要一个域名。如果需要多个域,则UNITY_SPLITDNS_NAME
可以使用该属性:
charon {
plugins {
attr {
28675 = strongswan.org hsr.ch
}
}
}
Run Code Online (Sandbox Code Playgroud)
它需要按原样发送到客户端的以空格分隔的域名列表(导致客户端上每个域的解析器)。