Domain-Name-System
strongswan 無法將 DNS 解析器推送到 OSX Mountain Lion(拆分隧道)
我想為 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
/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-include
在strongswan.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 } } }
它採用空格分隔的域名列表,按原樣發送給客戶端(導致客戶端上每個域的解析器)。