Domain-Name-System

strongswan 無法將 DNS 解析器推送到 OSX Mountain Lion(拆分隧道)

  • May 14, 2018

我想為 OSX 台式機和筆記型電腦設置一個 IPSec 響應器(VPN 伺服器)。

一切似乎都工作正常,除了我無法在啟動器(VPN 客戶端)上推送要在系統範圍內使用的 DNS 伺服器。

我在 StrongSwan 5.0.4 中使用 Charon 的 IKEv1 支持,帶有 Unity 擴展,並且 OSX 機器是使用網路首選項中的“Cisco VPN”以圖形方式配置的。

我確實嘗試更改客戶端上的服務順序以將 VPN 置於頂部,但這並沒有幫助。

scutils --dns中,解析器僅出現resolver #1DNS 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-includestrongswan.conf. 這允許為每個連接分配不同的子網。

  • 同樣,可以通過該rightdns選項為每個連接分配 DNS 伺服器。

關於您的主要問題,Mac OS X僅在所有流量都通過 VPN 發送的情況下安裝無範圍的 DNS 伺服器,也就是說,如果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
       }
   }
}

它採用空格分隔的域名列表,按原樣發送給客戶端(導致客戶端上每個域的解析器)。

引用自:https://serverfault.com/questions/521536