strongswan 无法将 DNS 解析器推送至 OSX Mountain Lion(拆分隧道)

strongswan 无法将 DNS 解析器推送至 OSX Mountain Lion(拆分隧道)

我想为 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-includestrongswan.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
        }
    }
}

它采用空格分隔的域名列表,并将其按原样发送给客户端(从而为客户端上的每个域生成一个解析器)。

相关内容