strongswan无法将DNSparsing器推送到OSX Mountain Lion(split tunnel)

我想为OSX台式机和笔记本电脑build立一个IPSec应答器(VPN服务器)。

似乎一切工作正常,除了我不能推动一个DNS服务器在发起者(VPN客户端)系统范围内使用。

我在StrongSwan 5.0.4中使用Charon的IKEv1支持,使用Unity扩展,OSX机器使用networking偏好设置中的“Cisco VPN”进行graphics化configuration。

我曾尝试改变客户端上的服务订单,将VPN放置在顶部,但这并没有帮助。

scutils --dns ,parsing器仅在DNS configuration (for scoped queries)部分中显示为resolver #1 ,而不在第一部分DNS configuration

这里是相关的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 } } } 

几个关于你的configuration的评论:

  • 您为split-excludeconfiguration的子网无效。 它应该可能是

     split-exclude = 10.65.36.0/22 
  • 如果你使用统一插件,你应该configuration

     leftsubnet=10.0.0.0/8, 172.16.0.23/32 

    而不是在strongswan.conf split-include strongswan.conf 。 这允许为每个连接分配不同的子网。

  • 同样,可以通过rightdns选项为每个连接分配DNS服务器。

关于您的主要问题,Mac OS X 只有在所有stream量都通过VPN发送的情况下才安装DNS服务器,也就是说,如果configuration了leftsubnet=0.0.0.0/0且客户端没有收到任何UNITY_SPLIT_INCLUDE属性。

为了正确parsing远程站点的主机名,我build议您通过UNITY_DEF_DOMAIN属性将正确的search域发送给客户端,例如:

 charon { plugins { attr { 28674 = strongswan.org } } } 

这个属性只需要一个域名。 如果需要多个域,则可以使用UNITY_SPLITDNS_NAME属性:

 charon { plugins { attr { 28675 = strongswan.org hsr.ch } } } 

它将按原样发送到客户端的空格分隔的域名列表(导致客户端上的每个域的parsing程序)。