這與這裡是同一個問題:讓 openconnect vpn 透過 GUI 工作,但我添加的內容已被刪除,並且要求我建立一個新問題。
事實上,有很多人在這裡問類似的問題,但都是 0 回覆。
軟體版本:Ubuntu 14.04、開放連線 5.02
主要問題:我正在嘗試使用 openconnect 將 VPN 連線新增至網路管理員。當我提供 VPN 使用者名稱和密碼時,它連接成功,但我無法解析 DNS。
如果我透過 sudo 在終端機中運行 openconnect,則 DNS 可以工作。
sudo openconnect -u <username> https://<vpn concentrator name>
更多細節:
1a.當透過 openconnect 和網路管理員連接時,即使我在 ipv4 標籤下明確地新增了 DNS 和搜尋網域,只有搜尋網域最終出現在 /etc/resolv.conf 中。即使我不提供 DNS 和搜尋網域,我也可以在日誌中看到它從 VPN 集中器獲取該資訊。再次,搜尋網域已正確更新。 [記錄如下]
1b.當在終端機中透過 sudo 連接時,resolv.conf 會正確填充 DNS 和搜尋網域,即使我沒有在命令列中新增該資訊或提供 vpnc 腳本的路徑。它一定是從 VPN 集中器取得的。 [日誌也在下面]
2a.透過 openconnect 和網路管理器連接時,會建立一個新介面「vpn0」。
2b.透過 sudo 和命令列連接時,會建立一個新介面「tun0」。
透過網路管理器連接時記錄:
NetworkManager[784]: <info> Starting VPN service 'openconnect'...
NetworkManager[784]: <info> VPN service 'openconnect' started (org.freedesktop.NetworkManager.openconnect), PID 4513
NetworkManager[784]: <info> VPN service 'openconnect' appeared; activating connections
NetworkManager[784]: <info> VPN plugin state changed: init (1)
這是要求我輸入密碼的地方
NetworkManager[784]: <info> VPN plugin state changed: starting (3)
NetworkManager[784]: SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/vpn0, iface: vpn0)
NetworkManager[784]: SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/vpn0, iface: vpn0): no ifupdown configuration found.
NetworkManager[784]: <warn> /sys/devices/virtual/net/vpn0: couldn't determine device driver; ignoring...
NetworkManager[784]: <info> VPN connection '<connection name>' (Connect) reply received.
openconnect[4544]: Attempting to connect to server <ip address>:443
openconnect[4544]: SSL negotiation with <correctly identified vpn server>
openconnect[4544]: Connected to HTTPS on <correctly identified vpn server>
openconnect[4544]: Got CONNECT response: HTTP/1.1 200 OK
openconnect[4544]: CSTP connected. DPD 30, Keepalive 20
NetworkManager[784]: <info> VPN connection '<connection name>' (IP Config Get) reply received.
NetworkManager[784]: <info> VPN connection '<connection name>' (IP4 Config Get) reply received.
NetworkManager[784]: <info> VPN connection '<connection name>' (IP6 Config Get) reply received.
NetworkManager[784]: <info> VPN Gateway: <ip address>
NetworkManager[784]: <info> Tunnel Device: vpn0
NetworkManager[784]: <info> IPv4 configuration:
NetworkManager[784]: <info> Internal Address: 10.xxx.xxx.xxx
NetworkManager[784]: <info> Internal Prefix: 19
NetworkManager[784]: <info> Internal Point-to-Point Address: 10.xxx.xxx.xxx
NetworkManager[784]: <info> Maximum Segment Size (MSS): 0
NetworkManager[784]: <info> Forbid Default Route: no
NetworkManager[784]: <info> Internal DNS: <ip address>
NetworkManager[784]: <info> Internal DNS: <ip address>
NetworkManager[784]: <info> DNS Domain: '(none)'
NetworkManager[784]: <info> IPv6 configuration:
NetworkManager[784]: <info> Internal Address: <ipv6 ip>
NetworkManager[784]: <info> Internal Prefix: 64
NetworkManager[784]: <info> Internal Point-to-Point Address: <ipv6 ip>
NetworkManager[784]: <info> Maximum Segment Size (MSS): 0
NetworkManager[784]: <info> Forbid Default Route: no
NetworkManager[784]: <info> DNS Domain: '(none)'
openconnect[4544]: Connected vpn0 as <ip address> + <ipv6 ip>, using SSL
openconnect[4544]: Established DTLS connection (using OpenSSL)
NetworkManager[784]: <info> VPN connection '<connection name>' (IP Config Get) complete.
NetworkManager[784]: <info> Policy set '<connection name>' (vpn0) as default for IPv4 routing and DNS.
NetworkManager[784]: <info> Policy set '<connection name>' (vpn0) as default for IPv6 routing and DNS.
NetworkManager[784]: <info> Writing DNS information to /sbin/resolvconf
dnsmasq[1027]: setting upstream servers from DBus
dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain 10.in-addr.arpa
dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain <home search domain>
dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain <vpn search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain 10.in-addr.arpa
dnsmasq[1027]: using nameserver <ip address>#53 for domain <home search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain <vpn search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain 10.in-addr.arpa
dnsmasq[1027]: using nameserver <ip address>#53 for domain <home search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain <vpn search domain>
dbus[471]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper)
NetworkManager[784]: <info> VPN plugin state changed: started (4)
NetworkManager[784]: keyfile: updating /etc/NetworkManager/system-connections/<connection name>-6a503043-13b0-4ce7-9749-29cd3054cae3
dbus[471]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
儘管日誌中存在有關更新 resolv.conf 的所有噪音,但它會刪除名稱伺服器,但不會將其替換為日誌中的 IP 位址。它確實正確更新了搜尋網域,所以很可能不是權限問題。
在終端機中使用 sudo openconnect 連線時記錄:
NetworkManager[784]: SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/tun0, iface: tun0)
NetworkManager[784]: SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/tun0, iface: tun0): no ifupdown configuration found.
NetworkManager[784]: <warn> /sys/devices/virtual/net/tun0: couldn't determine device driver; ignoring...
dbus[471]: [system] Activating service name='org.freedesktop.hostname1' (using servicehelper)
kernel: [ 3258.725774] systemd-hostnamed[4927]: Warning: nss-myhostname is not installed. Changing the local hostname might make it unresolveable. Please install nss-myhostname!
dbus[471]: [system] Successfully activated service 'org.freedesktop.hostname1'
與更新 resolv.conf 無關,但它正確更新了名稱伺服器和搜尋網域。
更新 如果我忽略 resolv.conf 中的所有警告並將 VPN 集中器名稱伺服器新增至其中,我就可以立即進行瀏覽。當然,一旦斷開連接,這些變更就會被覆蓋。
這有一個錯誤,早在2012年,但它已經過期了。問題似乎是 vpnc 腳本。
我嘗試手動將 vpnc 腳本更新到最新版本,但無濟於事。
一些進一步的研究事實證明,從 12.04 開始,resolv.conf 不再是使用網路管理員時名稱伺服器進行 DNS 解析的位置。這就是為什麼它在我使用命令列時有效,但在使用網路管理器時無效。相反,新增了名稱伺服器 127.0.1.1 [dnsmasq],並且該名稱伺服器被告知實際名稱伺服器的 IP 位址。
最大的優點是,如果您連接到 VPN,您將只發送與該 VPN 宣布的子網路和網域相關的 DNS 查詢,而不是像過去那樣透過 VPN 路由所有 DNS 流量。
更新 按照上面連結中的說明停用 dnsmasq 可以解決該問題,因為 /etc/resolv.conf 已填入。
但這不是一個真正的解決方案,而是一個後備方案。
答案1
檢查您嘗試透過 VPN 解析的主機與 Cisco VPN 伺服器傳送的「DNS 網域」之間是否不符。
要檢查這一點,請打開終端並運行:
tail -f /var/log/syslog
然後透過網路管理器啟動openconnect。您將看到一大堆輸出,包括如下所示的一些行:
12 月 5 日 12:54:31 獨木舟 NetworkManager[1266]:內部 DNS:10.0.20.21
12 月 5 日 12:54:31 獨木舟 NetworkManager[1266]:內部 DNS:10.10.3.32
12 月 5 日 12:54:31 獨木舟 NetworkManager[1266]:DNS 網域:'internal.example.com'
再往下你會看到
12 月 5 日 12:54:31 canoe dnsmasq[1871]:使用網域名稱伺服器 10.0.20.21#53 來處理內部.example.com 網域
這表示 VPN 伺服器正在指示客戶端應使用 DNS 伺服器來解析內部主機internal.example.com
,例如server.internal.example.com
.
就我而言,我需要解決server.example.com
(並且沒有得到任何結果)。
我的解決方案是進入 VPN 設定並新增example.com
為附加搜尋網域:
不要忘記斷開 VPN,然後重新連接以使設定生效。
答案2
所以我自己已經夠滿意地解決了這個問題。我使用的是 Mint 18 / Ubuntu 16.04
我的問題是,一旦我透過 NetworkManager 連線到 Openconnect VPN,我就無法再解析工作網域以外的網域的 DNS。即我失去網路了!
我的修復是這樣的:
- 在 NetworkManager 中,我在「網路連線」下編輯了 VPN 連線。
- 在 IPv4 標籤中,將方法變更為“僅自動 (VPN) 位址”
- 新增了我的工作 DNS 伺服器(例如 10.10.10.100)和“mywork.tld”的“搜尋網域”
- 點擊“路線”。
- 新增覆蓋我的工作網路的路由,例如 10.10.0.0 / 255.255.0.0 和網關 10.10.10.253 <-- 我從「traceroute」取得的 VPN 閘道。
- 然後我勾選了兩個選項:i。 “忽略自動選擇的路線” ii. “僅將此連接用於其網路上的資源”
在我的電腦上運作。
我對發生的事情的理解是:
- 我的 /etc/resolv.conf 使用 dnsmasq 設定並指向 127.0.1.1
- dnsmasq 使用我的 ISP 的 DNS 伺服器進行一般互聯網 DNS 解析。例如,ISP DNS 是 8.8.8.8。
- 我連接到 VPN,10.10.10.100 的 DNS 伺服器被新增為 dnsmasq 的附加伺服器,用於「mywork.tld」DNS 解析。
- 一旦我使用 VPN,我的工作防火牆就不再允許我使用連接埠 53 到 8.8.8.8,因此我的常規網路解析度消失了。 DNS 應該會逾時並轉至輔助 DNS 伺服器,但由於某些原因卻沒有逾時?
- 我只能存取“server01.mywork.tld”的 DNS 解析,因為此查詢轉到我可以透過 VPN 存取的 10.10.10.100。
- 如果我查詢 www.google.com 它會失敗,即使我的內部 DNS 可以轉送。我只能假設我的內部 DNS 從未被詢問過。
只要我的工作不改變他們的網路或 DNS 伺服器 IP 位址,我的修復似乎就會繼續有效。
我對此有點模糊,但我認為它對我有用,因為一旦完成此操作,我的無線網路卡就會成為我的預設網路連線。因此 DNS 查詢透過 wifi 轉到 8.8.8.8。 dnsmasq 告訴任何對「xyz.mywork.tld」的查詢要轉到 10.10.10.100。我已經為此設定了一條路由,以便透過「vpn0」NIC 傳回「xyz.mywork.tld」的正確 10.10.10.x IP 位址。 Bingo bango 內部和外部網路的 DNS 解析,每個人都很高興。